How to check if direct traffic is returning customers
Build a GA4 free-form exploration with Session default channel group, Total purchasers and First time purchasers. Then set the Direct row's repeat share against Shopify's New vs returning customers report for the same dates.
By Joris van Huët, Founder & CEOUpdated 7 min read
Run the numbers for your store: the free UTM coverage calculator.
You usually need two reports. In GA4, split the Direct row's buyers into first-time and repeat purchasers with a free-form exploration. In Shopify, count returning customers by order history for the same dates. If Shopify finds far more repeat buyers than GA4 does, read GA4's split as a floor.
Step by step
When you first create an exploration, only you can see it; sharing it needs the Analyst role or above. Use one date range in both tools, so GA4 and Shopify count the same weeks.
- Open a blank free-form exploration. In GA4, click Explore in the left navigation. Under Start a new exploration, select the Free form template. It opens as a table you fill from the Variables panel. Menu path: Explore > Start a new exploration > Free form.
- Import the channel dimension. In Variables, click the plus next to Dimensions, find Session default channel group and click Import. Double-click it to drop it into Rows. Google defines it as the channel group tied to the start of a session. Menu path: Variables > Dimensions > + > Import, then Rows.
- Import four metrics into Values. Add Total purchasers, First time purchasers, Returning users and New users the same way, then drag each into Values. Google counts first time purchasers as users who made their first purchase in the selected time frame. Menu path: Variables > Metrics > + > Import, then Values.
- Pick a short, recent date range. At the top of Variables, click the date range and choose Last 28 days. Explorations only reach back as far as your data retention, which is 2 months by default. A buyer whose first and second orders both fall inside the range still counts as a first-time purchaser. Menu path: Variables > date range > Last 28 days > OK.
- Work out Direct's repeat share. In the Direct row, subtract First time purchasers from Total purchasers. The rest had bought before the range began, as far as GA4 can tell. Divide by Total purchasers, then repeat the sum for the totals row. Menu path: the Direct row and the totals row of the exploration table.
- Count returning customers in Shopify. From your Shopify admin, go to Analytics > Reports, click the Category filter and choose Customers. Open New vs returning customers and set the same dates. Shopify calls a customer returning when their order history already includes an order. Menu path: Analytics > Reports > Category filter > Customers > New vs returning customers.
- Set the two store-wide shares side by side. Compare Shopify's returning share with the repeat share from GA4's totals row. A wide gap means GA4 is losing regulars to expired cookies and new devices. Read Direct's repeat share as a floor, not a final figure. Menu path: GA4's totals row next to Shopify's report, same dates.
- Split the Direct row by browser. Import the Browser dimension and drag it into Columns. If Direct's first-time purchasers cluster under Safari, many are probably regulars whose cookie ran out between orders. Menu path: Variables > Dimensions > + > Browser > Import, then Columns.
A worked example
For illustration, say the Direct row shows 400 total purchasers and 280 first time purchasers for the last 28 days. In this worked example, 120 of Direct's buyers had bought before, a repeat share of 30%.
For illustration, the two rows that matter look like this:
| Row | Total purchasers | First time purchasers | Repeat share |
|---|---|---|---|
| Direct | 400 | 280 | 30% |
| Totals | 1,000 | 750 | 25% |
Say the totals row reads 1,000 purchasers, of whom 750 are first-timers: a repeat share of 25% across the whole shop. Suppose Shopify's New vs returning customers report shows 35% returning for the same dates.
In this worked example, GA4 sees ten points fewer repeat buyers than Shopify does. The likeliest reason is regulars who came back on a fresh cookie or a new device, so GA4 filed them as first-timers. If the same gap holds inside Direct, its true repeat share sits above 30%.
Now add Browser to Columns, as in step 8. For illustration, say 200 of Direct's 280 first-timers bought on Safari. In this worked example, that is where most of the hidden regulars probably sit, because a week away is enough to lose the cookie.
What you do next depends on where that lands. A repeat share well under half says most of Direct's buyers are new to you, with a source that got lost. Then tagging comes before any budget call. A share well over half says Direct is mostly your regulars. Then protect whatever brings them back, and test it.
Why not answer this from a paths export? Look at one store's. On the Channels sheet, Direct holds 57.7% of revenue in last click, first click and touched views alike. That says how much revenue Direct carries in that store. It cannot say who had bought before: the export holds shares of revenue only, with no purchaser or customer column.
What should you check when the numbers look wrong?
- Nearly every Direct buyer is a first-time purchaser. GA4 may simply have forgotten them. Google's help says browsers cap the cookie GA4 relies on at 7 days for Safari when a user does not return. Shoppers who reorder monthly on Safari can arrive as strangers each time.
- The exploration shows a yellow icon. Google uses it to flag sampled or thresholded data. Widen the date range within your retention, or drop any demographic dimension you added.
- Older months come back empty. Explorations follow your data retention setting, not your standard reports. Raise it in Admin, under Data collection and modification, at Data Retention. Data already deleted does not come back.
- Direct holds very few purchasers at all. That is often the session rule at work, not a fault. GA4 credits a direct entrance to the campaign it already holds for that user. Many regulars' visits sit in the Email or Paid Search rows instead.
- Shopify counts far more buyers than GA4. Some orders never reach GA4 as a purchase, so raw counts will differ. Compare shares, never raw counts, between the two tools.
- Revenue is blank but purchasers are not. Google's help says the purchase event needs both a value and a currency, or revenue stays empty. The purchaser split still works while you fix it.
What to do this week
- Make the split a monthly habit. Save the exploration with the Last 28 days preset, so it always opens on the latest four weeks. Pass: Direct's repeat share holds steady or climbs from month to month. Fail: it drops sharply, so look for a new untagged link or a tracking change that week.
- Give explorations more history. In GA4, go to Admin and, under Data collection and modification, click Data Retention. Pass: user-level data is kept for 14 months. Fail: it is set to 2 months, so the exploration cannot see last quarter; switch to 14 months and save.
- Log the Shopify gap beside it. Each month, write Shopify's returning share next to GA4's store-wide repeat share. Pass: the gap stays about the same size, so your reading of Direct holds. Fail: the gap widens, so GA4 is losing more regulars; check your consent banner and reporting identity before you trust the split.
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: Free-form exploration (Google); Scopes of traffic-source dimensions (Google); Tech details report (Google); Get started with Explorations (Google); Analytics dimensions and metrics (Google); Data retention (Google); Cookie usage on websites (Google); About data thresholds (Google); Traffic acquisition report (Google); Customers reports (Shopify)
Related answers
Frequently asked questions
Where do I find first time purchasers in GA4?
In Explore. Start a Free form exploration, import First time purchasers from the metrics list and drag it into Values. Google counts users who made their first purchase in the selected time frame. Put it beside Total purchasers and the difference is your repeat buyers.Why do Safari shoppers look like new users in GA4?
Because the cookie GA4 uses to recognise them can expire fast. Google's help says browsers limit first-party cookies to 7 days for Safari when a user does not return. A Safari shopper who comes back weeks later can count as a new user.Why does Direct show purchasers but no revenue in GA4?
Usually because the purchase event lacks a value or a currency. Google's help says both parameters are needed, or purchase data stays out of the Total revenue metric. Purchaser counts still work, so the repeat split stands while you fix the event.
Go deeper: Causal attribution, explained.
Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.
Keep reading
Terms in this article
- AnalyticsAnalytics is the systematic computational analysis of data. It reveals customer behavior and measures campaign performance.
- AttributionAttribution identifies user actions that contribute to a desired outcome and assigns value to each. It reveals which marketing touchpoints drive conversions.
- CausalityCausality is the relationship where one event directly causes another, essential for identifying specific actions that drive desired outcomes in marketing.
- Direct TrafficDirect Traffic refers to website visitors who arrive by typing the URL directly into their browser or through bookmarks. They do not come from search engines or referrals.
- MetricsMetrics are quantifiable measures that track and assess business process status. They evaluate campaign performance and inform attribution analysis.
- RevenueRevenue is the total income generated by the sale of goods or services related to a company's primary operations.
- SessionA Session is a group of user interactions with your website within a given timeframe. It can include multiple page views, events, and transactions.
- ShopifyShopify is an ecommerce platform for creating online stores and selling products. Attribution modeling shows which marketing channels drive traffic and conversions within Shopify.