·Updated June 14, 2026·Meta Ads / Facebook Ads / UTM / GA4 / Analytics

Meta Ads utm_source: Use "facebook", Not "meta" (GA4 Official)

GA4's Source Categories list has facebook and fb but not meta. Setting utm_source=meta breaks Paid Social roll-up. The recommended value, plus the per-channel revenue comparison that naming alone never gives you.

Meta Ads utm_source: Use "facebook", Not "meta" (GA4 Official)

It's not unusual to see utm_source=meta on URLs for Meta Ads (Facebook Ads and Instagram Ads). After the corporate rename to Meta, it feels natural.

But when you open GA4's officially published "Default Channel Group Source Categories" list, the registered entries are facebook, fb, and facebook.com. meta is not on the list[1]. This isn't a cosmetic issue — it's the exact point where your Paid Social report either holds together or falls apart.

Getting the value right, though, is only the starting line. What you actually need is to normalize the spelling, line up real revenue by channel, and decide which traffic deserves the next budget. This article derives the right utm_source value for Meta Ads by working backward from GA4's own classification logic and source list — then goes one level up, to the per-channel revenue comparison that naming alone never gives you.

Key takeaways#

  1. Use utm_source=facebook (lowercase). meta is not in GA4's official list, so it never lands in Paid Social
  2. Use utm_medium=cpc. Putting social instead pulls paid traffic into Organic Social. Most mistakes are casing drift — when facebook / Facebook / fb / meta co-exist, one campaign splits into four rows
  3. The right value is only a prerequisite. Even with utm_source=facebook locked, GA4's standard reports never show "RPS, AOV, and purchase rate by channel — after spelling is normalized — on a single screen." Deciding where to put the next budget requires that comparison to exist somewhere else (covered in §5)

1. How GA4 decides "Paid Social"#

Conclusion: A session lands in Paid Social only when utm_source is on the official list and utm_medium is in the cpc family. meta is rejected right at this gate.

Per Google's official documentation, GA4 classifies a session as Paid Social when both conditions are true[2]:

  • Source (utm_source) matches GA4's managed "social sites regex list"
  • Medium (utm_medium) matches the regex ^(.*cp.*|ppc|retargeting|paid.*)$

The social-sites regex list itself is published by Google as an .xlsx file. When you download and open it, you see 819 source names paired with category labels[1]. Whether something lands in Paid Social isn't a matter of judgment — it's decided mechanically by whether the value is in that public file.

2. How facebook and meta are treated in the official list#

Conclusion: The official list has facebook, fb, and instagram — but the value meta appears nowhere. That's why utm_source=meta drops to Referral instead of Paid Social.

A relevant excerpt:

utm_source valueCategory in GA4's official list
facebookSOURCE_CATEGORY_SOCIAL
facebook.comSOURCE_CATEGORY_SOCIAL
fbSOURCE_CATEGORY_SOCIAL
m.facebook.comSOURCE_CATEGORY_SOCIAL
instagramSOURCE_CATEGORY_SOCIAL
instagram.comSOURCE_CATEGORY_SOCIAL
twitterSOURCE_CATEGORY_SOCIAL
metaNot in the list
MetaNot in the list

How utm_source values are classified in GA4's official 819-row source category list. facebook, facebook.com, fb, and instagram are registered as SOCIAL, while meta and Meta appear nowhere and fall out of Paid Social into Referral

The string meta appears nowhere in GA4's official classification list. Ads tagged utm_source=meta are therefore judged by GA4 as "not a social site" and land in Referral or (other), not Paid Social. The intuition "the company is now Meta, so utm_source=meta is natural" doesn't match Google's classification rules.

3. Four ways utm_source breaks#

Conclusion: Derived forms (meta), mixed casing, a medium/source mismatch, and mid-path loss all either drop traffic out of Paid Social or split one campaign across rows — and the revenue roll-up breaks.

Mistake 1: utm_source=meta makes Paid Social disappear#

