Why GA4 counts your paid social as organic, and how to fix it
GA4 only counts a visit as Paid Social when two things are true: the source is a social site it recognizes, and the medium matches its paid pattern, which means it starts with "paid", contains "cp", or is exactly ppc or retargeting. A medium like social_paid or facebook_ads fails that test, so GA4 falls back to Organic Social. Change the medium to paid_social or cpc and new traffic lands in the right channel.
The rule GA4 uses
GA4 assigns every session to a channel by checking a fixed list of rules in order and stopping at the first match. For paid social, the rule is:
Paid Social = source matches GA4's list of social sites and medium matches ^(.*cp.*|ppc|retargeting|paid.*)$
That regular expression is the whole story. A medium passes if it contains "cp" anywhere (cpc, cpm, cpa), is exactly "ppc" or "retargeting", or starts with "paid". Anything else is treated as unpaid, and because the source is still a social site, the session drops through to Organic Social.
Which mediums work
| Source / medium | GA4 channel | Why |
|---|---|---|
| facebook / paid_social | Paid Social | Medium starts with "paid" |
| facebook / cpc | Paid Social | Medium contains "cp" |
| instagram / paidsocial | Paid Social | Starts with "paid" |
| facebook / social_paid | Organic Social | Doesn't start with "paid" or contain "cp" |
| facebook / facebook_ads | Organic Social | No paid pattern |
| tiktok / sponsored | Organic Social | No paid pattern |
| facebook / social | Organic Social | Unpaid social medium, as intended |
| newsletter / paid_social | Paid Other | Paid medium, but the source isn't a social site |
| partner-site / display | Display | "display" is its own rule |
| youtube / paid_video | Paid Video | Video site plus a paid medium |
The source has to be on Google's list too
GA4 checks the source against lists of social, search, video and shopping sites. Common names like facebook, instagram, linkedin, reddit, tiktok and twitter are recognized. If you use a source GA4 doesn't know, a paid medium still lands in Paid Other instead of Paid Social. Stick to the standard names, and check Google's downloadable list of sources before using a new one.
The full order of channel rules
For traffic without Google Ads auto-tagging, GA4 checks these in order. The first match wins.
- Direct
- Cross-network (campaign name contains "cross-network")
- Paid Shopping
- Paid Search
- Paid Social
- Paid Video
- Display (medium is display, banner, expandable, interstitial or cpm)
- Paid Other (any paid medium that matched nothing above)
- Organic Shopping, Organic Social, Organic Video, Organic Search
- AI Assistant (medium is ai-assistant)
- Referral, Email, Affiliates, Audio, SMS, Mobile Push Notifications
- Unassigned (nothing matched)
If traffic shows up as Unassigned, the medium is almost always a custom word GA4 has no rule for, like "influencer" or "promo". Use a standard medium instead.
How to fix it
- Find the bad links. In GA4, open Reports → Acquisition → Traffic acquisition and add Session source / medium as a secondary dimension. Look for paid campaigns under Organic Social or Unassigned.
- Standardize your mediums. Use
paid_socialfor paid social,cpcfor paid search,paid_videofor video platforms,displayfor banners andemailfor email. - Use lowercase everywhere. GA4 reports treat "Facebook" and "facebook" as different sources, which splits your data.
- Update the live ads. Changing the UTM on an ad only affects clicks from then on. GA4 doesn't reprocess old sessions.
- Fix past reporting with a custom channel group. In Admin → Data display → Channel groups, you can copy the default group and add a rule for your old medium names. Custom channel groups can be used to reclassify past data in reports.
What about Google Ads?
Keep Google Ads auto-tagging on. It sends campaign data to GA4 automatically and classifies Google Ads traffic correctly without UTMs. Manual UTMs on Google Ads links are only needed for other analytics tools.