Glossary

What Counts as Referral Traffic, and What Quietly Does Not

Taras Shynkarenko
Taras Shynkarenko
•Updated: •9 min read
What Counts as Referral Traffic, and What Quietly Does NotWhat Counts as Referral Traffic, and What Quietly Does Not

TL;DR, Quick Answer

9 min read

GA4 files a session as Referral when the medium is "referral", "app" or "link", so the decision is made on a medium value, not on the referring URL. Matomo decides on the referrer host, assigning REFERRER_TYPE_WEBSITE only after AI assistant, campaign, direct entry, search engine and social network checks all fail. The Referer header carries origin, path and query but never the fragment or credentials, and the default policy in shipping browsers trims cross-origin referrers to the origin and sends nothing on an HTTPS to HTTP hop. Everything that loses its referrer lands in direct.

What is referral traffic?

Analytics tools file a visit as referral traffic when the request arrives carrying a referring hostname that belongs to somebody else's site and no campaign tag that outranks it. Google's own description of the channel is narrow: "Referral is the channel by which users arrive at your site via non-ad links on other sites/apps (e.g., blogs, news sites)." The category sounds obvious until you read how the two most widely deployed tools actually decide it, because they decide it on different inputs and reach different answers about the same click.

What does the Referer header carry, and what does it drop?

The Referer header carries the address of the page that held the link, minus several parts that never travel. MDN describes the payload: the header "contains the absolute or partial address from which a resource has been requested", and "can contain an origin, path, and querystring, and may not contain URL fragments (i.e., #section) or username:password information." The header name is a spelling mistake preserved for compatibility, as MDN notes: "The header name 'referer' is actually a misspelling of the word 'referrer'."

The W3C Referrer Policy specification states the stripping as a requirement. "Certain portions of URLs must not be included when sending a URL as the value of a Referer header: a URLs fragment, username, and password components must be stripped from the URL before it's sent out." A second rule cuts far deeper. The stripping algorithm takes an origin-only flag, and when it is set, "the algorithm will additionally remove the URL's path and query components, leaving only the scheme, host, and port."

That origin-only flag is the normal case now, which is where the specification contradicts itself across two live documents. The version published at w3.org/TR/referrer-policy/ is a Candidate Recommendation dated 26 January 2017, and it says of no-referrer-when-downgrade: "This is a user agent's default behavior, if no policy is otherwise specified." The Editor's Draft dated 20 March 2026 says the opposite: "The default referrer policy is 'strict-origin-when-cross-origin'." Browsers follow the draft, not the published version. Chrome announced the switch for version 85, describing it as "Chrome plans to gradually enable strict-origin-when-cross-origin as the default policy in 85", and MDN documents strict-origin-when-cross-origin as "the default policy if no policy is specified, or if the provided value is invalid."

Under that default, MDN spells out what your analytics receives: "Send the origin, path, and query string when performing a same-origin request. For cross-origin requests send the origin (only) when the protocol security level stays same (HTTPS to HTTPS). Don't send the Referer header to less secure destinations (HTTPS to HTTP)." So for referral traffic you get the hostname of the referring site and nothing else. The article that linked to you, the search term, the campaign the publisher used internally: all gone before the request reaches your server. If you want the article path, the linking site has to set a looser policy, and most will not.

A person reviewing website traffic data on a laptop, illustrating how GA4 sorts sessions into channels.

How the default referrer policy shifted
1
26 January 2017. The published W3C Candidate Recommendation names no-referrer-when-downgrade as the default, sending path and query on every HTTPS to HTTPS request.
2
Chrome 85. Chrome switches its default to strict-origin-when-cross-origin, trimming cross-origin referrers to the origin.
3
20 March 2026. The W3C Editor's Draft catches up, naming strict-origin-when-cross-origin as the default policy.
The spec and the shipping browsers disagreed for years, and the browsers moved first.

How does GA4 decide a session is referral?

GA4 decides on the medium, not on the referring URL. Its default channel group rule is one line: Referral matches when Medium is one of ("referral", "app", or "link"). Nothing in that rule mentions a hostname. GA4 populates the medium itself when an unrecognised referring site sends a visit, which is why untagged links from blogs land there, but a link you tagged with utm_medium=email from that same blog leaves the Referral bucket entirely.

The rule list is evaluated as an ordered set, and Referral sits low in it. Several rules match first:

