If you’re running paid ads across multiple platforms, properly configured URL parameters are non-negotiable. They allow your analytics tools (like PostHog) to correctly attribute traffic, measure campaign performance, and inform your optimization decisions.

Below is a direct, platform-by-platform breakdown of exactly where to set them and what to paste.

The Quick-Reference Table

NetworkWhere to SetTemplate to Paste
Meta (FB/IG)Ad level → Tracking → URL Parameters (Meta appends to your landing URL)utm_source=meta&utm_medium=paid&utm_campaign={{campaign.id}}&utm_content={{adset.id}}&utm_term={{ad.id}}
Google AdsAd or Account level → Tracking Template{lpurl}?utm_source=google&utm_medium=paid&utm_campaign={campaignid}&utm_content={adgroupid}&utm_term={creative}
Reddit AdsAd (Creative) → Destination URL (append UTMs in the URL)https://www.yoursite.com/page?utm_source=reddit&utm_medium=paid&utm_campaign={{CAMPAIGN_ID}}&utm_content={{ADGROUP_ID}}&utm_term={{AD_ID}}
TikTok AdsAd level → Destination URL → Edit → Build URL parameters, or use Auto-attach (paste UTMs after your URL)?utm_source=tiktok&utm_medium=paid&utm_campaign=__CAMPAIGN_ID__&utm_content=__AID__&utm_term=__CID__
Snapchat AdsAd level → Website URLhttps://www.yoursite.com/page?utm_source=snapchat&utm_medium=paid&utm_campaign={{campaign.id}}&utm_content={{adSet.id}}&utm_term={{ad.id}}
Pinterest AdsAd / Ad Group → Destination URL?utm_source=pinterest&utm_medium=paid&utm_campaign={campaignid}&utm_content={adgroupid}&utm_term={adid}

Why We Use IDs

These templates use campaign, ad set, ad group, and ad IDs because IDs make it easier to join your analytics data with the original ad platform data later.

If that is not part of your reporting setup, you can use campaign names, ad set names, ad group names, or ad names instead to make your reports more human-readable.

Use IDs for cleaner data joins. Use names for easier reading inside analytics tools.

Platform-by-Platform Setup

1. Meta Ads (Facebook & Instagram)

Where: Ad level → Tracking → URL Parameters field

Meta appends the parameters to your landing page URL automatically — you do not include the base URL here.

utm_source=meta&utm_medium=paid&utm_campaign={{campaign.id}}&utm_content={{adset.id}}&utm_term={{ad.id}}

Dynamic variables:

  • {{campaign.id}} — Campaign ID
  • {{adset.id}} — Ad Set ID
  • {{ad.id}} — Ad ID

2. Google Ads

Where: Ad level or Account level → Tracking Template field

Google uses a Tracking Template, so you must include the {lpurl} ValueTrack parameter, which resolves to your final landing page URL.

{lpurl}?utm_source=google&utm_medium=paid&utm_campaign={campaignid}&utm_content={adgroupid}&utm_term={creative}

Dynamic variables:

  • {lpurl} — Final URL (landing page)
  • {campaignid} — Campaign ID
  • {adgroupid} — Ad Group ID
  • {creative} — Ad ID

Tip: Setting this at the Account level applies it to all campaigns automatically, saving you manual setup per ad.

3. Reddit Ads

Where: Ad (Creative) → Destination URL

Important: You must create a Product Catalog before running catalog-based ads. For standard ads, append UTM parameters directly to your destination URL in the creative.

Use ? if your base URL has no existing query string; use & if it already contains parameters.

https://www.yoursite.com/page?utm_source=reddit&utm_medium=paid&utm_campaign={{CAMPAIGN_ID}}&utm_content={{ADGROUP_ID}}&utm_term={{AD_ID}}

Dynamic variables:

  • {{CAMPAIGN_ID}} — Campaign ID
  • {{ADGROUP_ID}} — Ad Group ID
  • {{AD_ID}} — Ad ID

4. TikTok Ads

Where: Ad level → Destination URL → Edit → Build URL parameters, or use Auto-attach

You can either use TikTok’s Auto-attach feature or build URL parameters manually in the ad flow. A manual version is:

?utm_source=tiktok&utm_medium=paid&utm_campaign=__CAMPAIGN_ID__&utm_content=__AID__&utm_term=__CID__

TikTok explicitly documents both automatic UTM attachment and manual URL parameter building in Ads Manager.

Dynamic variables:

  • __CAMPAIGN_ID__ — Campaign ID
  • __AID__ — Ad Group ID
  • __CID__ — Ad (Creative) ID

5. Snapchat Ads

Where: Ad level → Website URL field

Paste your full destination URL with UTM parameters appended directly.

https://www.yoursite.com/page?utm_source=snapchat&utm_medium=paid&utm_campaign={{campaign.id}}&utm_content={{adSet.id}}&utm_term={{ad.id}}

Dynamic variables:

  • {{campaign.id}} — Campaign ID
  • {{adSet.id}} — Ad Set ID
  • {{ad.id}} — Ad ID

6. Pinterest Ads

Where: Ad level or Ad Group level → Destination URL field

Pinterest supports dynamic parameters that expand automatically when the ad is served.

?utm_source=pinterest&utm_medium=paid&utm_campaign={campaignid}&utm_content={adgroupid}&utm_term={adid}

Dynamic variables:

  • {campaignid} — Campaign ID
  • {adgroupid} — Ad Group ID
  • {adid} — Ad ID

Key Notes

  • utm_source identifies the platform (e.g., meta, google, tiktok).
  • utm_medium should always be paid for paid traffic. this differentiates it from organic.
  • utm_campaign, utm_content, and utm_term use platform-native dynamic variables that auto-populate with real IDs at serve time. do not replace these with static text.
  • Always use ? before the first parameter and & between subsequent parameters.
  • Test your URLs with a URL builder or in a staging environment before going live.

Setting these parameters correctly from day one ensures clean, reliable attribution data across every channel you run.

If you found this guide helpful, also read our post on building consistent UTMs for reliable marketing attribution. It explains the broader UTM structure behind these templates and shows how to keep your campaign data clean across every channel.

Read More

Related blog posts

Leave a Reply

Your email address will not be published. Required fields are marked *