Measuring ecommerce SEO ROI in GA4 (without lying to yourself)
Table of Contents
“Is the SEO working?” should be answerable with a number tied to revenue. For a lot of ecommerce stores, it isn’t — not because the SEO isn’t working, but because the analytics setup underneath it can’t actually tell organic traffic apart from several other sources it’s silently being lumped in with.
Here’s what to fix first, and what a genuinely trustworthy report looks like once it’s fixed.
The direct-traffic inflation problem #
This is the single most common way ecommerce SEO reporting quietly lies to itself. GA4 attributes a visit to “Direct” traffic whenever it can’t confidently identify where the visitor came from — no referrer data, no UTM parameters, no recognized search-engine signature. In practice, a meaningful share of what gets bucketed as “Direct” is actually organic search traffic that lost its attribution data somewhere along the way: a bookmarked product page, a link clicked from within a native app or messaging client that strips referrer headers, or a session that started on a search click days before converting.
The result: SEO’s real contribution gets systematically understated, “Direct” gets systematically overstated, and a genuinely working SEO campaign can look flat or declining in a dashboard that’s actually just misattributing its own traffic.
Check this first
Look at "Direct" sessions landing on deep, specific URLs — a product page three levels into the site structure is a very unlikely page for someone to type from memory or have bookmarked. A high volume of "Direct" traffic to pages like that is a strong signal of misattributed organic sessions, not genuine direct visits.
Fixing attribution before trusting any ROI number #
Step 1
Confirm ecommerce purchase events are actually firing correctly. This sounds basic, but a mis-configured `purchase` event — missing value, wrong currency, firing twice on a page refresh — invalidates every revenue number downstream of it, no matter how good the attribution model is.
Step 2
Use GA4's data-driven attribution model, not last-click, for any multi-touch reporting. Ecommerce buying journeys frequently involve an initial organic research visit days or weeks before a direct-navigation purchase — last-click attribution gives that entire journey's credit to whatever channel happened to close it, usually Direct or Paid.
Step 3
Cross-reference GA4 against Search Console for organic click volume and query-level data — Search Console's click data is a genuinely independent source, useful for sanity-checking whether GA4's organic sessions look roughly consistent with what Google itself reports sending.
Step 4
Segment revenue by landing page, not just by channel — this is what actually connects specific SEO work (a rewritten category page, a new guide) to specific revenue, rather than a single blended "organic revenue" number that can't be traced back to any particular piece of work.
The ROI metric that actually matters #
Rankings and organic sessions are inputs. Organic revenue per session, tracked over time and segmented by page type (category vs. product vs. blog), is the output that actually answers “is this working” in terms a founder or Head of Ecommerce can act on — because it’s the same metric every other channel gets judged by, which makes SEO comparable to paid acquisition instead of existing in its own separate, harder-to-defend reporting silo.
This is the same underlying point covered from the strategy side in ecommerce SEO and CRO — accurate GA4 tracking is the precondition for either discipline being measurable at all, and neither traffic growth nor conversion-rate improvement means anything if the tracking underneath both is unreliable.
What a trustworthy monthly report actually contains #
Not this
A slide of rising keyword rankings and organic session counts, with no reference to revenue, conversion rate, or which specific pages the traffic is landing on.
Do this
Organic revenue and revenue-per-session, broken down by page type, with rankings and traffic shown as the supporting inputs that explain *why* revenue moved, not as the headline metric itself.
If a report — from an in-house team, a freelancer, or an agency — can’t produce the second version, that’s worth asking about directly. See ecommerce SEO agency vs. freelancer for the exact question to ask about reporting before you commit to either.
Fixing GA4 attribution is usually the first thing I check in a new ecommerce SEO engagement — there’s no point optimising toward numbers that don’t reflect reality.
Related reading: Ecommerce SEO and CRO · Ecommerce SEO agency vs. freelancer · Conversion optimisation