As above, meta isn't in the official list. Meta Ads revenue surfaces as a standalone row meta / cpc instead of rolling into Paid Social. Next month's report shows "Paid Social revenue collapsed," but really — the classification just peeled off.

Mistake 2: facebook vs. Facebook become two channels#

GA4 stores utm_source values case-sensitively. Within a single campaign, mixing utm_source=facebook and utm_source=Facebook produces two separate rows. When four variants (facebook / Facebook / fb / meta) coexist, one campaign splits into four rows, each showing roughly 25–33% of the true number.

Mistake 3: utm_medium=social routes paid into Organic Social#

GA4's Organic Social rule fires when utm_medium matches social / social-network / social-media / sm, OR utm_source matches the social list[2]. Because this is an OR condition, utm_source=facebook + utm_medium=social lands in Organic Social purely on the medium match. Paid revenue gets counted as organic, and your ad ROAS looks artificially low.

Mistake 4: URL dynamic parameters fail validation after delayed substitution#

Meta's "URL dynamic parameters" let you embed macros like {{campaign.name}}, {{adset.name}}, {{ad.name}} in your URL, expanded at delivery[3]. Convenient — but the preview at submission time still shows the raw macro. If you don't verify after launch, you won't notice that utm_campaign is empty or that unexpected characters (spaces, non-ASCII) crept in, until you open GA4 mid-campaign.

Conclusion: utm_source=facebook + utm_medium=cpc, both lowercase. This matches the official list by the shortest path and avoids misclassification into Organic Social.

Given the classification logic above, lock the Meta Ads URL parameters to this:

utm_source=facebook
utm_medium=cpc
utm_campaign={{campaign.name}}
utm_content={{ad.name}}
utm_term={{adset.name}}
utm_id={{campaign.id}}

Why each value#

  • utm_source=facebook — Among SOURCE_CATEGORY_SOCIAL entries in GA4's official list, this is the most common representation of Meta Ads. fb is functionally equivalent, but locking to facebook minimizes casing drift operationally
  • utm_medium=cpc — Matches GA4's Paid Social regex ^(.*cp.*|ppc|retargeting|paid.*)$ and does not match any social-family Organic rule. Minimum collision risk
  • utm_campaign={{campaign.name}} — Substituted at delivery. Place the raw macro at submission and verify post-launch that real values are flowing into GA4
  • utm_content={{ad.name}} and utm_term={{adset.name}} — Align granularity so the GA4 "Campaign" dimension can be decomposed by ad / ad set

Recommended vs NG — GA4 classification by utm_source value. facebook (recommended) classifies cleanly into Paid Social, Facebook (uppercase) splits into a separate row, fb works but risks drift, and meta drops out of Paid Social into Referral

"We want to split out Instagram"#

Instagram ads also ship through Meta Ads Manager. If you want delivery-surface separation, switching utm_source from facebook to instagram does give you an Instagram-only row — but you then need to re-aggregate to see total Meta Ads revenue. Depending on your reporting design, a cleaner long-term setup is: keep utm_source at the delivery platform level and store the delivery surface in a custom dimension from the {{placement}} macro.

Two-step verification#

At minimum, run these two checks before and after launch:

  1. Pre-launch URL expansion simulation — In the Meta Ads Manager ad edit screen, enter test values in the URL parameter fields and open the "URL preview." Confirm macros expand as intended with no unexpected characters (spaces, non-ASCII, uppercase) injected
  2. Post-launch GA4 realtime check — Within 30 minutes of delivery start, open GA4 → Realtime → "Source/Medium" and verify visits appear as facebook / cpc. If you see meta / cpc or (direct) / (none), the parameters aren't reaching GA4

5. Even with the right value locked, GA4 has no "per-channel revenue comparison"#

Conclusion: Even with utm_source=facebook locked perfectly, GA4's standard reports never produce "RPS, AOV, and purchase rate by channel, after spelling is normalized, on one screen." Comparing revenue efficiency across channels takes separate work.

