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
| Network | Where to Set | Template 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 Ads | Ad or Account level → Tracking Template | {lpurl}?utm_source=google&utm_medium=paid&utm_campaign={campaignid}&utm_content={adgroupid}&utm_term={creative} |
| Reddit Ads | Ad (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 Ads | Ad 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 Ads | Ad level → Website URL | https://www.yoursite.com/page?utm_source=snapchat&utm_medium=paid&utm_campaign={{campaign.id}}&utm_content={{adSet.id}}&utm_term={{ad.id}} |
| Pinterest Ads | Ad / 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_sourceidentifies the platform (e.g., meta, google, tiktok).utm_mediumshould always bepaidfor paid traffic. this differentiates it from organic.utm_campaign,utm_content, andutm_termuse 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
- Learn how Meta handles URL parameters and dynamic tracking values.
- Review Google’s Tracking Template and ValueTrack parameter documentation.
- See how Reddit Ads supports URL parameters and campaign tracking.
- Learn how TikTok Ads handles URL parameters and automatic UTM attachment.
- Review Snapchat’s supported macros for campaign, ad set, and ad tracking.
- See Pinterest’s supported dynamic parameters for ad tracking.



