Postora

A handbook for people who run social media for a business or for clients

Client work and reporting

UTM parameters for social media: a naming convention GA4 classifies correctly

By the Postora editorial teamUpdated 12 min read

Short answer

In UTM parameters for social media, set utm_medium=social on unpaid links, utm_medium=paid-social on ads, and the platform in lowercase as utm_source. organic_social and social_media are not on GA4's medium list, and social_paid on a listed source counts as organic.

The usual advice on UTM parameters for social media is one line: set utm_medium to social. It is correct, and it skips the part that causes the errors. GA4 runs each session's source and medium through a fixed set of channel rules that Google publishes, and a value outside those rules can drop a post's clicks into Unassigned or count paid clicks as organic.

This page builds a convention from that rule text, read on Google's default channel group page on 2026-09-28, and from the list of social sources Google links from the same page. It covers where GA4 puts 12 common tag pairs, which platforms are missing from Google's list, where tagged links belong on social, and how to test one before it goes out.

How does GA4 decide between Organic Social and Paid Social?

For traffic that carries UTM tags, the two social channels are defined under the "Channels for manual traffic" heading of Google's channel page as follows:

  • Organic Social: the source matches a regex list of social sites, OR the medium is one of social, social-network, social-media, sm, social network, social media.
  • Paid Social: the source matches a regex list of social sites, AND the medium matches ^(.*cp.*|ppc|retargeting|paid.*)$.

Read in plain terms:

  • The medium alone can make a visit Organic Social. If utm_medium is one of the six listed values, the Organic Social rule is met whatever the source.
  • Paid Social needs two things at once: a source on Google's social list and a medium that passes the regex. The regex accepts any medium that starts with paid, any medium that contains cp (such as cpc), and exactly ppc or retargeting.
  • A paid medium with an unlisted source goes to Paid Other. Google describes that channel as ads "not through an ad identified as Search, Social, Shopping, or Video".
  • A visit that matches no rule is Unassigned.
  • The rules ignore case and cannot be edited. Google states both on the same page.

Two more details matter. The medium cpm passes the paid regex, but it is also on the Display channel's medium list (display, banner, expandable, interstitial, cpm), so a cpm tag satisfies two channels. And the page does not state which rule wins when two match. Its descriptions settle the common case: Organic Social is traffic from non-ad links on social sites and Paid Social is traffic from ads on them, so a listed source with a paid medium is Paid Social, even though that source also satisfies the Organic Social rule.

Which platforms are on Google's list of social sources?

Google does not publish the "regex list of social sites" as a regex. It publishes a download, linked from the channel page as a spreadsheet of sources and categories. On 2026-09-28 that file was a 27-page PDF titled "GA4 Source Categories", served with a last-modified date of 9 February 2023. It has 819 entries: 592 social, 129 search, 52 shopping and 46 video.

Google says it reviews requests to add sites to the list at least once a year, so the list GA4 uses may be newer than the file. The file is the only version anyone outside Google can check. Here is what it contains for the platforms a business is likely to post on:

Platform On the list Not on the list
Facebook facebook, fb, facebook.com, m.facebook.com, l.facebook.com, lm.facebook.com
Instagram instagram, ig, instagram.com, l.instagram.com insta
LinkedIn linkedin, linkedin.com, lnkd.in li
X twitter, twitter.com, t.co x, x.com
TikTok tiktok, tiktok.com (as social) vm.tiktok.com
Pinterest pinterest, pinterest.com and country domains such as pinterest.de pin.it
YouTube youtube, youtube.com, m.youtube.com (as video, not social) yt, youtu.be
Reddit reddit, reddit.com
Snapchat snapchat, snapchat.com
WhatsApp whatsapp, whatsapp.com wa.me
Telegram t.me telegram
Threads none threads, threads.net, threads.com
Bluesky none bluesky, bsky, bsky.app
Mastodon none mastodon, mastodon.social

