The Shopify CRO audit: find the leak before you redesign anything
Every few weeks a merchant emails us some version of the same message. Traffic is fine. Ad spend is fine. Sales are not fine. What should they change? The honest answer is that we cannot know yet…
Every few weeks a merchant emails us some version of the same message. Traffic is fine. Ad spend is fine. Sales are not fine. What should they change?
The honest answer is that we cannot know yet, and neither can they. “Conversion is low” is not a diagnosis. It is a symptom with about forty possible causes, and the difference between a store that fixes it in a fortnight and a store that spends six months on a redesign is almost always whether somebody sat down and did the boring part first.
The boring part is the audit. It takes a weekend. You do not need a testing tool, a heatmap subscription or a consultant to do the first pass, and the first pass is where most of the money is.
First, stop looking at your site wide conversion rate
Your store-wide conversion rate is a vanity number. It moves when your traffic mix moves, which means a bad month of paid social can make a genuinely improving store look broken.
For context: Littledata’s benchmark of roughly 2,800 Shopify sites puts the platform average at about 1.4%, with the top 20% of stores above 3.2% and the top 10% above 4.7%. Broader ecommerce benchmarks land higher — IRP Commerce reported around 2.2% across tracked sectors in mid-2026, and Dynamic Yield’s figures sit higher still — because each one measures a different population with a different denominator.
None of that tells you what to do on Monday. Two numbers do:
- Conversion rate by device. Mobile typically converts at roughly half the desktop rate while carrying 65–75% of the traffic. If your gap is wider than that, the problem is mobile, and you can stop auditing desktop entirely.
- Conversion rate by landing page. One page is usually dragging the average down while everything else is fine.
Both live in Shopify Analytics under Reports. Pull 90 days, not 30 — you need enough volume for the segments to mean anything.
Do this now: open Analytics → Reports → Sessions by device and Sessions by landing page, set the range to 90 days, and export both to a spreadsheet. Everything below builds on that export.
Step 1: Build the funnel table
This is the single highest-value hour of the audit, and almost nobody does it.
A Shopify store has four gates between arrival and money. Write down the percentage that passes through each one:
| Stage | What it means | Rough healthy range |
|---|---|---|
| Sessions → product page view | Your homepage, collections and search are doing their job | 40–60% |
| Product view → add to cart | The product page is convincing | 8–12% |
| Add to cart → reached checkout | The cart is not creating doubt | 45–65% |
| Reached checkout → order | Checkout is not creating friction | 45–60% |
Treat those ranges as a starting point, not gospel. They shift with category, price point and traffic source — a £600 considered purchase will sit under every one of them and be perfectly healthy. What matters is not whether you hit the range. It is which of your four numbers is furthest below where the other three suggest it should be.
Because here is the thing about a funnel: a 20% improvement at the weakest gate is worth more than a 5% improvement at all four. And in almost every audit we have run, one gate is obviously, embarrassingly worse than the others, and it is never the one the merchant expected.
Shopify gives you the last three of these directly in the conversion funnel on the Analytics overview. The first one you assemble from Sessions by landing page against product page views.
Step 2: Read the drop-off before you fix it
Each gate fails for a different set of reasons. Match your weak number to this list and you have narrowed forty possible causes down to about six.
Sessions are not reaching product pages. People arrive and leave without ever seeing something to buy. Look at your homepage first — if a carousel is eating the entire first screen on mobile, your visitors are being shown a billboard when they wanted a shop. We looked at slider engagement across 400 storefronts and found most slides after the first are never seen by anyone. Then look at your collection pages, which are usually shipped as a bare product grid with no copy, no sorting logic and no reason to keep scrolling. Collection pages are the most neglected pages on most Shopify stores, and they sit exactly where this leak happens.
Product views are not becoming add-to-carts. This is a page problem, not a traffic problem. Missing sizing detail, shipping cost that cannot be answered without leaving the page, three images where you need eight, specifications buried in a paragraph. We keep a 23-point product page checklist for exactly this; run it on your three best sellers before you touch anything else.
Carts are not reaching checkout. Shipping cost is the usual answer. Baymard Institute’s research consistently finds unexpected extra costs at checkout to be the single largest actionable reason people abandon, cited by around 48% of shoppers. If your shipping is calculated at checkout and nowhere before it, you have found your leak and you did not need a heatmap to do it.
Checkout is not producing orders. Baymard’s meta-analysis of 50 studies puts the average cart abandonment rate at 70.22%, with mandatory account creation driving roughly 19% of abandonments and an over-long or complicated checkout around 18%. Their estimate is that better checkout design alone is worth an average 35.26% conversion increase. On Shopify you control less of checkout than you think, which is mostly good news — Shopify Checkout is genuinely well optimised. What you do control: whether guest checkout is enabled, whether Shop Pay and the express wallets are switched on, how many optional fields you have added, and whether your shipping rates are configured in a way that produces a nasty surprise on the final step.
Step 3: Watch twenty sessions on a phone
Analytics tells you where people leave. It cannot tell you why. For that you need to watch, and twenty recordings is enough to spot a pattern — you do not need a thousand.
Filter for mobile sessions only, on the page that your funnel table flagged. Watch them at normal speed with a notebook open. You are looking for four things:
- Rage taps. Repeated taps on something that is not a link. Usually an image people expect to zoom, or a spec that looks tappable.
- Hesitation before the button. Scrolling up and down between the price and the add-to-cart. That is an unanswered question, and it is almost always shipping, sizing or returns.
- The pinch-zoom. Someone zooming in to read means your body text is too small or your comparison table has been squashed into a horizontal scroll they did not notice.
- The back button after four seconds. Slow first paint, or the page landed them somewhere that did not match what they clicked.
You will learn more in forty minutes of this than in a month of dashboard staring. Write down every observation as a plain sentence, not a fix. “Six of twenty people scrolled back up to the price before adding to cart” is an observation. “Add a sticky price bar” is a solution, and it is too early for solutions.
Step 4: Sort by effort, not by excitement
Now you have a list. It will be around fifteen to thirty items and it will be tempting to start with the interesting one. Do not.
Sort every item into one of three buckets:
Ship it today. No test required because the current state is objectively broken. Product images at 2MB. A collection page with no description. Shipping cost that is unknowable before checkout. Out-of-stock variants that look available until tapped. A specification list that runs as a wall of prose when it should be a comparison table. Nobody needs an experiment to prove that a broken thing is worse than a working thing.
Fix and measure. Larger changes where you want before-and-after numbers but cannot run a clean split test — a rewritten collection page, a restructured product template, replacing a heavy third-party slider with a lighter one. Record the baseline, make the change, and hold everything else steady for a fortnight.
Test properly. Genuine two-way decisions where reasonable people disagree. Button copy, image order, price presentation.
That third bucket is smaller than you want it to be, and this is where most CRO advice quietly lies to people. A rough rule of thumb for a trustworthy A/B test is somewhere around 250–400 conversions per variant. At a 2% conversion rate, that is 12,500–20,000 sessions per variant, so 25,000–40,000 sessions to complete the test — and that is to detect a fairly large lift, not a subtle one. If your store does 8,000 sessions a month, a single conclusive test would take most of a year, by which point seasonality has invalidated it.
If that is your store, you are not doing A/B testing. You are doing judgement, sequential changes, and honest before-and-after measurement, and that is a completely legitimate way to run a shop. Pretending otherwise wastes months.
Step 5: Check what the page actually weighs
Speed is not a separate discipline from CRO. It is the first gate, and it fails silently — people who leave during load never appear in your behavioural data as anything other than a bounce.
Run your homepage, one collection page and your best-selling product page through PageSpeed Insights on mobile. Then compare that to your field data in Search Console, which is what Google actually uses. Lab and field disagree constantly, and the field data is the one that counts.
Two things cause most of the damage on Shopify stores: images that are larger than the space they occupy, and accumulated apps. The second is worse than people expect. We wrote a 30-minute app bloat audit for this — the short version is that uninstalling an app frequently leaves its scripts behind, so the tool you removed last year may still be loading on every page today. If you want the metric-by-metric version, our Core Web Vitals fix list is ordered by how much each change actually moves the number rather than how often it gets mentioned.
Step 6: Handle the questions nobody is asking you
Here is a leak that does not appear in any funnel report: the customer who had one question, could not find the answer, and left. They generate no event, no cart, no abandonment email. They are invisible.
You can find them anyway. Read your last fifty support messages and count how many are pre-purchase questions rather than post-purchase problems. If the ratio is high, every one of those questions is being asked silently by people who never bothered to email, at a rate of roughly a hundred to one.
Two responses to that. Put the answers on the page — in the accordion under the buy button, in the specification table, in the shipping line. And give the ones who still want a human somewhere obvious to go. Most of our merchants route this through WhatsApp with the right agent attached to the right question, because a pre-sales query answered in four minutes converts and one answered in four hours does not.
What we deliberately do not audit
A few things get audited constantly and are almost never the actual problem.
Trust badges. Beyond payment icons near the button, the evidence for badge stacks is thin and the space is expensive.
Popup timing. Endless energy goes into whether the email popup fires at 5 seconds or 15. Both are worse than firing on exit intent or on a second page view, and neither is your funnel’s weak gate.
Manufactured urgency. Fake countdowns and invented visitor counts produce a short-term lift and a long-term cost, and we have written about the honest alternatives rather than repeat it here.
Your theme. Theme choice absorbs weeks and matters far less than the seven decisions that actually determine how a store feels. A CRO audit that concludes “we need a new theme” is usually an audit that did not find anything.
How often to run it
Full audit twice a year. Funnel table once a month — it takes fifteen minutes once the spreadsheet exists and it catches regressions before they become quarters.
Run it out of cycle after any of the following: a theme update, a new app install, a checkout or shipping configuration change, or a sudden shift in traffic mix. Those four events cause the overwhelming majority of unexplained conversion drops, and the funnel table will point at the affected gate within minutes.
The part that matters
An audit is not the work. It is the thing that tells you which work is worth doing, and its entire value is that it stops you from redesigning a homepage when the actual problem was a shipping rate configured wrong in 2024.
Start with the funnel table. Find the worst gate. Fix that one thing properly. Then run the table again in a fortnight and see whether the number moved.
That is the whole method. It is not exciting, and it works.
If you want the storefront pieces we build for this — shoppable sliders, comparison tables, multi-agent WhatsApp — they are all free to install, and the tutorials walk through setup without touching theme code.
FAQ
How long does a Shopify CRO audit take?
A first pass takes a weekend: an hour on the funnel table, an hour watching session recordings, and the rest on the page-by-page review. The monthly refresh takes about fifteen minutes once your spreadsheet exists.
Do I need a CRO tool to run one?
No. Shopify Analytics, Google Search Console and PageSpeed Insights cover the first audit entirely. Session recording is worth adding at the point where you have a specific page you need to understand, not before.
What is a good conversion rate for a Shopify store?
Depends heavily on category, price point and traffic source. Littledata’s Shopify benchmark puts the average around 1.4% with the top 20% above 3.2%, but a £500 considered purchase converting at 1% may be outperforming a £20 impulse buy converting at 4%. Benchmark against your own trend line first and your category second.
Should I A/B test my changes?
Only if you have the traffic for it — roughly 250–400 conversions per variant. Below that, make the change, hold everything else steady, and measure before and after over a fortnight.
Where should I start if my funnel numbers all look similar?
Mobile. If every gate looks flat, split the whole funnel by device and re-read it. The problem is usually hiding in the segment, not the average.


