Mtrix report · 02
The DTC Revenue Leak ReportFive leaks, priced.
Five ways a storefront loses money, each one priced, and a 0–100 score you can put on your own store before lunch. Built on four public datasets covering 567,932 Shopify origins, 155+ benchmarked storefronts and 50 cart-abandonment studies — all read 1 August 2026. Edition one.
- 01 Speed Class 1 · Deleted
- 02 Breakage Class 2 · Misfiled
- 03 Product page Class 2 · Misfiled
- 04 Machine invisibility Class 1 · Deleted
- 05 Checkout Class 3 · Offstage
The finding
Every revenue leak deletes the evidence of itself. The shoppers it costs you never reach the dashboard where you would count them, so the worse a leak gets, the healthier some of your numbers look.
That is not a figure of speech. It is a description of how the plumbing works, and it is why the five leaks below stay open for years on stores run by people who check their analytics every morning.
Three of them have been separately measured by three organisations that do not talk to each other. Nobody has ever added the columns together. We did:
- 76% of Shopify origins on mobile pass all three Core Web Vitals.
- 38% of ecommerce sites have a mobile product page rated “decent” or better.
- 37% of inner pages on mobile carry JSON-LD — the format that decides whether a machine can read your catalogue.
Multiply them and roughly one store in nine is clean on all three. Even if you assume those three virtues travel together — and they mostly do — no more than 37% of stores can be clean on all three, because that is the strictest single rate. So between 63% and 89% of storefronts fail at least one of three checks that are already public. That is before anyone looks at your JavaScript errors or walks your checkout.
Stack three published pass rates and one store in nine survives all three.
Three samples, three organisations, three definitions of “a store.” Adding them is an order of magnitude, not a measurement — and the order of magnitude is that most stores fail at least one.
Source Web Almanac 2025 (HTTP Archive) · Baymard Institute. Read 1 August 2026.
The rest of this report does three things. It names the five leaks and says, in plain mechanical language, what physically breaks in each one. It prices four of them on a store doing $100,000 a month — and refuses to price the fifth, because the honest number does not exist yet. And it gives you a Revenue Leak Score: a 0–100 composite with an A–F grade that you can compute on your own store from five inputs, none of which requires a developer.
The worked example at the end is a store that passes Google’s Core Web Vitals and scores a D.
The survivor’s dashboard
Here is the mechanism, before any evidence.
Your analytics is a report filed by the people who made it through. A session is only counted if the page rendered, the script executed, the shopper stayed long enough for the beacon to fire, and the event landed on a page your tag owns. Every one of those is a filter. Every leak in this report sits upstream of at least one of them.
So the loss and the record of the loss are not the same size, and they are never the same shape. Three different things happen to a leaked shopper, and only one of them looks like a problem in your dashboard.
Class 1 Deleted The shopper never enters the dataset at all. The page took too long and they left before anything fired; or a machine could not read your catalogue, so the recommendation went to a competitor and the visit never happened. Nothing in the numerator, nothing in the denominator, no row anywhere. Your conversion rate is unchanged — or it improves, because the sessions you just lost were your worst-performing ones. Leaks 1 and 4 live here.
Class 2 Misfiled The shopper is counted, doesn’t buy, and your conversion rate falls with nothing attached to say why. So it gets filed under whatever explanation is nearest: traffic quality, price, seasonality, the algorithm. A broken variant selector and a bad ad campaign produce an identical-looking dip. Leaks 2 and 3 live here.
Class 3 Offstage The failure happens on a page your tag does not reach — the hosted checkout, the payment step, the account wall. You see the entry event and then silence. You know the number that went in and the number that came out, and nothing about the metre in between. Leak 5 lives here.
If you think you only have class 2, you will spend the year optimising the one leak that had the courtesy to show up. Class 1 is invisible by construction. Class 3 is invisible by domain boundary. Neither waits for you to notice.
Only two of the five leaks ever show up as a lower conversion rate.
Class 1
Deleted
The shopper never enters the dataset. Nothing in the numerator, nothing in the denominator, no row anywhere.
Class 2
Misfiled
The shopper is counted, does not buy, and the cause is never attached — so it gets filed under whatever explanation is nearest.
Class 3
Offstage
The failure happens on a page your tag does not reach. You see the entry event and then nothing.
Three of the five never lower the number you check every morning. That is the reason they last for years.
Source Mtrix classification. The three classes are our framework, not a measurement — this report audited no population of stores and claims no frequency for anything on this figure.
Give it a name so you can use it in a meeting. The survivor’s dashboard: the report written by the shoppers who made it through, presented as though it were a report about everyone.
What a Revenue Leak Score measures
One number, so the five leaks can be compared and argued about. It is a diagnostic composite, not a conversion-rate prediction, and the difference matters — a store can score badly and still sell well, which usually means it is being carried by demand rather than by its site.
Definition
The Revenue Leak Score, defined
A 0–100 score with a letter grade.
- A≥ 90
- B≥ 75
- C≥ 60
- D≥ 45
- F< 45
Five sub-scores, each 0–100, each computed the same way every time
- 1 Speed
- The mobile performance score for your store’s landing page, on real-world throttling.
- 2 Errors
- Starts at 100. Subtract 12 for each unique high-severity JavaScript error sitting on the purchase path, 4 for each medium, 1 for each low, 3 for each failed network request. Floors at 5, because a store that scores zero here has stopped being a store.
- 3 Product page
- A weighted rubric across four categories: what is visible above the fold, the purchase controls, the trust signals, and the content. Scored as a percentage of the maximum available.
- 4 Machine readability
- 25% crawlability, 25% structured data, 30% answerability, 20% brand presence. Whether an AI assistant can reach your store, parse your products, quote your copy and name you when asked.
- 5 Checkout
- Friction observed by walking your live checkout without submitting anything: express payment options, whether guest checkout is the default, step count, required fields.
The composite
Give it a monthly revenue figure and the composite becomes the share of that revenue the priced leaks put at risk, mapped onto the scale: nothing at risk scores 95, a quarter of your revenue at risk scores 30, and it is linear in between. Give it no revenue figure and it is the mean of whichever sub-scores were measurable.
What it is not
It is not a prediction, not a ranking against other stores, and not a guarantee. It is a way of holding five unrelated failures in one hand.
The grade is the useful part, because a grade is a status ladder and you will locate yourself on it before you finish reading the row.
A store that passes Core Web Vitals can still score a D.
-
A 90–100
Nothing here is costing you a meaningful share of revenue. Go and work on the product.
-
B 75–89
One leak, known, priced, scheduled.
-
C 60–74
Two or three open leaks, and at least one of them is invisible to you.
-
D 45–5948 the worked example in this report
A double-digit share of monthly revenue is in play. This is a quarter’s work, not a sprint.
-
F 0–44
The site is the constraint on the business.
The bands are revenue-at-risk bands. A store can be well built, well liked and sit in D.
Source Revenue Leak Score definition, this report.
Leak 1 — Speed. Everyone measures it against the wrong number.
Class 1 Deleted The most-written-about leak in ecommerce, and the industry has agreed on a threshold that is roughly one full second past where the money is.
Google’s bar for a “good” Largest Contentful Paint is 2.5 seconds at the 75th percentile. Pass it and every tool you own turns green. Portent measured the other thing — what shoppers actually did — across 5.6 million sessions on 20 sites in a 30-day window. On the B2C ecommerce sites, the highest conversion rates sat between 1 and 2 seconds: an average 3.05% at a one-second load, falling to 0.67% by four seconds. Their summary line is the one to keep: a site loading in one second converts at 2.5× the rate of a site loading in five.
Read those two facts side by side. Google’s pass mark and the commercial cliff are not in the same place. A store sitting at 2.4 seconds passes Core Web Vitals and is on the wrong side of the curve. That is not a failure of Google’s threshold, which was set for a different purpose. It is a failure of using it as a business target.
Google’s pass mark sits a full second past the point where shoppers stop buying.
Portent’s figures are a comparison between sites, not a promise about speeding one up. The gap between the two thresholds is the finding.
Source Portent, Site Speed is (Still) Impacting Your Conversion Rate, 2022 · web.dev Core Web Vitals thresholds. Read 1 August 2026.
What it costs, on a real store’s arithmetic. Deloitte and 55, commissioned by Google, monitored mobile load times hour by hour for 30 days across 37 European and American brand sites and over 30 million user sessions. A 0.1 second improvement moved retail conversions +8.4% and average order value +9.2%. Akamai, working from about 10 billion visits to top online retailers, put a 100-millisecond delay at roughly 7% of conversions.
Those two independent studies agree closely enough to build on. We price a second of overage at 7–15% of monthly revenue at risk, capped, and we do not use the recycled bounce-probability ladder that eight vendors quote and none of them source.
On the illustrative store below — $100,000 a month — a mobile LCP of 3.2 seconds is 0.7 seconds over the threshold. That is 4.9% to 10.5% of revenue at risk: $4,900 to $10,500 a month, or $59,000 to $126,000 a year. For a 0.7-second problem that every automated tool in your stack currently reports as a pass.
What this is built on
No crawl, no survey, no first-party benchmark. This edition is a synthesis and a method. Every population figure comes from a named third party, listed at the end with the date it was read, and every dollar figure is arithmetic on five declared inputs you should replace with your own.
What we did not measure. We have not scanned a population of stores and cannot tell you what share of them fail any individual check. There is no Mtrix figure anywhere in this report. Our own platform data cannot support a market benchmark — it is dominated by a handful of storefronts belonging to a single organisation, which makes it useful for building a product and useless for describing an industry, and we would rather say so than publish it.
The samples do not match each other, and it matters. The Core Web Vitals figure covers 567,932 Shopify mobile origins. The product-page figure covers 155+ manually benchmarked storefronts, most of them large and well resourced — which means 38% is a generous read for the median DTC store, not a harsh one. The JSON-LD figure covers inner pages across the whole web rather than ecommerce specifically. Stacking them produces an order of magnitude, not a measurement, and we say so beside the chart rather than in a footnote.
What we can defend. The five leak definitions, the sub-score formulas, the coefficient bands and the arithmetic. Those are ours, they are published in full here and in the methodology at the end, and anyone can run them against their own store and get the same answer we would.
Full method, exclusions and every source at the end.
Leak 2 — Breakage. The only leak with no dashboard at all.
Class 2 Misfiled Every other failure in this report has a tool that watches it. This one has a gap in the middle of the room.
Here is what physically breaks. A JavaScript error throws in the browser, on one device, on one template, on one variant. The page still returns HTTP 200. The server logs nothing, because nothing reached the server. Your uptime monitor pings the URL and gets a page. Lighthouse loads the page in a lab, on a desktop-class CPU, without your shopper’s ad blocker, extensions, locale or the specific product that triggers it — and passes. The shopper taps Add to cart, nothing happens, they tap again, and they leave.
Nothing in a standard stack is watching the button. The uptime monitor watches the door. The lab audit watches a rehearsal. The server log watches requests that arrive. A broken add-to-cart generates none of those signals, and the one system that would notice — your conversion rate — reports the outcome without the cause.
A broken add-to-cart returns HTTP 200 and passes every check you already run.
Monitoring system
What it reports when add-to-cart is broken
Why
Uptime monitor
100% up
It requested the URL, not the button.
Lab performance audit
Passing score
It ran on a desktop CPU, with no ad blocker, on a different variant.
Server error log
Zero errors
The failure never left the browser.
Conversion rate
A dip
It records the outcome, never the cause.
Three of the four report success. The fourth reports a number with nothing attached to say why.
Four systems, four honest answers, and not one of them is about the button.
Source Mtrix classification. No population of stores was audited and no frequency is claimed for anything on this figure.
Shoppers do notice, and they tell surveys about it. In Baymard’s cart-abandonment work — 70.22% average abandonment across 50 studies — 17% of abandoners name “website had errors / crashed” as their reason. That is the same share who name a checkout that is too long or too complicated, and it sits above the 13% who blame the returns policy. Errors are not an edge case in the abandonment data. They are mid-table, and they are the only mid-table cause with no owner in most stores.
What it costs. We price a high-severity error on the purchase path at 2–5% of monthly revenue — a deliberately narrow band, applied only when an error is actually observed on the path to purchase, never inferred from the presence of errors elsewhere. On $100,000 a month: $2,000 to $5,000, or $24,000 to $60,000 a year. One error. Usually on one template. Frequently on one variant of one product, which is why it survives every manual spot-check anybody does.
Two properties make this the highest-yield leak per hour of work. It is binary — the button works or it does not, so there is no A/B test to run and no significance to wait for. And it is cheap: the fix is usually a few lines, and the argument CXL makes about bugs holds without modification. Three hours of developer time against $24,000 a year is not a decision that needs a meeting.
Leak 3 — The product page you are fairly sure is fine
Class 2 Misfiled The leak that presents as a traffic-quality problem, gets blamed on the ad account, and is fixed nowhere.
Baymard has scored this more carefully than anyone: 30,000+ usability scores across twelve product page topics, on 155+ manually benchmarked storefronts. Only 48% of desktop and 38% of mobile ecommerce sites reach “decent” or better on product page UX. Read the inverse, because it is the useful direction: 62% of mobile product pages are mediocre or worse, on a benchmark whose sample is weighted towards large, well-funded brands. If the biggest stores in the world are at 38%, the median DTC store is not above it.
But the aggregate score is not the finding. The finding is which things are missing, and what they map onto.
Line up Baymard’s product-page gaps against Baymard’s own abandonment reasons and they interlock:
| What the product page doesn’t do | Share of sites | The abandonment reason it feeds | Share of abandoners |
|---|---|---|---|
| No total order cost estimate near the buy section | 67% | Extra costs too high (shipping, tax, fees) | 40% |
| No return policy linked from the main page content | 44% | Returns policy unsatisfactory | 13% |
| No price per unit on multi-quantity products | 81% | Couldn’t see or calculate total cost upfront | 12% |
| No buttons for size selection | 57% | friction, not a stated reason | |
| No “in scale” image | 37% | friction, not a stated reason | |
Left columns: Baymard product page UX benchmark, 155+ benchmarked storefronts. Right columns: Baymard cart-abandonment statistics, 50 studies. Two populations and two denominators — the pairing means “feeds”, never “equals”.
Two-thirds of stores withhold, until the cart, the single number that causes four in ten abandonments. That is the whole chapter. The shopper is not surprised by shipping costs at checkout because shipping costs are surprising. They are surprised because the product page had the answer and did not give it.
Look at the ten stated reasons carts get abandoned and five of them are questions the product page could have answered before a cart existed: total cost, delivery speed, trust, returns, and visibility of the full price. The cart is where the abandonment is recorded. It is not usually where it is caused, and optimising the cart to fix a product-page problem is the most common wasted quarter in this category.
Two-thirds of stores hide the number that causes four in ten abandonments.
Share of sites missing the element
feeds
Share of abandoners naming the reason
No total order cost estimate near the buy section
Extra costs too high — shipping, tax, fees
No price per unit on multi-quantity products
Couldn’t see or calculate total cost upfront
No return policy linked from the main page content
Returns policy unsatisfactory
Measured, with no matching stated reason
No buttons for size selection
— friction, not a stated reason
No “in scale” image
— friction, not a stated reason
Baymard’s abandonment list has no counterpart for either of these. Inventing one to complete the pattern would be this report’s failure mode, so the gap is shown and left open.
Baymard measured both halves. Nobody joins them, and the join is where the money is.
Source Baymard Institute — product page UX benchmark and cart-abandonment statistics. Read 1 August 2026.
What it costs. We price a weak purchase experience — the buy box, the variant controls, the express-pay options, the mobile add-to-cart — at 2–6% of monthly revenue, applied only when the purchase-UX category scores below 5 out of 10. On $100,000 a month: $2,000 to $6,000, or $24,000 to $72,000 a year. This is the softest band in the report and it is labelled as directional rather than measured, because unlike speed and errors it depends on judgement about your specific category.
The rhythm break
Eleven minutes, no tools, no login
A break from the arithmetic. Six things you can check on your own store right now, on a phone, with nothing installed. None takes longer than two minutes, and each one maps to a leak above or below.
-
01
Load your best-selling product page on cellular, not Wi-Fi.
Count out loud. If you get past “two,” you are outside the commercial band Portent measured, whatever your dashboard says.
Leak 1 -
02
Add the second variant to your cart.
Second, not first. If the button does nothing, you have just found a class-2 leak that no monitor in your stack was going to report.
Leak 2 -
03
Look at your buy box and answer, without scrolling: what will this cost me delivered?
If you can’t, 67% of stores are your peer group and 40% of abandoners are your reason.
Leak 3 -
04
Open
yourstore.com/llms.txtA 404 puts you with 97.9% of the web.
Leak 4 -
05
Start a checkout as a shopper who has never bought from you.
Count the required fields before the payment step, and note whether “create an account” is the default path or the alternative one.
Leak 5
Leak 4 — The shopper who never arrives
Class 1 Deleted The only leak in this report we refuse to price, and the only one whose cost is going up every month.
What physically happens: someone asks an assistant for a recommendation in your category. The assistant reaches for stores it can crawl, parse and quote. If your catalogue is not machine-readable at the moment it looks, you are not in the answer. There is no impression, no click, no bounce and no row. It is the purest class-1 failure in the report — the visit does not fail, it does not occur.
For a long time this did not matter much, because the traffic was small and it converted badly. Both of those facts have flipped.
Adobe, working from more than a trillion visits to US retail sites, has the crossover on record. In July 2024, AI-referred traffic converted at roughly half the rate of everything else. By February 2025 the gap had closed to 9% worse. Over the 2025 holiday season, AI referrals converted 31% more than other traffic sources, with revenue per visit up 254% year to date and conversion 54% higher than non-AI on Thanksgiving. Traffic to retail sites from generative AI tools grew 693% year over year across November and December 2025.
Read that as one sentence: the fastest-growing traffic source in retail overtook the rest of your traffic on conversion rate, in about eighteen months. It is not a channel to evaluate next year. It is a channel that now converts better than the traffic you are currently paying for.
And almost nobody is set up to receive it. Across roughly 12.9 million sites in the HTTP
Archive’s July 2025 crawl, llms.txt is present on 2.13% of desktop
sites — the file whose entire job is to tell an assistant how your site is laid out.
Structured data has reached 50% of home pages, with JSON-LD at
43%; on inner pages, the ones that carry your actual products, JSON-LD drops to
37% on mobile. And only 2% of crawls find structured data injected by
JavaScript — which is the good news, because markup that only exists after your
JavaScript runs is markup a non-rendering crawler never sees.
AI traffic overtook the rest of your traffic on conversion. 2% of the web is set up to receive it.
Adobe’s figures are a comparison across traffic sources on more than a trillion retail visits, not a promise about your store. The adoption number is the actionable half.
Source Adobe Analytics · Web Almanac 2025 (HTTP Archive). Read 1 August 2026.
Leak 5 — Checkout. The most expensive metre in the store.
Class 3 Offstage Every shopper here has already chosen to buy. That is what makes the losses cost more than anywhere else on the site, and what makes them so hard to watch.
The headline number is old and everyone knows it: 70.22% of carts are abandoned, an average across 50 separate studies. Familiarity has drained it of meaning, so invert it. Seven in ten people who told you they wanted the thing did not get it. Not seven in ten visitors — seven in ten people who put it in a cart.
The reasons are where the work is, and Baymard publishes them:
| Why carts get abandoned | Share | Where it is actually caused Mtrix attribution |
|---|---|---|
| Extra costs too high (shipping, tax, fees) | 40% | Product page — Leak 3 |
| Delivery was too slow | 20% | Product page / operations |
| Didn’t trust the site with card details | 19% | Product page / checkout |
| Site wanted account creation | 18% | Checkout |
| Too long or complicated a checkout | 17% | Checkout |
| Website had errors or crashed | 17% | Breakage — Leak 2 |
| Returns policy unsatisfactory | 13% | Product page — Leak 3 |
| Couldn’t see or calculate total cost upfront | 12% | Product page — Leak 3 |
| Credit card declined | 10% | Payments |
| Insufficient payment methods | 9% | Checkout |
Shares are Baymard’s, read 1 August 2026. They exceed 100% because respondents could name more than one reason. The third column is our attribution, not Baymard’s.
Five of the ten reasons carts get abandoned are questions the product page could have answered first.
Colour is our attribution, not Baymard’s. Shares exceed 100% because respondents could name more than one reason, so the strip sums shares, not respondents. The trust row is caused in both places and is counted in neither block.
Baymard’s own figures, recoloured by where the fix lives. Shares exceed 100% because respondents could name more than one.
Source Baymard Institute, cart abandonment statistics, read 1 August 2026. The colour key is ours.
Two of those rows are the cheapest fixes in this entire report. 18% of abandoners were asked to create an account — a setting, not a project. 9% were not offered a payment method they wanted — also a setting. Neither needs a test, a designer or a sprint.
What it costs. We price the two observable checkout frictions conservatively and separately: no express payment option at 1–3% of monthly revenue, forced account creation at 1–2%, combined and capped at 4%. A store with both, on $100,000 a month: $2,000 to $4,000, or $24,000 to $48,000 a year. These are the tightest bands in the report because this is the most contested territory, and a narrow band you can defend beats a wide one you can’t.
Baymard puts the total recoverable through better checkout design at $260 billion across the US and EU, and the average conversion-rate gain available to a large ecommerce site at 35.26%, with 39 distinct improvement areas on a typical one. Treat the $260 billion as a market-sizing figure rather than a promise about your store — but treat the 39 as literal. There is a list, it is that long, and the first two items on it are settings.
Five leaks, one store
Everything above, on one hypothetical store. These five inputs are declared assumptions, not measurements. Substitute your own and every number below moves with them.
Its scan comes back like this. Mobile LCP 3.2 seconds — 0.7 over. One
high-severity JavaScript error on the purchase path. Product-page purchase UX
4 out of 10. No llms.txt, no Product JSON-LD in the initial HTML.
Checkout has no express-pay option and asks for an account.
| Leak | Band applied | Monthly at risk | Annual |
|---|---|---|---|
| 1 Speed 0.7s over threshold, at 7–15% per second | 4.9%–10.5% | $4,900–$10,500 | $58,800–$126,000 |
| 2 Breakage high-severity error on the purchase path | 2%–5% | $2,000–$5,000 | $24,000–$60,000 |
| 3 Product page purchase UX below 5/10 | 2%–6% | $2,000–$6,000 | $24,000–$72,000 |
| 4 Machine invisibility | Not priced Deliberately unpriced. To price this we would need to know what share of your category’s demand now routes through assistants, and nobody has published that at a resolution worth putting a dollar sign on. | ||
| 5 Checkout no express pay + forced account, capped at 4% | 2%–4% | $2,000–$4,000 | $24,000–$48,000 |
| Total under the 30–40% total cap | 10.9%–25.5% | $10,900–$25,500 | $130,800–$306,000 |
Every band from the coefficients published in the methodology below; every dollar figure arithmetic on the five declared inputs above. Halve the store and every figure halves with it.
Midpoint of the range: 18.2% of monthly revenue at risk. Mapped onto the score — 0% at risk is 95, 25% is 30, linear in between — that is 48 out of 100. A D.
Four leaks, none of them alarming on its own, price out at $131,000 to $306,000 a year.
On declared inputs, not measurements. Halve the store and every figure halves with it.
Source Revenue Leak Score coefficients, this report. The illustrative store's five inputs are hypotheses, declared above.
The reason it took a report to find that is the survivor’s dashboard. Two of those four leaks never touched the conversion rate. One of them may have raised it.
Score your own store
Five inputs. Nothing here needs a developer and nothing needs a login.
1 · Speed (0–100). Run your best-selling product page through any mobile performance audit and take the performance score. Then take your mobile LCP in seconds and hold it against 2.0, not 2.5.
2 · Errors (0–100). Open your store on a real phone with your ad blocker on. Add the second variant of three products to the cart. Start at 100 and subtract 12 for every one that fails on the purchase path, 4 for anything visibly wrong elsewhere, 1 for cosmetic breakage, 3 for every image or request that fails to load. Floor at 5.
3 · Product page (0–100). Ten checks, ten points each: total delivered cost visible in the buy box · return policy linked in the main content · price per unit where quantities vary · buttons not a dropdown for variants · an in-scale or human-model image · review stars and count near the title · add-to-cart visible without scrolling on mobile · a sticky add-to-cart on scroll · an express payment option · a concrete delivery estimate.
4 · Machine readability (0–100). 25 points for llms.txt returning
a real file · 25 for Product and Offer JSON-LD in the initial HTML response · 30 for product
copy that answers a question rather than describing a mood · 20 for your brand being named when
you ask an assistant for a recommendation in your category.
5 · Checkout (0–100). Start at 100. Subtract 25 if guest checkout is not the default path · 25 for no express payment option · 10 for every required field before payment beyond six · 15 if the total delivered cost only appears at the final step.
Your grade. Mean the five sub-scores. A ≥ 90 · B ≥ 75 · C ≥ 60 · D ≥ 45 · F < 45. Then do the money version: apply the bands from the table above to your own monthly revenue, take the midpoint of the total, and map it — 0% at risk = 95, 25% or more = 30, linear between. The two numbers will not match. The gap between them is the most useful thing on this page, because the sub-score mean tells you how tidy your store is and the money version tells you how much that tidiness is worth.
Five checks, one grade, and you can produce all five before lunch.
The mobile performance score for your best-selling product page, on real-world throttling.
How to get it Run it through any mobile performance audit and take the performance score. Then hold your mobile LCP against 2.0 seconds, not 2.5.
Start at 100. −12 per high-severity error on the purchase path · −4 medium · −1 cosmetic · −3 per failed request. Floor at 5.
How to get it Open your store on a real phone with your ad blocker on, and add the second variant of three products to the cart.
Ten checks, ten points each.
How to get it Delivered total in the buy box · return policy linked in the main content · price per unit · buttons not a dropdown · an in-scale image · review stars near the title · add-to-cart visible without scrolling on mobile · a sticky add-to-cart · an express payment option · a concrete delivery estimate.
25 crawlability · 25 structured data · 30 answerability · 20 brand presence.
How to get it 25 for an llms.txt that returns a real file · 25 for Product and Offer JSON-LD in the initial HTML response · 30 for copy that answers a question rather than describing a mood · 20 for your brand being named when you ask an assistant for a recommendation.
Start at 100. −25 if guest checkout is not the default · −25 for no express pay · −10 per required field beyond six · −15 if the delivered total only appears at the final step.
How to get it Walk your own live checkout as a shopper who has never bought from you. Submit nothing.
Mean of your sub-scores
Enter a sub-score
How tidy your store is.
The money version
Enter a share at risk
0% at risk scores 95. 25% or more scores 30. Linear in between.
The gap Fill both sides. The two results are supposed to disagree — the mean scores your store, the money version scores your exposure, and the distance between them is the most useful number on this page.
Nothing here is sent anywhere. No submit, no storage, no request — the arithmetic runs in your browser and the page is ungated.
The two results are supposed to disagree. The mean scores your store; the money version scores your exposure.
Source Revenue Leak Score definition, this report. Nothing you type is sent anywhere.
Fix this → Monday
Ordered by dollars recovered per hour of work, not by size of the leak. The first three cost nothing but attention.
-
Monday, 20 minutes — the two settings
Make guest checkout the default path. Turn on an express payment option. Between them they address 18% and 9% of your stated abandonment reasons, they are configuration rather than code, and they are the cheapest money in this report.
-
Monday, 11 minutes — the six checks
The list above: cellular load, second variant, buy-box total,
llms.txt, a cold checkout, then your analytics. Write down what you find before you fix anything, because the record is what makes the second scan mean something. -
Tuesday, the buy box
Put an estimated delivered total inside it on your three best sellers, and link the return policy from the main page content. One template change against the largest stated reason your carts are abandoned.
-
Wednesday, the errors
Whatever the second-variant test surfaced. This is the only leak in the report with a binary outcome — no test, no significance, no wait. Ship the fix and move on.
-
Thursday, the markup
Product and Offer JSON-LD in the initial HTML response, then an
llms.txt. Half a day, and it puts you in the 2% of the web that is legible to the fastest-growing traffic source in retail. -
Friday, the speed number
Reset your internal target from 2.5 seconds to 2.0 and find out what that costs. Expect the estimate to be uncomfortable; the whole point of the threshold gap is that the last half-second is the expensive one.
Where Mtrix fits — and where it doesn’t
Most of you should close this and go and run the six checks. Mtrix does not shorten that list by a single item.
This is for the smaller group who reached the worked example and asked a different question. Not which sub-score is worst, but why did it take a report to tell me any of them, when I already pay for four tools that watch this store?
What we do about exactly that. The signals in this report sit on one session rather than in five products: the performance your shoppers actually lived, the JavaScript errors that fired inside the session, the session itself, and the order it did or didn’t produce, in Purchases. The dip and its cause are one click apart, not one integration apart. What you find, you can test on the store you already have.
The concessions, which matter more than the pitch:
- Mtrix does not compute this report’s score inside the product. The Revenue Leak Score is produced by our scanner from outside your store. Nothing in the platform grades you A–F.
-
We do not do the machine-readability leak. No
llms.txtgeneration, no AI-visibility monitoring, no assistant-ranking product. Leak 4 is real, we scored it, and we don’t sell the fix. - On a store that stays on Shopify, Mtrix measures and tests — it does not rebuild. The builder edits pages Mtrix generates and hosts. It does not edit your Shopify theme in place, vary your prices, or run inside Shopify’s hosted checkout. Leak 5’s diagnosis is ours; some of its fixes are not.
- Session replay masks credentials and payment fields by type and name before they leave the browser — not everything. Email, name, phone and address are captured in clear unless you exclude them. Know that before you turn it on.
- Web only. No native iOS or Android SDK. Replay and errors kept one month; events and purchases three years.
If your problem is that you don’t know which leak you have, a platform is not the answer — a scan is, and ours is free. Mtrix is for the store where you already know, and where the reason nothing gets fixed is that the number and the session behind it live in different products.
Methodology (in full)
What was measured: nothing, by us. No crawl, no survey, no panel, no sample. Edition one of this report is a synthesis of four named public datasets plus a published scoring method. We do not know what share of DTC stores fail any individual check in it and we do not claim to. Edition two ships against an original crawl and will say so on the cover.
No Mtrix data appears anywhere in this report. Our platform holds tens of thousands of ecommerce sessions, and almost all of them belong to a small number of storefronts operated by a single organisation. The honest methodology sentence for a benchmark drawn from that would be “across three storefronts operated by one brand,” and a sentence like that kills a report on the page it appears. Breadth is what makes Baymard’s and HTTP Archive’s numbers worth citing, and breadth is exactly what we lack. So we cite them and price them instead.
The sources, and what each covers.
Core Web Vitals and structured-data figures come from the HTTP Archive’s Web Almanac 2025, drawn from its July 2025 crawl of roughly 12.9 million sites; the ecommerce CWV table covers 567,932 Shopify mobile origins and 995,782 WooCommerce ones. Product-page figures come from Baymard Institute’s product page UX benchmark — 30,000+ manually reviewed usability scores across 155+ benchmarked storefronts. Cart-abandonment figures come from Baymard’s aggregation of 50 separate studies, last updated 22 September 2025. Speed-to-revenue coefficients come from three independent studies: Deloitte and 55 for Google (37 brand sites, 30M+ sessions, 30 days, 2019 data), Akamai (~10 billion visits to top online retailers, 2017), and Portent (5.6 million sessions across 20 sites, 30 days, 2022). AI-referral figures come from Adobe Analytics, based on more than a trillion visits to US retail sites.
Sample mismatch, stated plainly. Those populations are not the same population. Baymard’s benchmark is weighted towards large, well-resourced retailers, so its 38% mobile figure is a generous read for the median DTC store. The JSON-LD figure covers inner pages across the whole web rather than ecommerce specifically. The CWV figure is platform-scoped to Shopify. The compound finding in The finding multiplies three rates from three of those samples, which is an order of magnitude and not a measurement — it is labelled as such on the chart, in the caption, and here.
The coefficient bands. Speed is priced at 7–15% of monthly revenue at risk per second of mobile LCP over the 2.5-second threshold, capped at 25% (low) and 35% (high) for a single site. Purchase-path errors at 2–5%, applied only when a high-severity error is observed on the path to purchase. Product-page purchase UX at 2–6%, applied only below 5 out of 10, and labelled directional. Checkout at 1–3% for a missing express-pay option and 1–2% for forced account creation, combined and capped at 4%. Totals are capped at 30% (low) and 40% (high) of monthly revenue. Machine readability carries no dollar band by design.
What we deliberately did not use. The bounce-probability ladder — “as load times go from 1s to 3s the probability of bounce increases by 32%” and its five siblings — appears nowhere in this report. It is a small set of borrowed, thinly sourced numbers recycled by many vendors, and quoting it marks a document as a follower. We also did not price Leak 4, and we did not use any vendor’s “X% of ecommerce sites have unresolved JavaScript errors” figure, because the ones in circulation are marketing claims from companies selling error monitoring, with no published method.
The arithmetic. Every dollar figure derives from one illustrative store whose five inputs are declared in Five leaks, one store: $100,000 monthly revenue, 1,250 orders, $80 average order value, 69,400 sessions, 1.8% conversion. Those are hypotheses, not measurements. They exist so the method is inspectable; substitute your own and every conclusion moves with them.
Exclusions. Marketplace sellers, B2B and wholesale storefronts, subscription-only businesses whose conversion happens off the storefront, and native mobile apps. The abandonment figures are US/EU weighted. The AI-referral figures are US retail only.
Use this report
Share it, quote it, put the charts in your deck. Attribute to Mtrix with a link to this page. Want the underlying working — the coefficient bands, the score formulas, the full source list with read dates? Ask us and we’ll send the raw cuts.
Sources
Everything below was read on 1 August 2026.
HTTP Archive — Web Almanac 2025 July 2025 crawl, ~12.9 million sites
- Ecommerce chapter — Core Web Vitals pass rates by platform on desktop and mobile, including Shopify at 76% good CWV on 567,932 mobile origins, and the median Lighthouse performance scores by platform
- SEO chapter — structured data adoption at 50% of home pages, JSON-LD at 43% of home pages and 37% of mobile inner pages, and the 2% of crawls where structured data is injected by JavaScript
-
Generative AI chapter —
llms.txtpresent on 2.13% of desktop and 2.1% of mobile sites, androbots.txton 94.1%
Baymard Institute
- Cart abandonment statistics — the 70.22% average across 50 studies (last updated 22 September 2025), the full list of stated abandonment reasons and their shares, the $260 billion recoverable figure, the 35.26% average conversion-rate gain available through better checkout design, and the 39 improvement areas on a typical large site
- Product page UX: the current state — 30,000+ usability scores across 155+ benchmarked sites; 48% desktop and 38% mobile at “decent” or better; and the individual gap figures (67% no total order cost estimate, 81% no price per unit, 57% no size buttons, 44% no return policy link, 37% no in-scale image)
Speed and revenue
- Portent, Site Speed is (Still) Impacting Your Conversion Rate, 2022 — 5.6 million sessions across 20 sites; B2C ecommerce conversion at 3.05% for a one-second load falling to 0.67% at four seconds, and a site loading in one second converting at 2.5× the rate of one loading in five
- Deloitte and 55 for Google, Milliseconds Make Millions — 37 European and American brand sites, 30M+ user sessions, 30 days; a 0.1s mobile improvement moving retail conversions +8.4% and average order value +9.2% (full report PDF)
- Akamai, Online Retail Performance Report, April 2017 — approximately 10 billion visits to top online retailers; a 100ms delay costing roughly 7% of conversions
- web.dev, Core Web Vitals — the 2.5-second “good” LCP threshold at the 75th percentile
AI referrals
- Adobe, AI traffic surges across industries, retail sees biggest gains — holiday 2025: retail AI-referred traffic up 693% year over year, AI referrals converting 31% more than other sources, revenue per visit up 254%, 54% higher conversion than non-AI on Thanksgiving, based on more than a trillion visits to US retail sites
- Adobe Analytics, March 2025 — the earlier position in the same series: AI-referred traffic 9% less likely to convert in February 2025, up from 43% less likely in July 2024, with 8% higher time on site, 12% more pages per visit and a 23% lower bounce rate