Five things follow from the file:

  • Threads, Bluesky and Mastodon are not on it. Tagged with utm_medium=social or another value on the Organic Social medium list, their clicks still reach Organic Social through the medium rule. Tagged with a medium outside that list, or arriving untagged, where they land depends on the live list, which Google does not publish.
  • X appears only under its old name. twitter, twitter.com and t.co are listed; x and x.com are not. For organic links this does not matter if the medium is social. For ads, twitter is the source value the file supports.
  • TikTok has two answers. The file lists TikTok as social. The channel page's own descriptions name TikTok as a video site for both Organic Video and Paid Video. Check where your TikTok rows land before you build a report on them.
  • YouTube is filed as video. youtube with the medium social satisfies Organic Social by its medium and Organic Video by its source. Google does not say which wins; your own reports will show it.
  • Google's own tagging advice uses a value its list lacks. The UTM best-practice table on Google's campaign URL page suggests fb for Facebook and insta for Instagram. fb is on the list; insta is not. With the medium social that makes no difference. With a paid medium, insta falls to Paid Other by the file.

Where does GA4 put 12 common tag pairs?

Each row applies the rule text above to the source file as published. Rows marked † depend on the source being absent from that file; if Google's live list has since added it, the result can differ. The campaign name is assumed to contain neither "shop" nor "cross-network" (see the convention below for why).

utm_source utm_medium GA4 channel Why
facebook social Organic Social Listed source and listed medium
bluesky social Organic Social The medium alone qualifies
threads social-media Organic Social social-media, with a hyphen, is on the medium list
threads social_media Unassigned † The underscore version is not on the medium list
mastodon organic_social Unassigned † organic_social is not a listed medium
instagram organic_social Organic Social The source carries it; the medium does nothing
instagram Social Organic Social The rules ignore case, but reports show Social and social as two rows
bluesky left out Unassigned † The medium reports as (not set) and the source is not listed
facebook social_paid Organic Social Fails the paid regex (does not start with paid, contains no cp), so ad clicks count as organic
linkedin paid_social Paid Social Listed source; the medium starts with paid
x paid_social Paid Other † x is not on the list; twitter is
telegram message Unassigned † telegram is not on the list (t.me is), and message matches no rule

The pattern: an organic tag fails only when both its medium and its source miss their lists, so a fixed medium removes the risk. Paid tags fail quietly in two ways. With a listed source, a medium the regex does not recognise, such as social_paid, sponsored or boosted, turns ad clicks into organic traffic. A source outside the list turns Paid Social into Paid Other.

What naming convention should social UTM tags follow?

Parameter Rule Example
utm_source The platform, lowercase, one value per platform. For ads, a value from Google's list: facebook, instagram, linkedin, tiktok, pinterest, twitter, reddit, snapchat instagram
utm_medium social for every unpaid link, paid-social for every ad, and no other values social
utm_campaign Lowercase, hyphens, starts with the month; never contains "shop", "shopping" or "cross-network" 2026-10-autumn-menu
utm_content Where the link sits, plus a variant if you compare several story-2
utm_id Optional: one ID per campaign, the same on every platform au26
utm_term Empty on social; Google defines it for paid keywords

The reasons behind each rule:

  • social and paid-social. social passes the organic rule whatever the source. paid-social starts with paid, so it passes the regex, and with a listed source the visit is Paid Social. cpc works too, and so does Google's own example value, paid_social. Avoid cpm, which is also a Display medium.
  • Lowercase everything. Google states that parameter values are case sensitive: utm_source=google and utm_source=Google are different values (Google). The channel rules ignore case, so a capital letter will not move a visit to another channel, but it splits one source into two report rows.
  • Keep "shop" and "cross-network" out of campaign names. The Shopping rules test the campaign name against ^(.*(([^a-df-z]|^)shop|shopping).*)$: "shopping" anywhere, or "shop" at the start, after a non-letter or after the letter e. A social post tagged summer-shop-launch satisfies Organic Shopping as well as Organic Social. "workshop" does not match. A campaign name containing "cross-network" satisfies the Cross-network rule.
  • Put the placement in utm_content, so a report can separate story clicks from bio clicks without inventing a second source value.

A finished link looks like this:

https://www.example.com/autumn-menu?utm_source=instagram&utm_medium=social&utm_campaign=2026-10-autumn-menu&utm_content=story