GA4 channelThe rule Google publishesEffect on a link from another site
Organic SocialSource matches a regex list of social sites OR Medium is one of ("social", "social-network", "social-media", "sm", "social network", "social media")An untagged link from a recognised social site never reaches Referral
Organic SearchSource matches a list of search sites listed under "SOURCE_CATEGORY_SEARCH" OR Medium exactly matches organicIncludes Google's AI Overviews and AI Mode, per Google's own channel description
AI AssistantThe medium exactly matches "ai-assistant""The medium is set to 'ai-assistant' and the campaign is set to '(ai-assistant)' if the referrer matches a list of AI Assistants"
ReferralMedium is one of ("referral", "app", or "link")The fallback for referring sites on none of the lists
DirectSource exactly matches "(direct)" AND Medium is one of ("(not set)", "(none)")No referrer and no campaign parameters survived

The AI Assistant row is recent and it carves a slice out of what used to be Referral. Google describes the channel as covering arrivals "from sources like ChatGPT, Gemini, Deepseek, Copilot, or Grok", and states that it "excludes Google's AI Overviews and AI Mode", which stay in Organic Search. If you are trying to size that slice rather than define it, measuring the quality of ChatGPT referral traffic and growing referrals from AI search both go at it directly.

GA4 also removes referrals on purpose in three cases. It ignores self-referrals, since "Analytics will not identify traffic as referral when: The referring website matched the same domain of the current page or any of its subdomains." It ignores cross-domain hops carrying the _gl linker parameter. And it honours an explicit override: configuring an unwanted referral makes Analytics append "the ignore_referrer parameter with a value of true to every event that matches the conditions". Watch that last one, because Google documents a trap in it: "Setting the ignore_referrer parameter to any value (for example: true, false, yes, no, 1, 0) will result in the same behavior, the referrer will be ignored for attribution."

How does Matomo decide a visit is referral?

Matomo decides on the referrer host, and it has no channel called Referral at all. The type is REFERRER_TYPE_WEBSITE, one of six integer constants declared in core/Common.php:

ConstantValue
REFERRER_TYPE_DIRECT_ENTRY1
REFERRER_TYPE_SEARCH_ENGINE2
REFERRER_TYPE_WEBSITE3
REFERRER_TYPE_CAMPAIGN6
REFERRER_TYPE_SOCIAL_NETWORK7
REFERRER_TYPE_AI_ASSISTANT8

The detection order lives in plugins/Referrers/Columns/Base.php, and it runs the tests in a fixed sequence: AI assistant first, then campaign, then direct entry, search engine and social network. The code comments its own priority: "Try to detect AI first, as campaign parameters should be ignored in that case." Only when every one of those fails and a referrer host is still present does Matomo assign REFERRER_TYPE_WEBSITE, lowercase the host, and use it as the referrer name. Where the referring path is something other than /, Matomo appends the path to that name, so the report row is a host plus path rather than a bare domain.

Matomo's direct entry test is the one that catches self-referrals. If the referrer host matches any URL registered for that site, or matches the current host, the visit is REFERRER_TYPE_DIRECT_ENTRY rather than a website referrer.

Where do GA4 and Matomo disagree?

They disagree because one reads a medium string and the other reads a hostname. A link from a small industry blog produces the same row in both tools. Past that, the answers diverge:

SituationGA4Matomo
Untagged link from a recognised social siteOrganic Social, since the source rule fires before the Referral ruleREFERRER_TYPE_SOCIAL_NETWORK, value 7
Link from an AI assistantAI Assistant, with medium forced to ai-assistant and campaign to (ai-assistant)REFERRER_TYPE_AI_ASSISTANT, value 8
Referring link that also carries utm_medium=emailEmail, since the rule set reads the mediumCampaign, value 6, because the campaign test runs before the website fallback
Referrer from one of your own registered domainsNot a referral, self-referral detection removes itREFERRER_TYPE_DIRECT_ENTRY, value 1
Referrer host present, on none of the listsReferralREFERRER_TYPE_WEBSITE, value 3, named host plus path

The practical consequence is that a tagged link is read by the tag and an untagged link is read by the header. Once you add utm_medium to a link from a partner site, you have taken that click out of the referral report in both tools and put it wherever the medium points. Which parameter wins that argument is settled by the GA4 channel rules on utm_source against utm_medium.

Flowsery
Flowsery

Start Your 14-Day Free Trial

Real-time dashboard

Goal tracking

Cookie-free tracking

A developer's desk with two monitors, referencing the technical causes behind traffic landing in the direct bucket.

Why does referral traffic end up in direct?

