UTM builder
Meta Ads UTM Builder
Build campaign-ready URLs with a macro toggle, clean encoding, and GA4-friendly naming. Keep consistency across teams and channels.
Build your tracking URL
We encode parameters and keep GA4-friendly naming. Macros live in the right column.
Keep it normalized: paid_social. Avoid free text like “boosted”.
Your URL
We always URL-encode parameters. Copy and drop into your ads manager.
Platform & macros
Switch platform and toggle macros.
Macros
Insert platform tokens into UTMs.
Macros & sample values
Click a macro to inject at your cursor in the focused field.
GA4-friendly defaults
- • Medium: paid_social
- • Source: facebook
- • Keep casing lowercase and snake_case for consistency.
- • Use `utm_content` for creative/macros; `utm_term` for keyword or audience.
Official Platform Documentation
Frequently Asked Questions
What are Meta Ads dynamic parameters?
Meta (Facebook/Instagram) dynamic parameters are tokens like {{campaign.id}} and {{ad.id}} that automatically populate with real campaign data when someone clicks your ad. These replace manual tracking, ensuring every click carries accurate campaign, ad set, ad, and placement information to GA4.
What's the difference between {{campaign.id}} and {{campaign.name}}?
{{campaign.id}} is a permanent numeric identifier (e.g., "120000000000000000") that never changes, even if you rename your campaign. {{campaign.name}} is the human-readable name you set in Meta Ads Manager (e.g., "US | Promo | Prospecting"). Using {{campaign.id}} ensures consistent GA4 tracking regardless of name changes, though {{campaign.name}} can be helpful for readability in reports.
Why use {{site_source_name}} for utm_source?
{{site_source_name}} automatically resolves to "facebook" or "instagram" depending on where the ad was shown. This is crucial for GA4 channel grouping because Facebook and Instagram traffic should both map to the Paid Social channel. Using {{site_source_name}} eliminates the need to create separate tracking templates for each platform.
How does {{placement}} help optimize campaigns?
{{placement}} captures where your ad appeared (e.g., "facebook_feed", "instagram_stories", "audience_network"). By passing this to utm_term, you can analyze in GA4 which placements drive the best conversion rates and adjust your Meta Ads placement strategy accordingly. For example, if Instagram Stories converts better than Facebook Feed, you can shift budget allocation.
Should I use fbclid or manual UTM tracking with Meta Ads?
Meta automatically appends fbclid (Facebook Click ID) for conversion tracking. However, fbclid conflicts with manual utm_source/medium parameters and can cause "Unassigned" traffic in GA4. Best practice: Use fbclid for Meta Pixel conversion tracking, but add manual UTM parameters with dynamic parameters for proper GA4 channel grouping. Ensure utm_source=facebook (or use {{site_source_name}}) and utm_medium=cpc or paidsocial.
What happens if I don't use Meta Ads dynamic parameters?
Without dynamic parameters, you must manually tag each campaign, ad set, and ad with unique UTM values—an impossible task for accounts with hundreds of ads. You'll lose the ability to analyze performance by ad set, ad creative, or placement in GA4, making optimization guesswork. Dynamic parameters automate this entirely, giving you granular attribution data without any manual work.
Get Your Free Audit in 60 Seconds
Connect GA4, run the scan, and see exactly where tracking is leaking budget. No credit card required.
Trusted by growth teams and agencies to keep attribution clean.