Google's Campaign URL Builder assembles the same URL from form fields. For client work, agree the convention in writing before the first post; the client onboarding checklist puts it next to the other measurement decisions.

Any link that sends people from a platform to your site can carry tags. What changes by placement is the utm_content value and a trap or two.

Placement Tag Note
Profile or bio link to your site utm_content=bio Stays live for months; give it a standing campaign such as always-on
Link-in-bio page run by another service Tag each link on that page The click to your site comes from that page, so a tag on the profile link never reaches your analytics
Story link utm_content=story Add a variant per story if you compare them
Link in a post, caption or video description utm_content=post Only where the platform makes the link clickable
Comment or reply utm_content=comment
DMs and messaging apps utm_content=dm Links without UTM tags are one of the reasons Google gives for (direct) / (none) traffic (Google)
Ads utm_medium=paid-social If the ad platform fills the source with a dynamic value, check the values it produces against Google's list
Shortened links Tag the long URL, then shorten it Google warns that redirects can strip UTM parameters and that shorteners can strip referral details (Google)
  1. Test the final link. If it goes through a shortener or redirect, test that version, since redirects can strip the tags (Google).
  2. Open it in a fresh private window. GA4 ties each session to one traffic source, and campaign values that arrive in the middle of a session do not change that session's source (Google). A session left open from earlier testing can hide the result.
  3. Turn on debug mode for your own device with Google Tag Assistant, which adds a parameter to the page address. Accept analytics cookies in the test window: if the site uses consent mode and analytics consent is not given, the events do not show in DebugView (Google).
  4. In GA4, open Admin, then Data display, then DebugView. Click the page_view event and read its page_location parameter, which holds the page URL (Google). The tags should be there, spelled exactly as written. GA4 keeps UTM values in page location, not in the page path dimensions (Google).
  5. Do not use Realtime to check the source. Its source card shows first user source, and only for users GA4 has already processed, so a first visit from a clean browser may not appear there (Google).
  6. Confirm the channel after processing. Google says processing can take 24 to 48 hours (Google). Then open Reports, Acquisition, Traffic acquisition, and check the test visit under Session source/medium and under Session default channel group. Google points to the Acquisition reports for attribution because Realtime and DebugView run only a limited version of it (Google).
  7. Filter out the test traffic, as Google advises for anything collected in debug mode (Google).

When are the default rules not enough?

When you need a channel Google's list does not give you. The default channel group cannot be edited, but GA4 lets you create custom channel groups with your own rules (Google). That is the route for Threads or Bluesky as a channel of their own, or for ads from an unlisted source counted as Paid Social. Google also accepts requests to add social sites to its list.

UTM tags answer where a visit came from. They say nothing about how many people saw the post on the platform; reach, impressions and views are defined per platform in social media metrics: reach, impressions and views.

Frequently asked questions

Are UTM parameters case sensitive in GA4?

The values are. Google treats utm_source=google and utm_source=Google as different values, so they appear as separate rows. The default channel rules are not case sensitive, so Social and social both reach Organic Social. Use lowercase everywhere.

Should utm_medium be social or organic_social?

social. It is on the Organic Social medium list, so it works with any source, including Threads, Bluesky and Mastodon, which are missing from Google's published source list. organic_social is not on the medium list and only works when the source is listed.

Why is my social traffic showing as Unassigned?

A tagged visit lands in Unassigned when it matches no channel rule, which for social links usually means neither the medium nor the source is on Google's lists. Examples: organic_social, social_media or message combined with threads, bluesky, mastodon, x or telegram. Change the medium to social on new links.

Does utm_source=x work for posts on X?

For organic posts, yes, as long as the medium is social; the medium carries the visit to Organic Social. For ads, Google's published list has twitter, twitter.com and t.co but not x, so x with a paid medium lands in Paid Other by that file. Use twitter for ads, or add x to a custom channel group.

Which UTM parameters does GA4 need?

Google says to always use utm_source, utm_medium and utm_campaign, and that parameters left out show as (not set) in reports (Google). utm_content is optional and is the place for the link's position on the platform.

Sources

All read on 2026-09-28.