Quick answer
To add UTM parameters to Facebook Ads, put them in the ad's "URL parameters" field in Meta Ads Manager using utm_source=facebook and utm_medium=paid_social (or cpc), and let Meta's dynamic tokens like {{campaign.name}}, {{adset.name}}, and {{placement}} auto-fill the rest. Build the string with a free Facebook ads UTM builder such as Track Link's, which also tracks the resulting clicks free.
Facebook Ads has its own UTM quirks: a dedicated URL parameters field, dynamic tokens Meta substitutes at click time, and an fbclid parameter that gets appended automatically. Get the conventions right once and every ad maps cleanly to a row in Google Analytics or your tracking dashboard. This guide gives you the exact strings to paste.
You do not append UTMs to the destination URL by hand. At the ad level in Ads Manager, scroll to Tracking and use the "URL parameters" field. Enter the query string without the leading question mark — Meta joins it to your URL automatically. A clean default: utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_content={{ad.name}}. The big advantage of this field over hardcoding UTMs in the URL is that it survives across ad duplications and pulls live names via dynamic tokens, so renaming a campaign updates the tag with no manual edits. Set it once at the ad level and copy it across the ad set.
Meta substitutes these placeholders at click time, so you never type a campaign name twice: {{campaign.name}}, {{campaign.id}}, {{adset.name}}, {{adset.id}}, {{ad.name}}, {{ad.id}}, {{placement}}, and {{site_source_name}} (fb, ig, an, msg). Use names for human-readable reports and IDs for stable joins back to Ads Manager. A production-grade string: utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_content={{ad.name}}&utm_term={{adset.name}}&placement={{placement}}. The placement token is the one most people skip — it separates Feed, Reels, Stories, and Audience Network traffic that Meta otherwise blends into one bucket.
Keep utm_source=facebook for every Facebook ad so all spend rolls up under one source. For medium, pick one convention and never mix: utm_medium=paid_social is GA4's recommended value and routes ads into the Paid Social channel group automatically; utm_medium=cpc also works but lands them in Paid Search-adjacent groupings unless you customize. If you run Instagram placements through the same Meta campaign, the {{site_source_name}} token already tells you ig vs fb — so keep source=facebook and read the split from that field rather than creating a second source. Lowercase everything: utm_source=Facebook and utm_source=facebook are two different sources in every analytics tool.
Type these strings by hand and one stray ampersand silently breaks attribution. Use Track Link's free UTM builder at /tools/utm-builder to assemble the parameter string, then paste it into the Ads Manager URL parameters field. Before launching, preview the ad, click through, and confirm the resolved URL contains your real campaign name (not a literal {{campaign.name}}). Watch for Meta appending its own fbclid — that is expected and does not conflict with UTMs; your analytics reads utm_* and ignores fbclid. Tip: keep one reusable template per campaign objective so every new ad inherits the same correct tagging.
UTMs label traffic; they do not count it on their own. Pasting a Track Link tracked URL as your ad destination logs every click on a first-party redirect before iOS App Tracking Transparency or cookie blocking can interfere — typically recovering 15-30% of iOS clicks the Meta Pixel under-reports. You get country, device, browser, and the full resolved UTM set per click, plus conversion tracking, in one dashboard. The free plan covers 10 links, 2,500 clicks per month, 1 custom domain, and the API — no credit card. Pro is $9.99/month for 100 links, 25,000 clicks, 5 domains, and a year of retention.
Copy-paste conventions for common Facebook Ads campaigns.
FAQ
Use utm_medium=paid_social — it is GA4's recommended value and automatically routes your ads into the Paid Social channel group. utm_medium=cpc also works and is common, but it can land Facebook traffic in less intuitive channel groupings unless you customize GA4. Pick one convention and apply it to every ad so spend rolls up consistently.
At the ad level, open the Tracking section and use the "URL parameters" field. Enter the query string without the leading question mark (e.g. utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}). Meta joins it to your destination URL automatically and substitutes any dynamic tokens at click time. Do not hardcode UTMs in the destination URL itself — the dedicated field survives ad duplication.
Meta replaces these placeholders at click time so you never type a name twice: {{campaign.name}}, {{campaign.id}}, {{adset.name}}, {{adset.id}}, {{ad.name}}, {{ad.id}}, {{placement}}, and {{site_source_name}}. Use the .name tokens for human-readable analytics reports and the .id tokens when you need stable values to join back to Ads Manager exports. The {{placement}} token separates Feed, Reels, and Stories traffic that Meta otherwise blends together.
No. Facebook preserves standard utm_ parameters on ad clicks. It does append its own fbclid parameter, which is expected and harmless — your analytics tool reads the utm_ values and ignores fbclid. If you tag with Meta's URL parameters field, your UTMs and the fbclid coexist cleanly in the final landing-page URL.
Build the UTM string with a free Facebook ads UTM builder like Track Link's at /tools/utm-builder, then use a Track Link tracked URL as your ad destination. It logs every click on a first-party redirect — capturing country, device, browser, and the full UTM set — before iOS App Tracking Transparency can interfere. The free plan covers 10 links and 2,500 clicks per month with no credit card.
Build tagged links with the free UTM builder, then track clicks, sources, and conversions in real time. 10 links and 2,500 clicks/month free — no credit card.
Start tracking free