Outbrain tracking
Outbrain conversion tracking with S2S postbacks
Keep Outbrain's ob_click_id and the Tracked offer-click ID separate, map the exact Outbrain event name, then test the inbound sale and outbound Outbrain postback as two handoffs.
Outbrain conversion tracking without a pixel works by sending a confirmed event to Outbrain's postback URL with the click ID Outbrain supplied on the ad click. Tracked can sit between that click and an affiliate sale. It captures Outbrain's click ID on the campaign URL and records the page and offer click. It then receives the advertiser's postback and sends a configured server-to-server event back to Outbrain.
Two identifiers make this work, and they must never be swapped. Outbrain's {{ob_click_id}} macro identifies the ad click. Tracked's {{click.id}} identifies the offer click that the advertiser must return. Other traffic sources use different keys; the click ID parameter reference lists them. For a native network without a built-in Tracked adapter, the MGID postback guide shows the custom-template route.
A naming note: Outbrain's parent company completed its corporate name change to Teads Holding Co. in June 2025. The advertiser help documentation cited below is still published on outbrain.com, so this guide uses "Outbrain" for the ad platform.
What does Outbrain need back from your tracker?
Outbrain needs two values for a server-to-server conversion: the stored click ID and the exact conversion name. Its server-to-server integration guide documents a GET request to this endpoint:
https://tr.outbrain.com/unifiedPixel?ob_click_id=UNIQUE_CLICK_ID_VALUE&name=EVENT_BASED_CONVERSION_NAME
ob_click_id and name are reserved keys. Outbrain also documents optional orderId, orderValue, currency, and timestamp parameters. Event names are case-sensitive. Outbrain says S2S conversions follow the same rule as its pixel: only conversions that originated from Outbrain are included.
Outbrain also states that it cannot troubleshoot problems in your external system. That makes your own diagnostics important. You need to see which ID was captured, which event name was sent, and what Outbrain returned.
| Identifier | Who creates it | Where it must return |
|---|---|---|
| Outbrain click ID | Outbrain fills {{ob_click_id}} when a visitor clicks the ad. | Outbrain's postback URL as ob_click_id. |
| Tracked offer-click ID | Tracked creates it when the visitor takes the offer action. | Tracked's /postback endpoint as click_id. |
Putting the Outbrain value into Tracked's inbound click_id will not match a stored offer click. Outbrain cannot attribute an event using a Tracked-generated ID either. The click ID guide explains why each system needs its own identifier.
The two-click-ID path
Outbrain ad → campaign URL with obclid={{ob_click_id}} → Tracked landing page
↓
/click/N offer action
↓
advertiser saves Tracked offer-click ID
↓
sale postback → Tracked /postback
↓
Tracked sends name + saved ob_click_id → tr.outbrain.com/unifiedPixel
The first postback is inbound: the advertiser tells Tracked about a sale. The second is outbound: Tracked tells Outbrain. Each can succeed while the other fails, so test them separately.
Step 1: Add the Outbrain click macro to every ad URL
Select Outbrain as the campaign's traffic source in Tracked and copy the generated campaign URL. Tracked's built-in Outbrain definition appends the click ID parameter once:
https://YOUR_TRACKED_CAMPAIGN_URL?obclid={{ob_click_id}}
Use your actual campaign URL and the correct ? or &. Outbrain's own example uses a parameter named OutbrainClickId in the campaign's Track box. The parameter name belongs to your tracker; the {{ob_click_id}} macro must stay unchanged. Tracked's built-in capture reads obclid, so keep the generated name rather than adding Outbrain's example as a second copy.
Two rules prevent most capture failures:
- One click ID parameter only. Do not put
obclidin the ad URL and another Outbrain click-ID parameter in the Track box. Duplicates make a live request hard to diagnose. - Inspect a real click. A pasted preview contains the literal text
{{ob_click_id}}. Only a delivered Outbrain click proves the macro expanded.
Tracked stores the captured value as the campaign arrival's platform click ID. That stored value is what the outbound Outbrain postback uses later.
Step 2: Connect the page and the affiliate offer
Use a hosted page if you want to edit the headline, offer framing, or CTA in the same workspace. Point the page's offer action at a tracked /click/N slot. The prelander tracking guide covers this page-to-offer handoff in detail.
Add {{click.id}} to the affiliate link field that stores an external tracker ID. The field name varies by network:
https://advertiser.example/offer?sub1={{click.id}}
Here sub1 is illustrative, not a universal parameter. Then configure the network to return that saved value to your campaign domain:
https://YOUR_TRACKED_DOMAIN/postback?click_id=NETWORK_MACRO_FOR_TRACKED_ID&payout=NETWORK_PAYOUT_MACRO
The capitalized placeholders are explanatory, not working network tokens. A primary sale should use the untyped postback if it carries payout. Explicitly typed secondary events currently record zero payout in Tracked. The postback URL guide covers supported fields, error responses, and retries.
Step 3: Create the conversion in Outbrain
Outbrain's documented flow creates an Event-Based Conversion:
- Open the Pixels tab and select Conversions.
- Click Add Conversion and choose Event-Based Conversion, not URL-Based.
- Enter a unique event Name, a Window from click to conversion, and a Value.
- Save. Outbrain shows a code snippet, but a server-to-server setup does not need it on your site.
Record the exact Name you entered. If you typed Approved_Sale, that capitalization is the value Tracked must send. Outbrain's interface may change; check the current guide if the labels differ.
Step 4: Map the conversion in Tracked
Tracked resolves the outbound Outbrain event name in this order:
- Campaign setting. The campaign's conversion step has an Outbrain event name field. Its help text reads "Use the exact event name from Outbrain. Leave blank to disable." Enter the exact Outbrain Name for the primary conversion. Typed offer events, such as an approved lead, appear under Additional events with their own field.
- Platform event mapping. When a campaign does not define its own event, the Outbrain platform's Platform event mapping applies. It is preconfigured for standard Tracked events, such as
purchasetopurchase,leadtolead, andbegin_checkouttocheckout. Edit the Outbrain side if your account uses different names. - No match. An unmapped conversion type is skipped and logged as having no event mapping. Tracked does not invent an event name.
The preconfigured names are suggestions based on common categories, not your account's conversions. A mapping only works when it matches a Name you created in Outbrain. The conversion-event mapping guide explains why advertiser labels and traffic-source event names need a deliberate mapping.
When a conversion resolves to an event, Tracked builds a GET request to https://tr.outbrain.com/unifiedPixel. The request carries:
| Outbrain parameter | Value Tracked sends |
|---|---|
ob_click_id | The stored Outbrain click ID from the campaign arrival |
name | The resolved event name |
orderValue | The recorded payout, or 0 when none was recorded |
currency | The conversion currency, else the platform default (USD unless changed) |
orderId | The order or conversion ID, when available |
timestamp | The source timestamp when valid, otherwise receipt time |
Delivery runs after Tracked records the inbound conversion. It does not change the advertiser's inbound response. Network errors, 429, and 5xx responses are retried up to three attempts in total.
Decide what orderValue should mean before you rely on value reports. Your affiliate payout is not necessarily the customer's order total. A conversion with no recorded payout sends 0.
Step 5: Connect spend for the profit view
Conversion feedback and spend reporting are separate connections. Tracked's Outbrain account connection asks for the username and password of an Outbrain user with Amplify API access. It then lists the marketer accounts that user can see, and you choose which to add. The login is stored encrypted.
Connected accounts sync spend on a 15-minute schedule. Tracked also discovers Outbrain campaigns so you can map each one to a Tracked campaign. Spend only reaches the right campaign after that mapping exists. A working postback does not create it.
When reconciling, compare the same dates and time zone in both systems. Page profit in Tracked uses allocated campaign spend, not a separate invoice-level cost per page. The campaign profit guide explains how to read those numbers.
Step 6: Test both delivery stages
Run one end-to-end test with identifiers you can follow:
- Click a live, approved Outbrain ad. Confirm the Tracked campaign arrival shows a real platform click ID, not
{{ob_click_id}}. - Take the page's
/click/Noffer action. Confirm the affiliate link received a real Tracked offer-click ID. - Trigger an authorized test conversion at the network. Find it on the original offer click in Tracked with the expected campaign, page, offer, and payout.
- Open the Logs page and filter to postbacks. The outbound entry shows the sent platform click ID, the traffic source URL, and Outbrain's response.
- Check the conversion in Outbrain's reporting for the event Name you mapped.
To test only the outbound stage, open a click with a platform click ID in the Logs page. Its Test conversion section can send a flagged test conversion and outbound postback. Tracked excludes that test conversion from reports. The result line shows Outbrain's HTTP status.
An inbound 200 from Tracked proves the sale reached Tracked. It does not prove Outbrain accepted the outbound request or attributed the conversion. Outbrain's response status is a transport receipt, not proof of attribution.
Common Outbrain postback failures
| Symptom | Likely cause | What to check |
|---|---|---|
| Tracked shows no conversion | The advertiser never stored or returned the Tracked offer-click ID | Inspect the outgoing offer URL and the delivered postback. A missing ID returns 400; an unmatched ID returns 404. |
| Conversion in Tracked, outbound skipped as "missing platform or click id" | {{ob_click_id}} was not captured on the campaign arrival | The ad URL, duplicate click-ID parameters, and any redirect that strips query strings |
| Outbound skipped as "no event mapping" | The campaign event field is blank, or the conversion type has no mapping | The campaign's Outbrain event name and the platform event mapping |
| Outbrain returns success but shows no conversion | The name does not match an Outbrain Event-Based Conversion exactly | Compare capitalization, spacing, and underscores with the Name in Outbrain |
| Conversion value looks wrong | Payout was missing, typed as secondary, or in another currency | The recorded payout, the conversion currency, and the platform default currency |
| Spend is missing beside conversions | The Outbrain account or campaign mapping is missing | The account connection and the campaign mapping, not the postback |
The postback troubleshooting guide covers inbound failures in more depth. Fix capture and matching before changing page copy. A broken event handoff looks like a weak page in reports.
Where Tracked is today
These layers are present in Tracked's current code and interface:
- Click capture. The generated Outbrain campaign URL includes
obclid={{ob_click_id}}, and the captured value is stored as the platform click ID. - Outbound delivery. A configured campaign or platform mapping sends a GET request to Outbrain's documented
unifiedPixelendpoint. Attempts and responses appear in the Logs page. - Spend sync. Outbrain account connection, marketer selection, campaign discovery, and scheduled spend sync are available.
These boundaries remain:
- Production verification. The Outbrain path is not yet among the provider paths Tracked lists as production-verified, unlike Taboola and NewsBreak. Run the two-stage test above before scaling.
- Outbrain DSP. Outbrain's DSP product uses a different
{postbackid}macro and conversion definitions. Tracked's built-in Outbrain adapter targets theob_click_idendpoint, not the DSP flow. - Deduplication. Tracked does not coordinate an Outbrain pixel and S2S postback for the same event. Choose one reporting method per conversion, or confirm Outbrain's handling first.
- Attribution. Tracked records what it sent and the HTTP response. Whether Outbrain attributes the conversion depends on Outbrain's own rules and conversion window.
Frequently asked questions
Do I need to add {{ob_click_id}} to every Outbrain ad URL?
Yes, unless the Track box already adds the parameter for that campaign. Outbrain fills the macro at click time; without it, there is no click ID to return. Use one parameter only. Tracked's generated URL uses obclid={{ob_click_id}}.
Is the Outbrain click ID the same as the Tracked click ID?
No. ob_click_id joins the outbound postback to the Outbrain ad click. The Tracked offer-click ID joins the advertiser's postback to the offer click. The campaign journey keeps both, and each returns to its own receiver.
What is the Outbrain postback URL?
Outbrain documents https://tr.outbrain.com/unifiedPixel with ob_click_id and name as required parameters. orderId, orderValue, currency, and timestamp are optional. Tracked builds this URL from stored values, so you do not paste it into Tracked by hand.
Is Teads postback tracking the same as Outbrain postback tracking?
Outbrain's parent company renamed itself Teads Holding Co. in 2025. The advertiser S2S flow in this guide is the one documented in Outbrain's help center. Check which buying platform runs your campaign. Outbrain DSP and other Teads products document their own conversion setups.
Does connecting my Outbrain account send conversions automatically?
No. The account connection syncs spend and discovers campaigns. Conversion feedback needs a captured click ID, a recorded conversion, and a resolved event name. Configure and test both separately.