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.

  • 5 leaks
  • 10 charts
  • Sources read 1 August 2026
  • Edition one
  1. 01 Speed Class 1 · Deleted
  2. 02 Breakage Class 2 · Misfiled
  3. 03 Product page Class 2 · Misfiled
  4. 04 Machine invisibility Class 1 · Deleted
  5. 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.

100 storesThe base cohortA hundred storefronts, before any check100× 76%Pass all three Core Web Vitals, mobileShopify origins · n = 567,932 · Web Almanac 202576× 38%Product-page UX “decent” or better, mobileBaymard Institute · 155+ benchmarked storefronts28.9× 37%Mobile inner pages carrying JSON-LDWeb Almanac 2025 (HTTP Archive)10.7of 100Honest range0%–37% clean on all three 10.7% — the independence estimate The arithmeticThree published pass rates, from threeorganisations, multiplied:0.76 × 0.38 × 0.37 = 0.1069Why it is a rangeMultiplying assumes the three travelindependently. They mostly do, but notexactly — so 10.7% is an estimate, andthe strictest single rate is the ceiling.63%–89% fail at least one checkSamples567,932 Shopify mobile origins155+ benchmarked storefronts~12.9M sites crawled, July 2025Three definitions of “a store”.Stacking them is an order ofmagnitude, not a measurement.

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.

  1. Leak 1 Speed
  2. Leak 4 Machine invisibility

On your dashboard

conversion rate flat or higher

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.

  1. Leak 2 Breakage
  2. Leak 3 Product page

On your dashboard

conversion rate falls, cause unattached

Class 3

Offstage

The failure happens on a page your tag does not reach. You see the entry event and then nothing.

  1. Leak 5 Checkout

On your dashboard

entry event, then silence

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.

  1. A 90–100

    Nothing here is costing you a meaningful share of revenue. Go and work on the product.

  2. B 75–89

    One leak, known, priced, scheduled.

  3. C 60–74

    Two or three open leaks, and at least one of them is invisible to you.

  4. D 45–59
    48 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.

  5. 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.

1s 2s 3s 4s 5s 6sMobile load time1% 2% 3% Conversion rate3.05%at 1s · measured0.67%at 4s · measured The commercial peak Portent, 1–2sGoogle’s “good” LCP threshold2.5s · p75 you pass here, and you are already past it Two points, not a curvePortent publish 3.05% at 1s and0.67% at 4s, and nothing betweenthem. The dashed line is ourinterpolation, not their measurement.The 2.5× lineA site loading in 1s converts at 2.5×the rate of one loading in 5s — that isPortent’s all-sites summary, not thisseries, so it is not plotted here.n = 5.6M sessions20 sites · 30 days · 2022

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

67%

Extra costs too high — shipping, tax, fees

40%

No price per unit on multi-quantity products

81%

Couldn’t see or calculate total cost upfront

12%

No return policy linked from the main page content

44%

Returns policy unsatisfactory

13%

Measured, with no matching stated reason

No buttons for size selection

57%

friction, not a stated reason

No “in scale” image

37%

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.

Left Baymard product page UX benchmark · 155+ benchmarked storefronts

Right Baymard cart-abandonment statistics · 50 studies

Two populations, two denominators. The rule between them means “feeds”, never “equals”.

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.

  1. 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
  2. 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
  3. 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
  4. 04

    Open yourstore.com/llms.txt

    A 404 puts you with 97.9% of the web.

    Leak 4
  5. 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

And then

Now open your analytics and look for any of the five. That is the point of the exercise.

Five real conditions on your live store, and your dashboard has an opinion about none of them.


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.

Panel A · Conversion, relative to non-AI trafficAdobe Analytics · US retail · three published observations-40% -20% 0% +20% +40% Paritywith non-AI traffic−43% July 2024 43% less likely to convert−9% February 2025 gap almost closed+31% Holiday 2025 converting better than the rest Parity crossed in here our interpolation, not Adobe’s Three observations, not a series. Adobe publish these three points and nothing between them, so the connecting segments are dashed: they are our line, not their data. Based on more than a trillion visits to US retail sites. Panel B · Sites carrying an llms.txtHTTP Archive · ~12.9M desktop sites · July 202597.87%have no llms.txt at all2.13%do — the file whose entire jobis to tell an assistant how yoursite is laid outThe channel arrived before the plumbing did.

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.

Why carts get abandoned Baymard Institute · average across 50 studies · 70.22% overall abandonment Extra costs too high — shipping, tax, fees40%Product pageDelivery was too slow20%Product page / opsDidn’t trust the site with card details19%Product page / checkoutSite wanted account creation18%CheckoutToo long or complicated a checkout17%CheckoutWebsite had errors or crashed17%Breakage — Leak 2Returns policy unsatisfactory13%Product pageCouldn’t see or calculate total cost upfront12%Product pageCredit card declined10%PaymentsInsufficient payment methods9%Checkout 0% 10% 20% 30% 40%Share of abandoners naming the reasonSummed by where the fix lives175 points across 10 reasons Product page 85 Shared 19 Checkout 44 Breakage 17 Payments 10

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.

Monthly revenue at risk On the illustrative store — $100,000 a month. Declared, not measured. Low case10.9% · $10,900High case25.5% · $25,500 0% 5% 10% 15% 20% 25%Leak 4 · Machine invisibilityNOT PRICED No length, because no honest length exists. 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. 1 · Speed4.9%–10.5%$4,900–$10,5002 · Breakage2%–5%$2,000–$5,0003 · Product page2%–6%$2,000–$6,0005 · Checkout2%–4%$2,000–$4,000Revenue Leak ScoreMidpoint 18.2% at risk, mapped to the scale F D C B A48D010018.2% at risk → 48 0% at risk scores 95. 25% scores 30. Linear in between. Four leaks, none of them alarming on its own. Two of the four never touched the conversion rate. One of them may have raised it.

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.

1

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.

2

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.

3

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.

4

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.

5

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.

A ≥ 90 B ≥ 75 C ≥ 60 D ≥ 45 F < 45

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.txt generation, 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 chapterllms.txt present on 2.13% of desktop and 2.1% of mobile sites, and robots.txt on 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

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
Build with Mtrix