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.

Updated June 21, 2026 · by slsh.me

The short answer

Source is the platform, medium is paid-social.

source facebook / instagram medium paid-social campaign {{campaign.name}}

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_sourcefacebook or instagramThe specific platform the click came from. Split them so you can compare placements.
utm_mediumpaid-socialThe 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.

1

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.

2

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.

3

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.

4

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, free

Then 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? +
Use 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? +
Placeholders like {{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? +
At the ad level in Ads Manager, in the URL parameters field under Tracking. Paste just the parameter string — no leading ?. 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? +
GA4's Default Channel Grouping reads 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.me

Free forever · see pricing