> ## Documentation Index
> Fetch the complete documentation index at: https://clickflare.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Outbrain as a Traffic Source

> Track Outbrain campaigns in ClickFlare: pass click data with the Outbrain template and send conversions and revenue back with the S2S postback.

![Outbrain traffic source template](https://mintcdn.com/clickflare/oNlhH4HxR5JFsOiP/images/integrations/covers/templates/outbrain.png?fit=max\&auto=format\&n=oNlhH4HxR5JFsOiP\&q=85\&s=70e345a0f27a7a67213ffdd31467838e)

Outbrain is a native advertising platform. It shows your ads as recommendations on premium publisher sites, below and beside articles. Outbrain is now part of Teads. This guide sets up Outbrain as a traffic source in ClickFlare. It covers passing Outbrain's click data into your reports and sending conversions, with revenue, back to Outbrain so its bidding and your stats agree.

You do everything from the **campaign editor**. The Outbrain traffic source is created inline, without leaving the campaign.

## At a glance

| | |
| - | - |
| **Ad formats** | Native ads (content recommendations) on publisher sites |
| **Click ID macro** | `ob_click_id` in double curly braces, mandatory for conversion tracking |
| **Conversion tracking** | S2S postback to `tr.outbrain.com` |
| **Payout passed back** | Yes, in the `orderValue` parameter, with the currency in `currency` |
| **Multiple events** | Yes, one postback per Outbrain event-based conversion |
| **Cost** | Not passed by the template. Use the Outbrain cost integration, or set a cost model. |
| **Conversion API** | No |

## How it works

**1. Outbrain sends the click**

A visitor clicks your ad. Outbrain opens your ClickFlare campaign URL and fills in its macros: the click ID in `ob_click_id`, plus the publisher, section, ad and other details.

**2. ClickFlare stores the Outbrain click ID**

ClickFlare saves the value of `ob_click_id` as the visit's **External ID** and redirects the visitor to your lander or offer.

**3. The conversion reaches ClickFlare**

Your affiliate network, store or feed posts the conversion back to ClickFlare, matched on the ClickFlare click ID.

**4. ClickFlare posts it back to Outbrain**

ClickFlare fires the Outbrain postback, replacing `{external_id}` with the stored Outbrain click ID, `{payout}` with the revenue and `{payout_currency}` with its currency. Outbrain matches it to the original click and records it under the conversion name you set.

> [!NOTE]
>
> The mirror to keep straight: in the **campaign URL** you write *ClickFlare's* parameter (`ob_click_id`) and *Outbrain's* macro (`ob_click_id` in double curly braces). The template does this for you. In the **postback URL** you write *Outbrain's* parameter (`ob_click_id`) and *ClickFlare's* token (`{external_id}`). Here the parameter has the same name on both sides.

## Before you start

* **Set up your own tracking domain.** Run the campaign and the postback on your own custom domain. Shared domains get flagged by networks and blocked by browsers. See [Custom Domains](/docs/en/settings/custom-domains.md).
* **Have an offer ready in ClickFlare**, and its affiliate network set up to post conversions back to ClickFlare. See [Creating an Offer](/docs/en/tracking/creating-an-offer-1.md) and [Adding an Affiliate Network](/docs/en/tracking/adding-an-affiliate-network.md).
* **Create the event-based conversion in Outbrain first.** You need its exact name for the postback. See [Create the conversion in Outbrain](#create-the-conversion-in-outbrain).
* **Decide which conversions Outbrain should receive.** Outbrain optimizes on what you send it. If your funnel has several steps (lead, then sale), decide now whether to send one event or several. See [Tracking several events](#tracking-several-events).

***

## Step 1 – Create the campaign and the Outbrain traffic source

1. Go to **Campaigns** and click **New**.
2. In **Traffic Source**, open the dropdown and click **+ New Traffic Source**.
3. Type `outbrain` in the search box and select the **Outbrain** template.
4. Enter a **Name**, for example `Outbrain`.
5. Leave **Cost currency** on **USD** unless your Outbrain account is billed in another currency.

The template fills in the **Parameters** table for you. Outbrain writes its macros in double curly braces, so the TS Token for `ob_click_id` is the macro name wrapped in two pairs of braces. The table lists the macro names:

| Name | TS Parameter | Outbrain macro | ClickFlare Token | What it carries |
| - | - | - | - | - |
| Cost | *empty* | *empty* | `{cost}` | Not filled in. See [Cost](#cost). |
| externalId | `ob_click_id` | `ob_click_id` | `{external_id}` | Outbrain's click ID. Required for the postback. |
| Campaign ID | `campaign_id` | `campaign_id` | `{trackingField1}` | The Outbrain campaign ID |
| Publisher ID | `publisher_id` | `publisher_id` | `{trackingField2}` | The ID of the publisher that showed the ad |
| Publisher name | `publisher_name` | `publisher_name` | `{trackingField3}` | The publisher's name |
| Ad ID | `ad_id` | `ad_id` | `{trackingField4}` | The ad (creative) ID |
| Ad title | `ad_title` | `ad_title` | `{trackingField5}` | The ad's headline |
| Referrer section ID | `section_id` | `section_id` | `{trackingField6}` | The publisher section the click came from |
| Referrer section name | `section_name` | `section_name` | `{trackingField7}` | That section's name |
| Request ID | `req_id` | `req_id` | `{trackingField8}` | Outbrain's request ID for the impression |
| External promoted link ID | `promoted_link_id` | `promoted_link_id` | `{trackingField9}` | Outbrain's ID for the promoted link (the ad) |
| Timestamp | `time_stamp` | `time_stamp` | `{trackingField10}` | When the click happened |
| Campaign Name | `camp_name` | `campaign_name` | `{trackingField11}` | The Outbrain campaign name. Note the parameter is `camp_name`. |

![The Outbrain template's Parameters table in ClickFlare, with Outbrain's macros pre-filled](https://mintcdn.com/clickflare/nZP6EuFBEVoKPMxM/images/integrations/templates/outbrain/parameters.png?fit=max\&auto=format\&n=nZP6EuFBEVoKPMxM\&q=85\&s=bbf6cc8936f8ca14a206404f92673c2a)

In the campaign URL, this part looks like:

```text theme={null}
ob_click_id={{ob_click_id}}&campaign_id={{campaign_id}}&publisher_id={{publisher_id}}&publisher_name={{publisher_name}}&ad_id={{ad_id}}&ad_title={{ad_title}}&section_id={{section_id}}&section_name={{section_name}}&req_id={{req_id}}&promoted_link_id={{promoted_link_id}}&time_stamp={{time_stamp}}&camp_name={{campaign_name}}
```

Each tracking field becomes a column you can group reports by. `publisher_name` and `section_name` are the ones you will use most: Outbrain bids and blocks at publisher and section level, so these show you which placements convert. `ad_id` and `ad_title` tell you which creative won.

> [!WARNING]
>
> Don't change or remove the `externalId` row. Without the `ob_click_id` macro in the campaign URL, ClickFlare has no Outbrain click ID to send back, and Outbrain cannot attribute any conversion. Keep the macro exactly as written, braces included.

To pass more Outbrain data, click **Add Parameter**, give it a name and parameter, and enter the Outbrain macro, in double curly braces, as the **TS Token**. ClickFlare assigns the next free tracking field. Outbrain lists its macros in its UTM tracking help. Some of them work only in impression pixels, not in click URLs, so check before adding.

## Step 2 – Set up the postback

The postback is what sends conversions to Outbrain. It lives on the traffic source, so every campaign that uses this Outbrain traffic source sends conversions the same way.

### Create the conversion in Outbrain

1. In Outbrain, click the **Pixels** tab, then **Conversions**.
2. Click **Add Conversion**.
3. Choose **Event-Based Conversion**, not URL-Based Conversion.
4. Enter a unique event name, for example `purchase`. This is the value the postback must send.
5. Set the **Window**, the time from click to conversion that Outbrain counts.
6. Set a **Value**. ClickFlare sends the real revenue with each conversion.
7. Click **Save**.

Outbrain shows a code snippet. You don't need to install it for S2S tracking.

Event names are case-sensitive and must be unique. `Purchase` and `purchase` are two different events to Outbrain.

### Add the postback to the traffic source in ClickFlare

1. Back in the **New Traffic Source** form, scroll to **Passing conversion info to traffic source**.
2. Turn on **Traffic source postback URL**. The template's postback appears:

```text theme={null}
https://tr.outbrain.com/unifiedPixel?ob_click_id={external_id}&name=REPLACE&orderValue={payout}&currency={payout_currency}
```

3. Replace `REPLACE` in the `&name=` parameter with the exact event name from Outbrain. With the event above, the result is:

```text theme={null}
https://tr.outbrain.com/unifiedPixel?ob_click_id={external_id}&name=purchase&orderValue={payout}&currency={payout_currency}
```

4. In the dropdown on the left, choose the ClickFlare event that should fire the postback. Keep **Conversions** to send every conversion. If your final action is a custom conversion (for example `purchase`), choose that instead.
5. Click **Save**. You are back in the campaign editor with the Outbrain traffic source selected.

![The Traffic source postback URL switched on, showing the Outbrain template's postback](https://mintcdn.com/clickflare/nZP6EuFBEVoKPMxM/images/integrations/templates/outbrain/postback.png?fit=max\&auto=format\&n=nZP6EuFBEVoKPMxM\&q=85\&s=5d8aa832d2e3319dce95bddb7dca24c9)

> [!WARNING]
>
> If you leave `REPLACE` in the URL, Outbrain receives a conversion named `REPLACE`. It matches none of your conversions, so nothing shows in Outbrain. The same happens if the name differs by a single character or letter case.

**Currency.** `{payout_currency}` sends the currency of each conversion's payout. If every offer pays in the same currency, you can hardcode it instead, for example `&currency=USD`. See [Multicurrency in ClickFlare](/docs/en/tracking/multicurrency-support-in-click-flare-how-it-works.md).

Outbrain also accepts optional `orderId` and `timestamp` parameters. The template doesn't send them.

To learn what each postback token does, see [How to Configure a Traffic Source S2S Postback URL](/docs/en/tracking/how-to-configure-a-traffic-source-s2s-postback-url.md).

## Step 3 – Finish the campaign and copy its URL

1. Name the campaign.
2. Set the **Cost Model**. See [Cost](#cost).
3. Choose **Redirect** or **Direct** tracking. Redirect is the usual choice.
4. Click **Next** and, on **Destination**, add your lander (optional) and your offer.
5. Save, open **Tracking**, select your own tracking domain and copy the **campaign URL**.

The campaign URL already contains every Outbrain macro from the template.

If you use a lander, its call-to-action must link to the ClickFlare **click URL**, not to the offer directly. Otherwise the visit reaches the offer without a ClickFlare click ID, and the conversion cannot be traced back to Outbrain.

See [Creating a Campaign in ClickFlare](/docs/en/campaigns/creating-a-campaign-in-click-flare.md).

## Step 4 – Create the campaign in Outbrain

Outbrain wants the landing page URL and the tracking parameters in separate fields. Split the ClickFlare campaign URL at the `?`.

1. In Outbrain, create a campaign, or open an existing one with the pencil icon.
2. Enter the part of the campaign URL **before** the `?` as the ad's landing page URL. Don't end it with a `/` and don't add parameters to it.
3. Paste the part **after** the `?`, without the `?` itself, into the campaign's **Tracking** section.
4. Choose targeting, budget and bid as usual, and submit.

Outbrain appends the Tracking section to every ad in the campaign and replaces each double-brace macro when the ad is clicked. Paste the parameters exactly as ClickFlare gives them.

## Step 5 – Test the integration

1. Click your ad, or wait for the first live clicks, and complete the offer the way a real visitor would.
2. In ClickFlare, check the visit. The **External ID** should hold an Outbrain click ID, not the literal macro text.
3. Go to **Logs → Postback Status** and filter by the campaign. A successful request to `tr.outbrain.com` confirms ClickFlare sent the postback.
4. In Outbrain, open **Pixels → Conversions** and check the status of your conversion. Outbrain updates it about once an hour.

| Status in Outbrain | Meaning |
| - | - |
| **Pending** | Nothing has been received yet. Wait for the hourly update. |
| **Active** | The conversion is firing. The integration works. |
| **No Recent Activity** | No conversion arrived in over 72 hours. |
| **Not Active** | The conversion has never fired. Check the event name in the postback. |

Outbrain doesn't troubleshoot server-side setups. If the status stays empty, check the postback in ClickFlare first.

***

## Tracking several events

ClickFlare can send multiple conversions to multiple events, each with its own postback URL. Outbrain needs one event-based conversion per event.

1. In Outbrain, create an event-based conversion for each step, for example `lead` and `purchase`.
2. In ClickFlare, create a [custom conversion](/docs/en/settings/custom-conversions.md) for each step.
3. On the Outbrain traffic source, click **+ Another postback URL** once per extra event.
4. Map each postback to its ClickFlare event and give each a different `&name=`:

```text theme={null}
https://tr.outbrain.com/unifiedPixel?ob_click_id={external_id}&name=lead&orderValue={payout}&currency={payout_currency}
https://tr.outbrain.com/unifiedPixel?ob_click_id={external_id}&name=purchase&orderValue={payout}&currency={payout_currency}
```

5. Test each event. Each Outbrain conversion shows its own status.

> **Choosing the conversion Outbrain optimizes on**
>
> Outbrain's conversion-based bidding optimizes toward the conversion goal you choose for the campaign. Pick the event closest to revenue, usually the sale. Earlier steps can still be sent for reporting.

> **Sending only one event**
>
> If Outbrain should only learn from your final sale, keep a single postback and map it to that event. Earlier steps (leads, add to carts) still show in ClickFlare. They just don't reach Outbrain.
>
> To send a postback only for some conversions, for example only those above a certain payout, use **Event filter** under the postback to add conditions.

## Cost

The template's Cost row is empty, so the campaign URL doesn't carry Outbrain's cost per click.

The best option is ClickFlare's **Outbrain cost integration**. It pulls actual spend from Outbrain's API at campaign, content, publisher and section level. You need access to Outbrain's API, which you request from your account manager or through Outbrain's API form. Approval takes 2–5 business days. Once the integration exists, select it under **Cost Integration** on the Outbrain traffic source, and set the campaign's **Cost Model** to **Not Tracked** so ClickFlare uses the spend it pulls. Set the integration's timezone to match your Outbrain account. See [Outbrain Cost Integration](/docs/en/integrations/outbrain.md).

Outbrain also documents a cost-per-click macro, `cpc` in double curly braces, in USD. You can try it in the Cost row: set **TS Parameter** to `cpc` and **TS Token** to the macro. Test it before relying on it. The API integration is more accurate.

Until then, set the **Cost Model** on the campaign to **CPC** and enter your bid. Correct past days with a [manual cost upload](/docs/en/settings/manual-cost-upload.md). See [Cost Models](/docs/en/core-platform-concepts/cost-models.md) and [Traffic Source Cost Tracking](/docs/en/tracking/how-to-setup-traffic-source-cost-tracking.md).

## Delayed revenue

If you run search arbitrage (RSOC or AFD) behind Outbrain, the feed reports revenue hours or days after the click. To pass that revenue to Outbrain once it arrives, see [Sending Delayed Revenue to Traffic Sources](/docs/en/advanced-tracking-configuration/how-to-send-delayed-revenue-to-traffic-sources.md).

***

## Troubleshooting

> **Outbrain shows no conversions**
>
> * `REPLACE` is still in the postback, or the name doesn't match the Outbrain event name exactly, including letter case.
> * The conversion in Outbrain is URL-based. S2S needs an event-based conversion.
> * The conversion happened more than the conversion **Window** after the click.
> * Check **Logs → Postback Status**: a failed request shows the status code Outbrain returned.

> **Conversions show in ClickFlare but not in Outbrain**
>
> * **Traffic source postback URL** is off on the Outbrain traffic source.
> * **Disable sending postbacks to traffic source** is on in the campaign.
> * The postback is mapped to a different event than the one the conversion logged. Check **Logs → Event Logs** to see which event was recorded.
> * The External ID is empty, so the postback has no click ID. See the next item.

> **External ID or publisher columns are empty**
>
> The macros were not replaced. Usual causes: the parameters were added to the landing page URL instead of the **Tracking** section, a macro lost one of its braces, or the Tracking section starts with `?`. Paste the parameters from ClickFlare unchanged. See [Traffic Source Tokens Arriving Empty](/docs/en/troubleshooting/tokens-arriving-empty.md).

> **Campaign name column is empty**
>
> Outbrain's documentation lists its campaign name macro for impression pixels. If it doesn't fill in click URLs on your account, rely on the Campaign ID column.

For the general checklist, see [Conversions not showing](/docs/en/troubleshooting/conversions-not-showing.md).

***

**FREQUENTLY ASKED QUESTIONS**

> **Q1:** Can I use the same Outbrain traffic source for all my Outbrain campaigns?

**A1:** Yes, as long as they report the same events. The postback is set once on the traffic source. Create a second Outbrain traffic source only if a campaign needs different event names.

> **Q2:** Why is the click ID parameter called `ob_click_id` on both sides?

**A2:** Outbrain uses the same name in its macro and in its postback. ClickFlare reads the click ID from `ob_click_id` in the campaign URL. Outbrain expects it back in `ob_click_id` in the postback, with ClickFlare's `{external_id}` as the value.

> **Q3:** Do I need to install Outbrain's pixel as well?

**A3:** No. The S2S postback replaces it. Outbrain shows a code snippet when you create the conversion, but you don't need it.

> **Q4:** Can I use static values in the postback, like currency?

**A4:** Yes. Hardcode values that never change, for example `&currency=USD`, or keep `{payout_currency}` if your offers pay in different currencies.

> **Q5:** Should I use Redirect or Direct tracking with Outbrain?

**A5:** Redirect is the usual choice. Use Direct only if Outbrain must see your lander's domain as the destination. See [Direct Campaign Tracking](/docs/en/campaigns/direct-campaign-tracking.md).

## Related

> **[Outbrain cost integration](/docs/en/integrations/outbrain.md)**
>
> Pull actual spend from Outbrain's API.

> **[Traffic source postbacks](/docs/en/tracking/how-to-configure-a-traffic-source-s2s-postback-url.md)**
>
> Every token you can use in a postback.

> **[Custom conversions](/docs/en/settings/custom-conversions.md)**
>
> Split leads and sales into separate events.

> **[Conversions not showing](/docs/en/troubleshooting/conversions-not-showing.md)**
>
> The general checklist when postbacks don't arrive.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.