Source is the GA4 dimension that identifies who sent the click: the publisher, search engine, social network, or referring domain that delivered the visitor to your site. It’s set by the utm_source parameter when present, otherwise inferred from the Referrer header. Combined with utm_medium as the source/medium pair, it drives the entire acquisition attribution model in GA4, and one inconsistent tag can fragment a year of reports.
What is Source in Marketing Analytics
In analytics, Source answers a single question: which platform, site, or system originated this visit? It’s the granular identifier (google, newsletter, facebook, partner-blog.com) that sits at the bottom of every acquisition report. Without it, you can’t tell paid traffic from organic, partner referrals from cold direct, or one email send from another.
Source is one of three required dimensions in the GA4 acquisition trio: Source (who), Medium (how), Campaign (why). Every session_start event writes these three values into session-scoped dimensions, where they remain attached to every conversion that follows.
Outside GA4, the same concept exists across every analytics platform (Matomo, Plausible, Adobe Analytics, Fathom) because the Urchin convention from 2005 became the de facto standard. The values may surface under different dimension names, but the meaning is identical: Source is the label of origin.
UTM Source Parameter Explained (utm_source values)
The utm_source parameter is a query-string key appended to a destination URL. When GA4 parses the URL on page load, it reads the value and writes it to the session_source dimension. The format:
https://example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=spring2026
The value should identify the specific origin, not the channel category, that’s what utm_medium is for. newsletter is a source; email is a medium. facebook is a source; social is a medium. The two work together. Mixing them up is the most common UTM mistake teams make.
Standard values for utm_source include the publisher name (nytimes, techcrunch), the platform (facebook, linkedin, twitter), the email program (newsletter, welcome_series, mailchimp), or the partner domain (partner-blog, affiliate-network). Use lowercase, no spaces, and keep names consistent across every team and tool.
Source vs Medium vs Campaign (the three core dimensions)
The acquisition trio answers three orthogonal questions. Each parameter has a distinct job, and each populates its own GA4 dimension. Here’s how they split apart:
| Parameter | Question | Example value | GA4 dimension | Granularity |
|---|---|---|---|---|
utm_source |
Who sent the click? | newsletter, facebook, google |
session_source |
Specific publisher |
utm_medium |
How did they get here? | email, cpc, social, organic |
session_medium |
Channel category |
utm_campaign |
Why did we send it? | spring2026, black_friday |
session_campaign |
Marketing initiative |
Source is granular; medium is the bucket. newsletter, welcome_email, and mailchimp are three different sources, but they all roll up to email as the medium. That separation is what lets you analyze “all email” in one row of a report, then drill down to compare newsletter against transactional sends.
For the full mechanics of building tagged URLs see the UTM parameters guide; for the campaign-level details see Campaign.
Common Source Values (google, facebook, newsletter, twitter, etc.)
Every source value either arrives via a UTM tag or is inferred from the Referrer header. Here’s how the most common values typically appear in GA4:
| Source value | How it arrives | Typical medium pairing | Channel result |
|---|---|---|---|
google |
Organic search Referrer · Google Ads gclid auto-tag |
organic, cpc |
Organic Search · Paid Search |
bing |
Organic search Referrer | organic |
Organic Search |
facebook |
Manual UTM (paid) · fbclid auto-tag |
cpc, paid_social, social |
Paid Social · Organic Social |
linkedin / linkedin.com |
Manual UTM · Referrer | social, cpc |
Organic Social · Paid Social |
twitter / t.co |
Manual UTM · Referrer (shortener) | social, referral |
Organic Social · Referral |
newsletter |
Manual UTM in email links | email |
|
(direct) |
No UTM, no Referrer | (none) |
Direct |
partner-blog.com |
Inferred from Referrer (no UTM) | referral |
Referral |
Notice that google appears twice: once as organic search, once as paid. The same source value pairs with different mediums to produce different channels. That’s why the source/medium pair is what reports actually key on, never source alone.
Source/Medium Pair: How GA4 Reads It Together
GA4 stores Source and Medium as two separate dimensions, but every acquisition report displays them together as source / medium: for example google / organic or newsletter / email. This pairing is the unit of channel classification.
The pair is what GA4 runs through its Default Channel Group rules. The medium tells GA4 the broad bucket (Email, Paid Search, Organic Social), and the source disambiguates within that bucket. google / cpc becomes Paid Search; facebook / cpc becomes Paid Social. Same medium, different channels, because the source matters.
The pair attaches to the session at session_start and stays put. Every event in the session (pageviews, scroll, clicks, conversions) inherits the same source/medium values. That’s how GA4 connects a Tuesday newsletter click to a Friday purchase: both events share session_source = newsletter.
Auto-Tagged GCLID vs Manual UTM Source
Google Ads, Microsoft Ads, and Facebook Ads add their own click identifiers to landing-page URLs automatically. These override or replace manual UTM values:
gclid(Google Ads): When auto-tagging is enabled (the default), every Google Ads click appends?gclid=...to the destination URL. GA4 reads the gclid, calls back to Google Ads, and populates source asgoogleand medium ascpc(orcpvfor video). Manual UTMs on the same URL are ignored.fbclid(Facebook): Facebook auto-appendsfbclidto outbound link clicks. GA4 doesn’t natively decode it; without manual UTMs, traffic falls intofacebook.com / referralinstead of paid social.msclkid(Microsoft Ads): Same pattern as gclid. Source becomesbingand medium becomescpc.
The practical rule: trust auto-tagging for Google Ads and Microsoft Ads; manually tag everything else with UTMs. For Facebook campaigns, always add utm_source=facebook&utm_medium=cpc (or paid_social) so GA4 doesn’t misclassify paid clicks as organic referrals.
Tracking Source in GA4 Acquisition Reports
GA4 exposes Source across multiple report surfaces, each scoped slightly differently:
- Traffic Acquisition (Reports → Acquisition → Traffic acquisition): uses
session_source / session_medium. This is the workhorse channel report. One row per source/medium pair, columns for sessions, engaged sessions, conversions, revenue. - User Acquisition (Reports → Acquisition → User acquisition): uses
first_user_source / first_user_medium. Locked to the value at the user’s first visit and never changes. This is your “how do we discover new users” report. - Explorations: every source dimension is available:
session_source,first_user_source, plus the event-scopedsourcefor attribution analysis. Pick the scope that matches your question. - Real-time: uses session source and shows the value as soon as session_start fires.
- Attribution (Advertising → Attribution): applies the chosen attribution model to credit conversions across multiple sources in the user’s path.
For self-serve dashboarding outside GA4 itself, source data flows into Looker Studio via the GA4 connector and into BigQuery via the daily export, both expose every source dimension as a queryable field.
Default Channel Group: How Source Maps to Channels
GA4’s Default Channel Group is a set of rules that turns the source/medium pair into a human-readable channel name. The medium drives the broad bucket; the source can promote or demote a visit between buckets. A simplified view of the rules:
- Direct: source is
(direct)AND medium is(none)or(not set). - Organic Search: source matches a known search engine list (google, bing, duckduckgo, yandex…) AND medium is
organic. - Paid Search: source matches a search engine AND medium matches
cpc,ppc, orpaidsearch. - Organic Social: source matches a known social network (facebook, twitter, linkedin, reddit…) AND medium is
social,social-network, orsm. - Paid Social: source matches a social network AND medium matches
cpc,cpm,paid_social, orpaidsocial. - Email: medium is exactly
email. Any source. - Affiliates: medium is
affiliate. Any source. - Referral: fallback when source is set (from Referrer or UTM) but the medium doesn’t match any of the rules above.
- Unassigned: source/medium pair doesn’t match any rule. The dreaded “(other)” channel, usually caused by typos or non-standard medium values.
The lesson: the medium drives the bucket, but the source must use a recognized name to land in the right one. fb instead of facebook demotes paid social to Referral; g instead of google demotes organic search to Referral. Stick to the canonical source names listed in Google’s channel rules documentation.
Common Source Tagging Mistakes (case sensitivity, multiple values, blank)
Most “source problems” trace back to one of these patterns:
- Case-sensitivity drift.
Facebook,facebook, andFACEBOOKare three different sources to GA4. The Default Channel Group only matches lowercase canonical names, soFacebookfalls into Referral instead of Organic/Paid Social. Standardize on lowercase across every team. - Brand variations.
fb,facebook,facebook.com,facebook-ads,meta, all referring to the same platform but creating five separate rows. Pick one canonical value per platform and document it. - Blank or missing source with a medium set. A URL with
?utm_medium=emailbut noutm_sourcegenerates source(not set). The session falls into Unassigned channel. Always tag both fields together. - Self-referrals (your own domain as source). Cross-subdomain navigation without proper cross-domain configuration can write your own domain into the Source dimension. Configure your domain list in GA4 Admin → Data Streams → Configure tag settings → List unwanted referrals.
- Tagging internal links with UTMs. A button on your homepage with
?utm_source=hero&utm_medium=internalstarts a brand-new session and overwrites the visitor’s actual acquisition. UTMs are for external promos only, never internal navigation. - Source / referrer mismatches. When auto-tagging fires alongside manual UTMs (e.g., gclid + utm_source), you can end up with conflicting attributions. Let auto-tagging win for Google/Microsoft Ads; manually tag only platforms that don’t auto-tag.
Source Taxonomy: Building a Consistent System
A source taxonomy is a documented list of approved utm_source values, organized by category, that every team uses when building tagged links. Think of it as a controlled vocabulary: you can’t invent a new source on the fly, you pick from the dictionary.
A workable taxonomy has four columns:
- Category: search engine, social network, email program, partner, paid platform, affiliate.
- Approved source value: the canonical lowercase string.
google,facebook,newsletter,partner-techcrunch. - Default medium pairing: what medium typically goes with this source.
- Notes: when to use it, when not to. Edge cases. Owner team.
Maintain the taxonomy in a shared spreadsheet or wiki page. When someone needs a new source (say, a new podcast sponsorship), they add it to the dictionary first, then build the link. The discipline is what keeps reports clean across 50+ campaigns per quarter.
Pair the taxonomy with a UTM builder tool that validates input against the dictionary. Google’s Campaign URL Builder is a baseline; our own UTM Builder enforces lowercase and prevents typos. The combination (dictionary plus enforced builder) is the difference between trustworthy acquisition reports and the “fix the UTMs” cleanup project that consumes a quarter.
Frequently Asked Questions
What is the difference between source and medium in GA4?
Source is the specific publisher or platform that sent the click: newsletter, facebook, google. Medium is the channel category: email, social, cpc, organic. Source is granular; medium is the bucket. GA4 displays them together as source / medium (for example newsletter / email) and uses the pair to assign a Default Channel Group.
Why does my source show as (direct)?
Source (direct) means GA4 found neither a utm_source parameter nor a Referrer header. Common causes: typed URL or bookmark, app open, HTTPS-to-HTTP transition that strips Referer, ad-blocker stripping the header, or a redirect that drops UTM tags. To fix, audit your redirects and ensure all external promo links are properly tagged with utm_source.
Are source values case-sensitive in GA4?
Yes. Facebook, facebook, and FACEBOOK create three separate rows. Worse, only the lowercase canonical names match the Default Channel Group rules, so Facebook falls into Referral instead of Social. Standardise on lowercase across every team, every tool, every campaign.
How does GA4 determine source when there’s no UTM tag?
GA4 follows a strict priority order. First it checks for utm_source or click identifiers (gclid, msclkid). If neither is present, it reads the browser’s Referrer header to identify the previous domain. If the Referer matches a known search engine, source becomes the engine name (google, bing) and medium becomes organic. If the Referrer is a regular site, source becomes the domain and medium becomes referral. With no Referrer at all, source becomes (direct).
What’s the difference between session source and first user source?
session_source is the source that started the current visit, it can be different on every session a user has. first_user_source is locked to the source from the user’s very first visit and never changes. Use session source for channel performance reports; use first user source to understand which channels acquire new users.
Should I use lowercase or uppercase for utm_source values?
Always lowercase. GA4’s Default Channel Group rules match against lowercase canonical strings: google, facebook, newsletter. Any deviation (Google, FaceBook) misses the rule and the visit lands in Referral or Unassigned instead of the right channel. Lowercase is non-negotiable.
Can I change source values after data is collected?
Not retroactively in standard GA4. Historical session_source values are immutable. You have two forward-looking options: (1) configure GA4 channel groups (Admin → Data Display → Channel groups) to remap odd source values into the right channel for new sessions, or (2) export raw data to BigQuery and write SQL views that normalize sources at query time. For ongoing cleanliness, fix the tagging at the source, pun intended.
Related Terms
- UTM parameters: the five tags (
utm_source,utm_medium,utm_campaign,utm_content,utm_term) that make traffic self-identifying - Campaign: the marketing initiative a tagged link belongs to
- Referral: fallback channel for external clicks without UTMs
- Referrer: the HTTP header GA4 reads when no UTM is present
- Direct: visits with no UTM and no Referrer
- Organic search: search-engine clicks attributed via Referrer
- Attribution: the broader model that credits conversions across sources
- Attribution model: first-touch, last-touch, data-driven, and other crediting rules
- Event: the GA4 hit type where session_source is first written
- Conversion: the outcome that source ultimately drives credit toward
- Looker Studio: visualizes source data via the GA4 connector
- BigQuery: exposes raw source values for SQL-based analysis
Bottom Line
Source is the GA4 dimension that names who sent the visitor: the publisher, platform, or referring domain. It pairs with medium to form the source/medium classifier that drives every acquisition report and every Default Channel Group assignment. Tag every external link with utm_source, use lowercase canonical names from a documented taxonomy, never tag internal links, and let auto-tagging handle Google and Microsoft Ads. Get those four habits right and your acquisition data will tell the truth: every campaign, every channel, every conversion.