Home/ Guides/ UTM parameters for Facebook & Instagram ads
Guide · Campaigns
Tag your Meta ads so the clicks add up.
Run Facebook and Instagram ads and you want every click attributed to the right ad — not lumped under "social" or scattered across mismatched rows. Here are the exact source and medium values for Meta, the dynamic parameters that auto-fill ad names, and a copy-paste template.
The short answer
Source is the platform, medium is paid-social.
Set utm_source=facebook (or instagram) and utm_medium=paid-social in the ad's URL parameters field, and let Meta's dynamic placeholders fill in the campaign and ad names. Keep every value lowercase and hyphenated so GA4 reports one clean row per ad instead of a dozen near-duplicates.
Want it right before it goes live? Build the parameter string with the free slsh.me UTM builder — it lowercases and encodes as you type — then drop a slsh.me short link into the ad so the destination stays clean and every Meta click lands in your dashboard. Already shipped an ad? Paste its URL into the UTM parser to check the tags.
The right values per parameter.
Five UTM parameters, mapped to what Meta ads should put in each one. Source and medium are the two that decide whether GA4 files the click correctly.
| Parameter | Use for Meta ads | Why |
|---|---|---|
utm_source | facebook or instagram | The specific platform the click came from. Split them so you can compare placements. |
utm_medium | paid-social | The channel type. GA4 buckets this into Paid Social — not Paid Search, not Unassigned. |
utm_campaign | {{campaign.name}} | Meta fills in the real campaign name per click. Name it cleanly in Ads Manager. |
utm_content | {{ad.name}} | Which creative drove the click — the dynamic ad name, auto-substituted. |
utm_term | {{adset.name}} (optional) | Optional. Handy for audience/ad-set breakdowns when you don't use term for keywords. |
One decision to make up front: report Facebook and Instagram separately (two sources) or together as meta (one source). Separately is more granular and almost always worth it. Whichever you pick, apply it to every ad — a mix of facebook, fb and meta fragments the channel exactly the way GA4 splits casing. (More on that in the UTM naming convention guide.)
Let Meta fill in the names automatically.
You don't hand-type a UTM for every ad. Meta supports dynamic placeholders that get substituted with the real names at delivery, so one template covers your whole account.
| Placeholder | Resolves to |
|---|---|
{{campaign.name}} | The campaign's name from Ads Manager |
{{adset.name}} | The ad set's name |
{{ad.name}} | The individual ad's name |
{{placement}} | Where it ran — e.g. an feed, story, reels placement |
{{site_source_name}} | The network — fb, ig, an, msg |
The catch: these resolve to whatever you typed in Ads Manager, then get URL-encoded as-is. If a campaign is named Spring Sale 2026, your UTM becomes Spring%20Sale%202026 — a different value from spring-sale-2026 and a capitalised one at that. So the naming discipline moves up a level: name your campaigns, ad sets and ads cleanly in Ads Manager — lowercase, hyphens, no spaces — and the dynamic UTMs come out clean for free.
The copy-paste template.
Paste this into the ad's URL parameters field (Ads Manager → ad level → Tracking). No leading ? — Meta adds it.
# Facebook / Instagram ad — URL parameters field utm_source=facebook&utm_medium=paid-social&utm_campaign={{campaign.name}}&utm_content={{ad.name}}
Swap utm_source=facebook for instagram when the ad targets Instagram placements, or keep one meta source if you report Meta as a single channel. Add &utm_term={{adset.name}} if you want the ad-set name too. Because the names come from Ads Manager, you set this once per ad (or as an account-level default) and never touch the UTMs again.
The mistakes that break attribution.
Four things that quietly send your Meta clicks to the wrong place in GA4.
Using cpc as the medium
A medium of cpc paired with a social source can land in Paid Search in GA4's channel grouping — the wrong bucket entirely.
Fix: use utm_medium=paid-social for Meta ads; reserve cpc for search.
Spaces and capitals in names
Dynamic placeholders inherit your Ads Manager names verbatim. Q2 Retargeting becomes Q2%20Retargeting — capitalised and encoded.
Fix: name campaigns and ads lowercase-with-hyphens from the start.
Putting UTMs in the Website URL field
Appending ?utm_... to the destination URL field can collide with Meta's own parameters and double up question marks.
Fix: use the dedicated URL parameters field instead.
Mixing fb, facebook and meta
Three spellings of the same source means three rows in GA4 that never add up to your real Meta total.
Fix: pick one source convention and apply it to every single ad.
Build the string without typos.
The dynamic placeholders are easy; the static part (utm_source, utm_medium) is where a stray capital or space sneaks in. Build that part once from a form that lowercases and encodes for you, then slot the {{…}} placeholders in by hand.
The free slsh.me UTM builder lays out every parameter, normalises casing and spacing as you type, and shows the finished string — so your Meta ads ship with identical, GA4-friendly source and medium values every time.
Build your Meta UTMs, freeThen shorten the destination on slsh.me — a clean short link in the ad keeps the long tagged URL out of sight and logs every click by country and device, free.
Questions
What utm_source and utm_medium should I use for Facebook and Instagram ads? +
utm_source=facebook for Facebook placements and utm_source=instagram for Instagram, with utm_medium=paid-social. Keep both lowercase. If you'd rather report all Meta spend as one channel, use utm_source=meta everywhere — the only firm rule is that every ad uses the same spelling so GA4 doesn't split the channel.What are Meta's dynamic URL parameters? +
{{campaign.name}}, {{adset.name}}, {{ad.name}} and {{placement}} that Meta substitutes with the real names at delivery. A typical pattern is utm_campaign={{campaign.name}}&utm_content={{ad.name}}. They inherit your Ads Manager names verbatim, so name those cleanly — lowercase, hyphens, no spaces.Where do I add UTM parameters to a Meta ad? +
?. Don't append UTMs to the Website URL field itself; the URL parameters field keeps them separate and applies them to the destination.Why does my Facebook ad traffic show as paid search or unassigned in GA4? +
utm_medium. A cpc medium with a social source can land in Paid Search, and a non-standard medium like ppc-fb falls into Unassigned. Use utm_medium=paid-social with utm_source=facebook/instagram and it buckets correctly. See the reading UTM data in GA4 guide.Every Meta click, accounted for.
Shorten the link behind your Facebook and Instagram ads with slsh.me. The long tagged URL hides behind a tidy short link, and you get live click analytics per ad — by country, device and referrer, free.
Create a link with slsh.meFree forever · see pricing