UTM Tracking for Outbrain Ads: How to Build and Validate Campaign Links
Outbrain is one of the two dominant native content discovery networks, placing sponsored content recommendations across premium publisher websites including CNN, The Guardian, Le Monde, and thousands of regional publishers. Advertisers use Outbrain Amplify to promote articles, landing pages, and product content alongside editorial recommendations — reaching audiences in a browsing mindset rather than a search intent mindset. Unlike Google Ads or Microsoft Ads, Outbrain does not automatically append a click identifier to destination URLs. There is no Outbrain equivalent of gclid or msclkid. UTM parameters on your destination URL are the only mechanism for GA4 to attribute website sessions from Outbrain placements. Use utm_source=outbrain with utm_medium=native for all Outbrain paid placements. This article covers the correct UTM values for each Outbrain ad format, how to build them programmatically with the MissingLinkz CLI, how to configure GA4 channel groups for native advertising attribution, and how to validate destination URLs before campaigns go live.
Outbrain ad formats and UTM parameters
Outbrain Amplify offers several ad format types. Most drive traffic directly to your destination URL, where GA4 reads the UTM parameters and attributes the session:
| Outbrain ad format | Where users go on click | UTM parameters applicable? |
|---|---|---|
| Sponsored Content (article) | Your destination URL (article, landing page, or homepage) | ✓ Yes — append to destination URL |
| Smartad (display-style) | Your destination URL | ✓ Yes — append to destination URL |
| Video Ads | Your destination URL (click-through) | ✓ Yes — append to click-through URL |
| App Install Ads | App store page | ✗ No — app stores handle attribution |
App Install Ads send users to the Apple App Store or Google Play Store rather than to your website. App store pages do not process UTM parameters — mobile attribution for App Install campaigns is handled by mobile measurement partners (MMPs) such as AppsFlyer, Adjust, or Branch, not by GA4 UTM tags. For all other Outbrain ad formats — Sponsored Content, Smartad, and Video Ads with click-through URLs — UTM parameters on the destination URL are the primary GA4 attribution mechanism.
Sponsored Content placements are the core Outbrain format: your article headline and thumbnail image appear in the "Around the Web" or "Recommended for You" widget at the bottom or side of publisher pages. Outbrain Amplify's self-serve interface has a dedicated "Tracking" field where you can append UTM parameters to your destination URL before submitting the campaign. This is where you enter your UTM-tagged URL.
The correct utm_source and utm_medium for Outbrain Ads
Use utm_source=outbrain for all Outbrain Amplify placements. For utm_medium, the semantically correct value is native — native advertising is a distinct traffic channel from display advertising, paid search, or social, and utm_medium=native accurately describes Outbrain's content recommendation format:
| Outbrain ad format | utm_source | utm_medium | GA4 channel (default) |
|---|---|---|---|
| Sponsored Content | outbrain |
native |
Unassigned* |
| Smartad | outbrain |
native |
Unassigned* |
| Video Ads (click-through) | outbrain |
native |
Unassigned* |
*Important: GA4's default channel group definitions do not include a "Native" channel. Sessions with utm_medium=native fall into the Unassigned bucket in GA4's default Traffic Acquisition report — they are not lost, but they do not map to any pre-built channel. You have two options:
- Add a custom channel group rule in GA4 Admin — create a "Native Advertising" channel that matches
sourceis one ofoutbrain,taboola(or any other native networks you use). This is the recommended approach as it gives native advertising its own dedicated channel in your reports. - Use
utm_medium=displayinstead — this routes Outbrain sessions into GA4's default Display channel (which matchesutm_mediumvalues ofdisplay,cpm,banner,expandable, andinterstitial). This is a pragmatic fallback if you cannot add custom channel groups but want to avoid Unassigned, at the cost of Outbrain sessions being grouped with display advertising from other networks.
Do not use utm_source=outbrain.com or utm_source=ob. Non-canonical source values create mismatched rows in reports and require additional GA4 channel group rules to handle. The canonical value is outbrain.
Building Outbrain Ads UTM links with mlz build
mlz build generates the tracked URL, enforces lowercase normalisation across all parameter values, and stores the link for auditing. For Outbrain Sponsored Content or Smartad placements:
# Sponsored Content or Smartad placement
$ mlz build \
--url "https://example.com/blog/industry-guide" \
--source "outbrain" \
--medium "native" \
--campaign "q3-content-acquisition-2026" \
--content "sponsored-article-guide"
{
"tracked_url": "https://example.com/blog/industry-guide?utm_source=outbrain&utm_medium=native&utm_campaign=q3-content-acquisition-2026&utm_content=sponsored-article-guide",
"params": {
"utm_source": "outbrain",
"utm_medium": "native",
"utm_campaign": "q3-content-acquisition-2026",
"utm_content": "sponsored-article-guide"
},
"link_id": "lnk_ob7k3m1n",
"stored": true
}
Use utm_content to distinguish between ad creatives or article titles within the same campaign — for example, sponsored-article-guide vs smartad-banner-v2 vs video-product-demo. Outbrain Amplify allows A/B testing different headlines and images within a single campaign; utm_content lets you track which creative drives better downstream conversion without creating separate GA4 campaigns.
If you run Outbrain campaigns simultaneously on multiple publisher verticals (news, finance, lifestyle), use utm_term to tag the audience segment or content vertical:
# Finance publisher audience segment
$ mlz build \
--url "https://example.com/blog/industry-guide" \
--source "outbrain" \
--medium "native" \
--campaign "q3-content-acquisition-2026" \
--content "sponsored-article-guide" \
--term "finance-audience"
{
"tracked_url": "https://example.com/blog/industry-guide?utm_source=outbrain&utm_medium=native&utm_campaign=q3-content-acquisition-2026&utm_content=sponsored-article-guide&utm_term=finance-audience",
"params": {
"utm_source": "outbrain",
"utm_medium": "native",
"utm_campaign": "q3-content-acquisition-2026",
"utm_content": "sponsored-article-guide",
"utm_term": "finance-audience"
},
"link_id": "lnk_ob9p5r7q",
"stored": true
}
The CLI enforces lowercase normalisation — passing --source "Outbrain" or --medium "Native" outputs the lowercase canonical form in the tracked URL. This prevents GA4 attribution fragmentation from capitalisation inconsistency across campaigns. See the UTM naming conventions guide for the cross-channel naming reference.
Validating Outbrain Ads destination URLs before launch
Outbrain Amplify performs basic URL validation during campaign submission — a URL that fails HTTPS or returns a non-200 status can cause the campaign to be rejected by the platform's editorial review. More importantly, Outbrain's ad delivery system routes clicks through its own tracking redirect chain before reaching your destination URL. You need to verify that your destination URL resolves cleanly through this redirect chain with UTM parameters intact. Run mlz build --validate to confirm the destination resolves correctly before entering your UTM-tagged URL in Outbrain Amplify:
$ mlz build \
--url "https://example.com/blog/industry-guide" \
--source "outbrain" \
--medium "native" \
--campaign "q3-content-acquisition-2026" \
--content "sponsored-article-guide" \
--validate
{
"tracked_url": "https://example.com/blog/industry-guide?utm_source=outbrain&utm_medium=native&utm_campaign=q3-content-acquisition-2026&utm_content=sponsored-article-guide",
"validation": {
"valid": true,
"checks": [
{ "check": "url_format", "status": "pass", "message": "URL format is valid." },
{ "check": "ssl", "status": "pass", "message": "URL uses HTTPS." },
{ "check": "resolution", "status": "pass", "message": "Destination responded with 200.", "details": { "response_time_ms": 184 } },
{ "check": "redirects", "status": "pass", "message": "No redirects detected." }
]
},
"link_id": "lnk_ob7k3m1n",
"stored": true
}
Outbrain's editorial team reviews all Sponsored Content campaigns before they go live, which typically takes 1–2 business days. A destination URL that fails basic validation — returning a non-200 status, missing HTTPS, or showing an excessive redirect chain — will cause rejection and restart the review timer. Validating the destination URL before submission eliminates this avoidable delay. For a full pre-launch workflow that also checks OG tags and social preview metadata — ensuring your landing page thumbnail looks correct when Outbrain's crawler previews it for placement — see the mlz publish-check guide.
Outbrain Ads UTM tracking gotchas
- No auto-tagging — UTM parameters must be on the destination URL before submission
- Outbrain does not automatically append any click ID or tracking parameters to destination URLs. If you launch an Outbrain campaign with a destination URL that has no UTM parameters, GA4 records all resulting website sessions as Direct traffic or as Outbrain.com / referral (depending on whether the browser sends a referrer header). Either way, your paid Outbrain spend is invisible in GA4's Traffic Acquisition report — you cannot see how many sessions the campaign drove, what pages they visited, or whether they converted. UTM parameters must be on the destination URL when you submit the campaign to Outbrain Amplify.
- Outbrain appends ob_click_id — this is not a GA4 auto-tagging equivalent
- Outbrain sometimes appends an
ob_click_idparameter to destination URLs for its own internal click tracking and conversion attribution within Outbrain Amplify's reporting dashboard. This parameter is separate from UTM tags and serves a different purpose: it lets Outbrain's platform measure conversions through its own Pixel integration, but it does not write any session data to GA4.ob_click_idappearing in your URL alongside UTM parameters is expected and does not interfere with how GA4 reads your UTM tags. Your UTM attribution remains intact. Do not confuseob_click_idwith a GA4 tracking mechanism — it only works within Outbrain's own conversion reporting. - utm_medium=native falls into Unassigned in GA4's default channel groups
- GA4's pre-built channel group definitions do not include a "Native" channel. Sessions where
utm_medium=nativeare attributed to the source and medium correctly in the Traffic Acquisition "Session source / medium" dimension, but they appear as Unassigned in the channel-level view. This does not mean the data is lost — the sessions are tracked and the UTM attribution is accurate. To fix the channel grouping, go to GA4 Admin > Data display > Channel groups > Create custom channel group and add a rule matching source equalsoutbrain. Name it "Native" or "Native Advertising" to keep it separate from Display. - Outbrain's tracking redirect may add latency — validate your page speed first
- When a user clicks an Outbrain ad, the click passes through Outbrain's tracking redirect server before landing on your destination URL. Outbrain measures click latency to assess landing page quality — slow pages receive lower placement priority in Outbrain's auction. If your landing page response time is over 3 seconds, Outbrain's quality scoring system may reduce your campaign's reach. Run
mlz build --validateto check your destination URL's response time before launch. If the response time exceeds 2 seconds, investigate server-side performance before the Outbrain campaign goes live. - Organic Outbrain article reads appear differently from paid Outbrain placements in GA4
- If users find your content through Outbrain's organic recommendation engine (non-paid placements where Outbrain surfaces your articles without you paying per click), those sessions appear in GA4 as
outbrain.com / referralbased on the referrer header — no UTM parameters. Your paid Outbrain Amplify placements with UTM tags appear asoutbrain / native. The two source/medium pairs are distinct rows in GA4's Traffic Acquisition report, so paid and organic Outbrain-referred traffic are naturally separated without additional configuration.
Outbrain Ads UTM naming conventions
Consistent naming across Outbrain and your other paid channels is important for cross-channel comparison in GA4. Recommended conventions for Outbrain Ads UTM parameters:
- utm_source:
outbrain— always lowercase, always this exact value for all Outbrain Amplify placements - utm_medium:
nativefor all Outbrain paid placements that send traffic to your website (requires a custom GA4 channel group rule to avoid Unassigned) - utm_campaign: lowercase hyphen-separated name matching the Outbrain Amplify campaign, e.g.
q3-content-acquisition-2026 - utm_content: creative or article identifier, e.g.
sponsored-article-guide,smartad-banner-v2,video-product-demo— use this to distinguish between ad creatives or formats within the same campaign - utm_term: audience segment or publisher vertical if applicable, e.g.
finance-audienceornews-vertical— useful for campaigns targeting multiple Outbrain publisher categories
If you run simultaneous content distribution campaigns on Outbrain and Taboola (the other major native advertising network), keep utm_source as the platform identifier (outbrain vs taboola) and use the same campaign slug in utm_campaign. This allows direct cross-platform comparison in GA4 by filtering on campaign name and grouping by source. See the UTM tracking best practices guide for the full cross-channel naming system.
FAQ
- Do UTM parameters work with Outbrain Ads?
- Yes. All Outbrain Amplify ad formats that drive traffic to your website — Sponsored Content, Smartad, and Video Ads (click-through) — support UTM parameters on the destination URL. Enter the UTM-tagged URL in the "URL" or "Tracking" field in Outbrain Amplify when creating your campaign. When a user clicks your Outbrain placement, they land on your page and GA4 reads the UTM parameters, attributing the session to
outbrain / native. Outbrain does not have auto-tagging, so UTM parameters are the only GA4 attribution mechanism. - What utm_source and utm_medium should I use for Outbrain?
- Use
utm_source=outbrain(lowercase) for the source. Forutm_medium, usenativefor the most semantically accurate channel labelling — this requires a custom channel group rule in GA4 Admin to appear as a named channel rather than "Unassigned." If you cannot add a custom channel group, useutm_medium=displayinstead to route Outbrain traffic into GA4's default Display channel. - Why does my Outbrain traffic show as Unassigned in GA4?
- GA4's default channel group definitions do not include a "Native" channel. Sessions with
utm_medium=nativeare tracked accurately in the Traffic Acquisition "Session source / medium" dimension asoutbrain / native, but they appear as Unassigned in the default channel grouping view. Fix this by creating a custom channel group rule in GA4 Admin that matchessource exactly matches outbrainand naming the channel "Native" or "Native Advertising." - What is ob_click_id and should I remove it from my URLs?
ob_click_idis Outbrain's internal click tracking parameter. It is appended by Outbrain's delivery system to measure click-through conversions within Outbrain Amplify's own reporting dashboard. It does not interfere with your UTM parameters — GA4 ignores it and continues to attribute the session based on your UTM tags. You should not remove it from URLs where Outbrain has appended it, as doing so would break Outbrain's own conversion tracking within its platform.- How do I validate my Outbrain destination URL before submitting the campaign?
- Run
mlz build --validateon your destination URL to confirm it resolves with HTTPS, returns a 200 status code, passes through the redirect chain cleanly, and loads within a reasonable response time. Outbrain's editorial review process checks destination URLs before approvals — a broken URL causes rejection and resets the review timer, typically adding 1–2 business days. Catching URL issues before submission avoids this delay and ensures your campaign can start delivering on the intended launch date.
Related reading
Build Outbrain Ads UTM links from the terminal
Pass --source "outbrain" --medium "native" to mlz build and get a normalised, validated URL ready to paste into Outbrain Amplify. Lowercase normalisation prevents GA4 attribution fragmentation across campaigns. Add --validate to confirm the destination resolves cleanly before your campaign enters Outbrain's editorial review queue.
npm install -g missinglinkz
Free plan: 50 links/month. No credit card. See the UTM tracking for developers guide for the full programmatic workflow.