UTM parameters are short labels added to your ad's destination URL so analytics tools can tell which platform, campaign and ad sent each visitor. Meta reports results from its own point of view. UTMs let Google Analytics 4, Shopify and your other tools see the same traffic in their reports, next to every other channel.
The standard UTM parameters
| Parameter | What it records | Example value |
|---|---|---|
| utm_source | The platform | |
| utm_medium | The type of traffic | paid_social |
| utm_campaign | The campaign | The campaign name |
| utm_content | The specific ad | The ad name |
| utm_term | On Meta, often the ad set | The ad set name |
Some teams also add utm_id with the campaign ID, which gives analytics tools a key that doesn't change if a campaign is renamed.
Meta's dynamic URL parameters
You don't have to type names by hand. In the URL parameters field at ad level, Meta can insert values at click time using placeholders such as {{campaign.name}}, {{adset.name}}, {{ad.name}}, {{campaign.id}}, {{ad.id}}, {{site_source_name}} and {{placement}}. Ads Manager includes a URL parameter builder to help you assemble them.
A clean naming convention
Dynamic parameters are only as good as your names. Pick one convention and stick to it: lowercase, no spaces, hyphens inside a field and underscores between fields. For example:
- Campaign: in_sales_broad_ashwagandha
- Ad set: advantage-audience_all-india
- Ad: sleep-hook_ugc-video_v2
Then use one parameter string that reuses those names for every ad:
utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_term={{adset.name}}&utm_content={{ad.name}}&utm_id={{campaign.id}}
In GA4, that visit arrives with source facebook, medium paid_social and your own campaign, ad set and ad names, so you can compare Meta with every other channel. A medium that starts with "paid", such as paid_social, helps GA4 place the traffic in its paid social channel.
Common mistakes
- Inconsistent capitals. GA4 treats Facebook and facebook as different sources.
- Renaming ads mid-flight. Dynamic names are filled when someone clicks, so a rename splits your reports. {{ad.id}} stays stable if you need a permanent key.
- Duplicated tags, from typing UTMs into both the website URL and the URL parameters field.
- Expecting UTMs to match Ads Manager. They count visits that arrive. Meta also counts view-through and engage-through conversions. See attribution window.
UTMs complement the Meta Pixel and Conversions API rather than replacing them. Once you can see Meta-sourced revenue in your analytics, compare it with total spend using MER and the ROAS calculator.
Frequently asked questions
What UTM parameters should I use for Facebook ads?
At minimum utm_source, utm_medium and utm_campaign. Adding utm_content for the ad and utm_term for the ad set gives you ad-level detail. Use Meta's dynamic parameters, such as {{campaign.name}} and {{ad.name}}, so values fill in automatically. Keep everything lowercase and consistent.
Do UTM parameters affect Meta ad performance?
No. UTMs are read by your analytics tools, not used by Meta's delivery or optimisation. They do lengthen the URL, so check that your landing page loads correctly with the parameters attached.
Why don't my GA4 numbers match Meta Ads Manager?
They measure different things. GA4 counts sessions and conversions from people who arrive with your UTMs and shares credit across all channels, while Meta also counts view-through, engage-through and some modelled conversions. Consent banners, ad blockers and redirects that strip parameters widen the gap further.