Skip to content
Bach.ai

What UTM Parameters Should Facebook Ads Use? (2026)

Published
Drafted with AI; facts checked against the linked sources on . How we write

What UTM parameters should I use for Facebook ads?

Use utm_source=facebook, utm_medium=paid_social, utm_campaign={{campaign.name}}, utm_id={{campaign.id}} and utm_content={{ad.id}}, pasted into the ad's URL parameters field in Ads Manager. Google Analytics wants source, medium and campaign on every link and strongly recommends utm_id; Meta's dynamic parameters fill in the names and IDs on each click.

One template, pasted once per ad, covers most stores: two fixed values that tell your analytics tool the click was paid social from Facebook, and three of Meta’s dynamic parameters that fill in which campaign and ad it came from. The setup takes a minute. The mistakes surface later, when you try to compare campaigns in Google Analytics and the rows do not line up.

What is the template to paste?

Paste this into the URL parameters field of each ad:

utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_id={{campaign.id}}&utm_content={{ad.id}}

Each part has a job, and each job comes from a rule in Google’s or Meta’s documentation:

Parameter Value Why this value
utm_source facebook Google says always set source, medium and campaign, and keep values lowercase because they are case-sensitive
utm_medium paid_social GA4’s Paid Social channel needs a medium matching ^(.*cp.*|ppc|retargeting|paid.*)$
utm_campaign {{campaign.name}} Readable label; Meta fills in the name used at first publish
utm_id {{campaign.id}} Google strongly recommends utm_id; a campaign ID never changes
utm_content {{ad.id}} Ties the session to one ad, even after you rename it
utm_term (optional) {{adset.id}} Adds the ad set if you report at that level

Sources for the table: Google Analytics, URL builders: collect campaign data with custom URLs and default channel group; Meta, Specifications for dynamic URL parameters.

The medium matters more than it looks. GA4 needs two things for Paid Social: a source on its social-site list, and a medium that fits that pattern. A medium such as social lands the visit in Organic Social instead, so your paid traffic quietly inflates your organic numbers. GA4 channel rules ignore case, but your report rows do not: Facebook and facebook still show as two sources.

Which dynamic parameters does Meta support?

Meta lists nine dynamic parameters you can place on ads (Specifications for dynamic URL parameters):

  • {{campaign.id}}, {{adset.id}} and {{ad.id}}
  • {{campaign.name}}, {{adset.name}} and {{ad.name}}
  • {{placement}}, which returns values such as facebook_feed, instagram_stories and threads_stream
  • {{site_source_name}}, which returns fb, ig, msg, an (Audience Network) or th (Threads)
  • {{media_type}}, for Advantage+ catalog ads only

If you want the Facebook versus Instagram split, add it as its own parameter, for example &placement={{placement}}, rather than putting {{site_source_name}} in utm_source. That keeps one stable source value for every Meta ad and still lets you break the traffic down.

Dynamic parameters work on Awareness (reach, ThruPlay or ad recall lift goals) and Traffic campaigns, and on Engagement, Leads and Sales campaigns with the conversion locations Meta lists. For App promotion, Meta says to add them to the end of the deferred deep link instead, because there is no separate field. They are not supported for collection ads on Instagram placements.

Why use IDs and not only names?

Meta sets name-based parameters to the campaign, ad set or ad name “used when the ad was first published”. You can rename a campaign later, but {{campaign.name}} keeps reporting the old name for the life of that ad, and the only way to change the value is to publish a new campaign, ad set or ad. Meta’s own example also shows the space in a two-word campaign name arriving encoded as %20.

IDs avoid both problems. They never change and contain no spaces. That is why the template puts the ID in utm_id and utm_content and keeps the name only as a readable label. If you prefer names, write campaign names in lowercase with underscores from the start, because Google treats Prospecting and prospecting as two values.

How do I add UTM parameters in Ads Manager?

Add them while building the ad, before it goes live. Meta’s steps (Add URL parameters to your Meta ads):

  1. Create a campaign in Ads Manager, or open one saved as a draft.
  2. Go to the ad level and scroll down to the Tracking section.
  3. Paste the template into the URL parameters field, or click Build a URL parameter to enter each key and value.
  4. Click Apply. The parameters now show in the field.
  5. Click a test ad link and confirm the parameters appear in the landing page address, with names and IDs filled in.
  6. Repeat for every ad in the campaign, then check one landing URL per ad set after launch.

Four rules from the same Meta page decide whether it works. Parameters in the URL parameters field override duplicates in the Website URL field, so utm_source in both places keeps only the field’s value. Adding parameters in Ads Manager also overrides others set elsewhere, such as Instagram’s default URL parameters. Never leave a key empty, like background=; give it a value or remove it. And the parameters only apply to the first page someone lands on: a visitor who leaves and returns later organically arrives without them.

What mistakes break Facebook UTM tracking?

  • Editing parameters on a live ad. Meta warns that changing URL parameters after publishing may send the ad set back into the learning phase. Add them on new ads and let old ones run out.
  • Mixed case. Facebook, facebook and FB split one source into three rows.
  • A medium GA4 does not read as paid. social, facebook_ads or a blank medium all miss the Paid Social pattern.
  • Ignoring Meta’s own parameters. Since 1 January 2024 Meta may add campaign source, medium, ad ID, campaign ID, ad set ID and a campaign tracking group ID to ad traffic on its own; Shopify merchants may get source, medium, ad ID and campaign ID (Add URL parameters). Check your landing URLs so you know which values you are reading.
  • Personal or health data in a parameter. Meta lists UTM parameters among the places prohibited information can leak, and an audience label such as utm_term=diabetes_buyers is exactly that (About prohibited information). Use IDs, never descriptions of people.

What should I do once the data is flowing?

UTMs make the traffic readable; they do not make Meta and GA4 agree. Expect the two to report different numbers for reasons that have nothing to do with your tags, and work through them in order with why do Meta and GA4 report different numbers? For the gap between Meta and your store’s own revenue, see why does Meta revenue never match my store revenue? Both sit under the ROAS and attribution hub.

FAQ

Should utm_source be facebook or instagram?

Use one fixed value, such as facebook, for every Meta ad, because one ad can deliver on both apps and you want one row per platform family. If you need the split, add a separate placement={{placement}} or site={{site_source_name}} parameter. Meta’s own automatic parameters use facebook or instagram as the source.

Do I need UTM parameters if Meta adds its own?

Meta says it may add source, medium and ID parameters automatically, and labels this as something that may happen, not a guarantee. Your own template controls the exact values GA4 receives, including the paid_social medium and the utm_id key that Google strongly recommends. Set them yourself and check the landing URL.

Can I add UTM parameters to ads that are already running?

You can, but Meta warns that changing URL parameters after publishing may send the ad set back into the learning phase. Add the template to new ads and duplicates instead. Name-based values also freeze at first publish, so a renamed old campaign keeps reporting its original name.

Why do my UTMs show as {{campaign.name}} in GA4?

The braces arrived unfilled. Check the exact syntax against Meta’s list, with two braces on each side and Meta’s parameter names, and check the ad format, since Meta says dynamic parameters are not supported for collection ads on Instagram placements. Test one click before launch.

Sources

Sources: Meta Business Help Center, Specifications for dynamic URL parameters, Add URL parameters to your Meta ads and About prohibited information; Google Analytics Help, URL builders: collect campaign data with custom URLs and Default channel group (checked 2 Oct 2026).

MeasurementMarketing Analytics

See what your Meta ads are really costing you.

Connect your account and Bach ranks potential revenue leaks with estimates and actions you can review. Free for 7 days, no credit card.

Start Free Audit
Start your free audit