By this point, locking Meta Ads' utm_source to facebook gets you as far as correct classification into Paid Social. But "how much that correctly-classified Paid Social actually sold, versus search ads or newsletter" never comes out of GA4's standard reports, no matter how perfect your naming.

GA4 gives you sessions and conversions per source/medium, but lining up per-session revenue across channels — after normalizing spelling variants — requires hand-building an exploration report, excluding bot traffic, and joining revenue. For example, none of these questions can be answered from the standard reports alone, even with a flawless utm_source:

  • Which has higher per-session revenue: a Paid Social session or an Organic Search session?
  • How many times higher is newsletter purchase rate compared to Meta Ads?
  • Where should the next budget go — Meta Ads or search ads?

These are the questions you most want answered when deciding which channel gets the next budget. The state where you can line up bot-excluded per-session revenue across channels — after merging spelling variants — has to be built outside the standard reports.

RevenueScope solution—comparing real revenue by channel after normalization, on one screen

Conclusion: RevenueScope automatically merges the facebook / Facebook / fb / meta spelling variants, then presents RPS (revenue per session), AOV, and purchase rate by channel, on bot-excluded real revenue, on a single screen.

Getting the naming right is the prerequisite that makes this comparison possible. What RevenueScope handles is the step after — turning the comparison from §5 ("the one GA4 never shows even with a perfect utm_source") into something you can read directly on one screen.

  • Automated UTM normalization — Merges facebook / Facebook / fb / meta into one channel. Even periods you ran as meta that dropped into Referral are re-merged into the Paid Social campaign (the part GA4 keeps in separate rows).
  • Bot-excluded real revenue — Removes auto-detected bots from the denominator of channel RPS, computing per-session revenue on real human sessions only. Avoids the distortion where bot inflation swells the denominator and sinks RPS.
  • Per-channel RPS side by side — Lines up Meta Ads, search ads, newsletter, and organic search by RPS, AOV, and purchase rate on one screen. Answers the §5 questions — "which channel sells highest per session," "where to add budget" — on the spot.

RevenueScope's revenue-efficiency-by-channel dashboard (demo data shown). Meta ads (Facebook/Instagram) expanded by campaign (utm_campaign), listing revenue, RPS, AOV, CVR, ROAS, and bots excluded — so after resolving naming variants you can judge which traffic drove real sales

RevenueScope's dashboard (demo data shown). Lines up real revenue by channel after normalization.

The quality of your utm_source setup is the prerequisite for getting this comparison right. If utm_source breaks as meta, Meta Ads revenue scatters into Referral, and neither the denominator (sessions) nor the numerator (revenue) of RPS can be tallied correctly by channel. Only when the official list, the recommended value, and pre-launch verification covered here are in place — and spelling normalization and bot exclusion sit on top — do you reach a state where you can decide budget allocation on per-channel revenue efficiency.

Bottom line — the "correct answer" is in GA4's own file#

Social media debates the utm_source question endlessly: "Team facebook," "Team meta," "Team fb." But what GA4 actually reads is one public file with 819 source-category entries. facebook is in it. meta is not. This isn't a blog opinion or a vendor recommendation — it's the specification of the classification engine itself.

And getting the value right is only the prerequisite. It's only after you normalize spelling, exclude bot traffic, and line up real revenue by channel that you can decide — on a revenue basis — whether to weight the next budget toward Meta Ads. When delivery platforms multiply, agencies stack, and URLs get issued independently inside and outside the org, picking a single organizational-level convention and locking it down is the very first prerequisite of that decision.


Related articles on /en/news:

See which ads actually drive revenue, at a glance

Free up to 5,000 sessions/month, AI analyst included. No credit card required. Up and running in 5 minutes.

Ready to analyze yoursite.com

No credit card·Live in 5 minutes

References#

[1] Google Analytics "\[GA4\] Default channel group source categories" 2024

[2] Google Analytics "\[GA4\] Default channel group" 2024

[3] Meta for Business "About URL parameters" 2024