Skip to content

How much direct traffic is normal for ecommerce?

There is no official normal share for direct traffic. Google's help defines Direct but gives no healthy range. Your share is usually fine if it holds steady and shrinks once you tag your links. Compare it with your own history, in one report.

By , Founder & CEOUpdated 6 min read

Run the numbers for your store: the free UTM coverage calculator.

There is no official normal share. Google's help explains what lands in Direct, but it gives no healthy range, and neither does GA4's benchmarking help. A Direct share is usually fine if it holds steady and shrinks once you tag your links. So judge it against your own history, in one report, not against another store.

What one store's data shows

The usual answer is a number: some share of traffic that every shop should land near. Google's help pages on Direct do not give one. One store's export shows why a borrowed figure would travel badly anyway.

One store's anonymised GA4 export, 1 January 2024 to 21 August 2026. It holds shares of revenue only: no ad spend, no order counts.

What the export showsShare of revenueSource cell
Direct, in last click, first click and touched views57.7%Channels sheet, Direct row
Journeys with 1 touch (0.5 days to buy)79.5%Journeys sheet, 1 touch row
Paid Social, in all three views0.0%Channels sheet, Paid Social row
AI Assistant, in all three views0.0%Channels sheet, AI Assistant row

So is 57.7% of revenue in Direct normal for this store? On the Channels sheet the share stays put under last click, first click and touched views. It is a share of revenue from the paths export. A share of sessions from another GA4 report is a different animal, so never set one against the other.

The Journeys sheet shows where that share comes from. Journeys with 1 touch hold 79.5% of revenue on the Journeys sheet, with 0.5 days to buy. When most money arrives in one quick visit, every rule gives the same answer, because there is only one touch to credit. If that visit carried no source, it is Direct under all of them.

Then the two empty rows. On the Channels sheet, Paid Social and AI Assistant hold 0.0% of revenue in all three views. Either the store had no such traffic, or those visits were filed under another row. Visits that arrive with no tags and no referrer usually land in Direct. The export cannot say which happened, and that doubt sits inside the 57.7%.

Nor does it show a trend: the export is one block of about 137 weeks, with one share per row. Whether Direct grew, shrank or held still, the file cannot say. Yet that is the comparison that tells you what normal means for you.

Why does one normal number mislead?

Because GA4 gives you at least three Direct numbers, and each follows its own rules.

  • Sessions. The Traffic acquisition report sorts sessions by Session default channel grouping. Google's note on the two acquisition reports says sessions follow the non-direct last click model, with a 90-day lookback by default. So a buyer who returns by typing your address inside that window keeps the earlier source.
  • New users. The User acquisition report uses First user default channel group instead. Each user keeps the channel that first brought them, however often they come back.
  • Attributed revenue. In the Advertising reports, Direct gets credit only when every visit on the path was direct. Google's attribution help says all its models exclude direct visits otherwise.

Google's own example shows the gap. A visitor first arrives from Google, then comes back 10 more times by typing the address. If those returns fall inside the lookback window, Traffic acquisition puts all 11 sessions in the Google row. If they fall outside it, 10 of them land in Direct. User acquisition keeps all 11 in the Google row either way.

Shopify adds a fourth number. Its marketing reports reset a visitor's first interaction after 30 days without a purchase. Shopify also changed how it measures sessions from 21 to 23 September 2026, so a session share from before then is not like for like.

GA4's benchmarking does not settle it either. Google's benchmarking help sets your metrics against a peer group's median and its 25th to 75th percentile range. Its examples include New User Rate, Bounce Rate and ARPU. It names no normal share for Direct.

So "normal" bundles a report, a scope, a window and a tool. Quote a share without all four and it means very little.

What can your Direct share not tell you?

It cannot tell a loyal buyer from a lost tag. A typed address, an untagged email link and a visitor with an ad blocker all arrive with no source. Google's help on Direct lists each of these among the causes.

It cannot say whether your ads sent those people. GA4 recognises a user by the reporting identity you choose and their browser or device. An ad seen on a phone and a purchase typed in on a laptop can look like two strangers.

And it cannot rank you against other shops. Two stores with the same share can differ in tagging, repeat cycles and lookback settings. The number only means something next to your own past, measured the same way.

What to do this week

  1. Pick one report and write down its Direct share. In GA4, open Reports > Acquisition > Traffic acquisition, choose the Last 12 months range, and divide Direct sessions by all sessions. Pass: one number, with its report and date range written beside it. Fail: you are comparing a session share with someone's revenue share.
  2. Compare it with the year before. In the date picker, click Compare and choose Previous year. Pass: the share is close to last year's, or lower after a tagging fix. Fail: it jumped with no campaign behind it, so check your newest email, app and QR code links for missing tags.
  3. Set your own normal band. Switch the line chart to month view and note Direct's share for each month of that year. Pass: you know your lowest and highest month, and next month lands between them. Fail: a month falls outside the band, so look for a tracking or site change that week.

Check the homework. Your GA4 Attribution paths export already holds the evidence. Causality Engine reads that one file and shows what each channel caused next to what last-click gave it, in 1 to 2 minutes, for €99 once (excluding VAT), refundable within 30 days. Check the homework

Sources, 1 October 2026: [GA4] Understand (direct) / (none) traffic (Google); User acquisition report vs. Traffic acquisition report (Google); Scopes of traffic-source dimensions (Google); Get started with attribution (Google); Benchmarking (Google); [GA4] Traffic acquisition report (Google); Change and compare date ranges in reports (Google); Marketing reports (Shopify); Changes to sessions and conversion rate in Shopify Analytics (Shopify)

Frequently asked questions

  • Is it bad if Direct brings in half my revenue?
    Not by itself. It usually means many buyers arrived with no source GA4 could read, from typed addresses to untagged links. Check that the share holds steady, then tag your emails and QR codes. If Direct shrinks afterwards, part of it was lost tags.
  • Does direct traffic grow as a store gets older?
    It can. A regular who returns by typing your address after the lookback window, 90 days by default, counts as Direct in session reports. More regulars buying less often can raise your Direct share with no tracking fault at all.
  • Can I compare my direct share with another store's?
    Only if both use the same report, scope, lookback window and tagging habits, which rarely happens. GA4's benchmarking sets metrics like bounce rate against a peer group instead. For Direct, your own trend is the fairer yardstick.

Go deeper: Causal attribution, explained.

Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.

Keep reading

Terms in this article

Browse the full glossary

Your platforms guess.
We run the math.

Upload a GA4 export and see what each channel caused, next to last-click, in 1–2 minutes. The read is yours to keep.

Free, in your browser: your file is not uploaded. The full read is €99, refundable within 30 days. Prices exclude VAT.
Or book a 30-min call.