Referral traffic lands in direct whenever the referrer is stripped before your server sees it, because the direct bucket is defined by absence. GA4's rule says so: Direct requires Source exactly matches "(direct)" AND Medium is one of ("(not set)", "(none)"). That is a rule about missing data, which sits awkwardly beside Google's own prose description of the channel, "Direct is the channel by which users arrive at your site/app via a saved link or by entering your URL." The rule and the description do not describe the same population.

Four common cases strip the header. A link from an HTTPS page to an HTTP page sends no Referer at all under the default policy. A site that sets Referrer-Policy: no-referrer sends none by definition, since "sent requests do not include any referrer information." Native apps, desktop mail clients and messaging clients open links without a referring document. And documents such as PDFs open outside a browsing context entirely. None of that is dark traffic in any mysterious sense; it is a header that was never populated. The full list of causes is in why direct traffic is the bucket for everything analytics could not attribute.

The fix is tagging, not reinterpretation. A campaign parameter survives every referrer policy because it rides in the URL rather than in a header, which is why the referral report is best read as the part of your off-site traffic that nobody tagged.

Frequently asked questions

No. A backlink is a link that exists; referral traffic is a click on one that also preserved its referrer. A link from an HTTPS page to an HTTP page, or from a site sending Referrer-Policy: no-referrer, produces backlink value with no referral row.

Why does my referral report show only domains and no page paths?

Because the default referrer policy sends the origin only. MDN describes strict-origin-when-cross-origin as sending "the origin (only)" on cross-origin requests, which leaves the hostname and drops the path and query. Matomo will show a path when it receives one; it appends the referring path to the referrer name when that path is not /.

Does GA4 count social media as referral traffic?

Not for sites on its list. GA4's Organic Social rule matches when "Source matches a regex list of social sites", and that rule is evaluated before the Referral rule, so an untagged link from a recognised social network is filed as Organic Social.

How does GA4 classify traffic from ChatGPT?

As AI Assistant, a separate channel. Google's rule reads: "The medium is set to 'ai-assistant' and the campaign is set to '(ai-assistant)' if the referrer matches a list of AI Assistants." Matomo does the equivalent with REFERRER_TYPE_AI_ASSISTANT, value 8, and checks it before campaign parameters.

Why does my own domain appear in my referral report?

A self-referral usually means the tracker lost session continuity between pages or domains. GA4 suppresses these by rule, since it "will not identify traffic as referral when: The referring website matched the same domain of the current page or any of its subdomains", and also when the landing page carries the _gl linker parameter. Matomo classifies a referrer matching any registered URL for the site as REFERRER_TYPE_DIRECT_ENTRY instead.

Can I stop a payment provider showing up as referral traffic?

Yes, by listing it as an unwanted referral. GA4 then appends ignore_referrer=true to matching events, and Google names third-party payment processors as the leading use case. Set the parameter deliberately: Google documents that any value at all, "true, false, yes, no, 1, 0", ignores the referrer.

Does Google's AI Overviews traffic count as AI Assistant in GA4?

Google files it under Organic Search instead. GA4's Organic Search rule explicitly includes AI Overviews and AI Mode, while the AI Assistant channel is reserved for services like ChatGPT, Gemini, Deepseek, Copilot and Grok. Google's own channel description states that AI Assistant excludes AI Overviews and AI Mode.

Does Matomo have a channel called Referral the way GA4 does?

Matomo has no channel by that name. It assigns REFERRER_TYPE_WEBSITE, one of six integer constants declared in core/Common.php, only after the AI assistant, campaign, direct entry, search engine and social network checks all fail. The website type also lowercases the referrer host and appends the path when it isn't just "/".

Rarely, because those clients open links without a referring document to report. Native apps, desktop mail clients and messaging clients are among the four common cases that strip the header before your server ever sees it. Without a Referer value, GA4 and Matomo both file the visit as direct rather than referral.

Because GA4 and Matomo both let a campaign parameter outrank the referrer. GA4's channel rules read the medium value first, so utm_medium=email sends that session to Email rather than Referral even though the link came from a referring site's page. Matomo runs its campaign test before the website fallback, so the same click lands as REFERRER_TYPE_CAMPAIGN, value 6.

Was This Article Helpful?

Let us know what you think!

See us more often in Google

One click marks Flowsery as a preferred source, so our articles sit higher in your Top Stories, AI Mode, and AI Overviews.

Before you go...

Flowsery

Flowsery

Revenue-first analytics for your website

Track every visitor, source, and conversion in real time. Simple, powerful, and cookie-free.

Real-time dashboard

Goal tracking

Cookie-free tracking

Related Glossary Terms

Related Articles