The ROI model · Every formula published

A parcel misses the party. Someone pays for that.

The courier was late, but nobody is writing to the courier. They're writing to you — and it's you who pays, in the reshipment, the apology discount, the agent's afternoon, and the customer who quietly never orders again. None of it arrives on an invoice, so it rarely gets counted. Put your own numbers in below and we'll do it for you.

Nothing you type leaves your browser. There's no form, no email gate, and no lead capture — the model is the whole point of the page.

Your numbers

Change anything. Watch the arithmetic change with it.

Defaults are a starting point, not a claim about your business. Every field says where its number came from — published, derived, or simply our own experience. The ones we can't source are labelled as ours, and you can set them to zero.

Your operation

Your number
Your number
42%

What an order contributes after cost of goods and shipping. The one people over-estimate.

Your number

Your blended acquisition cost.

Your number Our provided default value is $32, which is just under the median for apparel brands in a 4,000-store Shopify dataset4. Only your own blended CAC is worth modelling.

Where promises break

5%

Split shipment, stockout after checkout, a missed date, a wrong item, a refund that needed chasing. Not only the ones that became a complaint.

Your number A starting point from our own experience of integrated retail operations — not a published figure, and not measured across a representative sample. Most operations don't track this; the ones that do usually count complaints, which understates it.

Return transit, the agent's time, restocking, the goodwill discount.

Your number Midpoint of a $25–$50 band that circulates widely in supply-chain writing without an original study behind it. We use it to pick a plausible starting value, not as evidence — your own cost per case beats it outright.
15%

Of the customers who hit one of those failures, the share who never order again.

Published A published study by PwC1 puts stated intent at 32%. Intent measures what people expect to do, not what anyone observed them doing. That is why we read 32% as a ceiling on intent rather than a measurement of behaviour, and default the model to 15%.

When they have to chase you

Nothing broke. The order is fine — you just didn't tell them, so they came and asked. Counted only on orders that didn't fail, because the agent's time on a failed order is already inside the cost of putting it right.

3

Customers asking where their order is. Counted per 100 orders — not as a share of your ticket load.

Your number Everything published on this is a share of ticket load, which says nothing without knowing the orders underneath it. So we start at a deliberately low per-order rate. Your helpdesk can tell you the real one.

The agent's time, the tooling, any per-ticket fee. Same basis as the cost of putting a failure right, which also has your team's time inside it.

Your number Low end of a $5–$12 band quoted around the service-desk industry, which we could not trace to an original study. A loaded cost per contact, on the same basis as the cost of putting a failure right.

What a customer is worth

Your number
Your number

What we claim to change

These three are ours, not yours, and they're the softest things on the page. Set them all to zero and the model turns negative and says so.

30%

Stock-aware routing, realistic dates at checkout, exceptions caught before the customer notices.

Our experience
25%

The failure still happens — but an agent with the whole order in front of them makes it right, and the customer stays.

Our experience
40%

Proactive updates, an honest date, and a tracking page that knows what the warehouse knows. Applies to the enquiry volume you set above.

Our experience

What it costs you

Your quoted numbers, not a list price. How Cloud pricing works →

Your number
Your number
Derived Integration hours from our own published benchmark, at a typical rate. Where our hours benchmark comes from →
Your annual promise gap, today
€700k
What broken promises cost you in a year with nothing changed.
10 000 failures × €35  +  1 448 customers lost × €242 forward margin
Customers chasing you about orders that were fine
5 700
enquiries a year
€34 200
what they cost you today

Nothing broke on these orders, so they stay out of the promise gap above.

Together, before anything changes: €734 465 a year
Recovered per year — a span, not a number
Conservative
€119k
Operations only
Balanced
€285k
+ margin retained
Full
€307k
+ replacement avoided
Operations €118 680  ·  margin on 688 customers kept €166 376  ·  replacement avoided €22 007

39% of the Full figure is hard operational money. The left end is the one we'd defend in a board meeting. The striped end is the one you should argue with.

Against what it costs you
ModelNet per yearReturnPayback
Conservative €60 680 152% 7.9 months
Balanced €227 056 568% 2.1 months
Full €249 063 623% 1.9 months
Running cost €58 000/yr = 12 × €1 500 + 200 000 × €0.20  ·  one-off €40 000

We'd plan on the middle row and hold ourselves to the top one. Net per order, balanced: €1.14.

The honest read

Counting nothing but operations — no retention, no avoided acquisition — this still pays for itself in 7.9 months. Everything past that is argument.

The method · Why the answer is a range

Three models. We tell you which one we'd defend.

A single ROI figure is a decision about how much softness to hide. We'd rather show the softness. Each model is the one before it plus a term you should trust less, so the span can only ever widen to the right — and where the left end sits tells you how much of the case is real money.

Conservative

Operations only.

The failures that never happen, and the cost of putting each one right that you therefore never pay. Return transit, the agent's time, restocking, the goodwill discount.

failures × prevented × cost to fix

This is the end we'd defend in a board meeting. It's invoice-adjacent: the money either left the building or it didn't.

Balanced

+ the margin you keep.

Customers who would have left, and didn't — either because nothing broke, or because someone fixed it properly. Counted as contribution margin on the orders they go on to place.

+ customers kept × forward margin

This is what we'd actually plan on. It depends on a churn rate nobody can measure precisely, which is why it isn't the floor.

Full

+ the replacement you don't buy.

Every customer you keep is one you don't have to go out and acquire again. At acquisition costs of five to twenty-five times retention, that's not a rounding error.2

+ customers kept × acquisition cost

Striped, and never the headline. This money is only saved if you would genuinely have gone and bought the replacement — plenty of teams simply run smaller instead.

The arithmetic

Every line, in order.

Nothing above happens in a spreadsheet you can't see. This is the whole model, and the widget does exactly this and nothing else.

The model, in full
// what breaks, and what it costs you today
failures        = orders × failure rate

// churn is per customer, not per failed order: two bad experiences
// still only lose you one customer, so we count people, not incidents.
customers       = orders ÷ orders per customer
customers hit   = customers × ( 1 − (1 − failure rate) ^ orders per customer )
customers lost  = customers hit × churn rate
forward margin  = repeat orders per year × years × AOV × margin %

// being chased about an order that was fine. Only non-failed orders:
// the agent's time on a failure is already inside cost to fix.
chase enquiries = orders × (1 − failure rate) × enquiries per 100
chase prevented = chase enquiries × told first %

// the gap is only what broke. Being chased is a real cost, but those
// orders were fine — so it is added alongside, never folded in.
promise gap     = failures × cost to fix
                + customers lost × forward margin
cost of silence = chase enquiries × cost per enquiry
today's cost    = promise gap + cost of silence

// what changes, and what it costs to change it
customers kept  = customers lost × ( prevented + (1 − prevented) × recovered )
operations      = failures × prevented × cost to fix
                + chase prevented × cost per enquiry
margin kept     = customers kept × forward margin
replacement     = customers kept × acquisition cost
running cost    = 12 × platform fee  +  orders × rate per order

// three points, each the one above plus a softer term
conservative    = operations
balanced        = conservative + margin kept
full            = balanced + replacement

// and against the invoice
net per year    = recovered − running cost
return          = net per year ÷ implementation × 100
payback months  = implementation ÷ ( net per year ÷ 12 )
/ 01

Margin, not revenue.

A lost €80 order is not €80 of lost profit. Everything on the retention side runs through contribution margin, which roughly halves the number we could otherwise have printed.

/ 02

Forward-looking lifetime only.

We count the orders a departing customer won't place from here on. The order already in the basket is revenue you've had, so it isn't in the loss.

/ 03

One steady-state year.

No compounding, no growth curve, no year-three hockey stick. Volume growth would flatter us, and a model you can't check in your head isn't a model.

/ 04

One rule for every cost.

Your team's time is already inside the cost of putting a failure right, so an enquiry you never had to answer is counted the same way. One rate, applied to both, in both directions — the cost today and the saving tomorrow.

/ 05

Everything else held constant.

Same orders, same margin, same failure rate, same team. The only thing that changes is the platform underneath — which is what makes the before and the after comparable at all. If you would also switch carrier or tighten a stock policy, those are separate decisions with their own numbers: put them in, and this model gets smaller rather than bigger.

/ 06

Your price, not our list price.

The fee, the rate per order and the implementation are all yours to type. We publish how Cloud pricing is structured, not a number we'd have to defend against your quote.

Stated intent, discounted

Why we halve the churn figure.

The share of customers who leave after a bad experience is the single most powerful number in this model, and the only one you cannot get from your own books. So it is worth being explicit about what the published figure measures — and what it does not.

What PwC asked1“At what point would you stop interacting with a company that you love shopping at or using?”
32%
What this model usesLess than half of it, because intent is not behaviour
15%

That question asks what someone expects to do, in the abstract, with no basket in front of them and no inconvenience attached. It is a good measure of how strongly people feel. It is not a measure of what they were observed doing, and people abandon brands far less often than they say they will — particularly when leaving means finding a new supplier who has their sizes, their address and their payment details.

There is no published figure for the behaviour, so we do not pretend to one. We halve the intent figure, say plainly that the halving is a judgement rather than a finding, and leave the field where you can overwrite it. If you have measured your own post-incident retention, that number beats ours outright.

The sources

Quoted, linked, and dated.

Same rule as our integration benchmark: no paraphrasing a number we depend on. Where a figure is ours rather than published, we say so instead of borrowing someone else's authority for it.

Source 1 · PwC · 2018

The share who walk after one bad experience

“One in three consumers (32%) say they will walk away from a brand they love after just one bad experience. This figure is even higher in Latin America, at 49%.”

PwC, Experience is everything: Here’s how to get it right, Consumer Intelligence Series, 2018. Fieldwork: PwC Future of Customer Experience Survey 2017/18 — a representative sample of 15 000 people across 12 countries, surveyed online and in-field, 4 000 of them in the US. Accessed 16 Aug 2026.

pwc.com — Experience is everything (PDF)
Source 2 · Harvard Business Review · 29 Oct 2014

The cost of replacing a customer

“Depending on which study you believe, and what industry you're in, acquiring a new customer is anywhere from five to 25 times more expensive than retaining an existing one.”
“…research done by Frederick Reichheld of Bain & Company … shows increasing customer retention rates by 5% increases profits by 25% to 95%.”

Amy Gallo, The Value of Keeping the Right Customers. Context for the Full model only — never a multiplier inside the arithmetic. Accessed 16 Aug 2026.

hbr.org/2014/10/the-value-of-keeping-the-right-customers
Source 3 · Our own published benchmark · July 2026

Where the implementation default comes from

The €40 000 placeholder is integration hours at a typical consulting rate. We publish how that hours range is built, from which figures, and where the derivation is weak on its own page, so you can attack it separately from this one.

The ERP integration benchmark →
Source 4 · Polar Analytics · updated weekly

What acquiring a customer actually costs

There is no audited, cross-industry study of acquisition cost. What exists is platform data, and this is the largest set we found that publishes its method: medians across 4 000+ Shopify brands, tracked since December 2022, stated as medians rather than averages “to avoid skew from outliers”.

Retail $22.74 · Sports & Outdoor $27.66 · Apparel & Accessories $34.03 · Consumer Electronics $43.38 · Beauty & Personal Care $44.29 · Food & Beverage $49.39

Ecommerce Benchmarks: How Do You Stack Up? Accessed 16 Aug 2026

polaranalytics.com/ecommerce-benchmarks
Where this is weak

Why to treat this as a direction, not a forecast.

A model that only lists its strengths isn't a model, it's a brochure. These are the parts we'd attack if a competitor published them.

Three numbers are ours, and they are the whole claim

How many failures we prevent, how many customers we keep through recovery, and what share of status enquiries a proactive update makes unnecessary. Everything else on this page is either yours or published; these three are what we assert about our own effect, and we have no controlled study behind them yet. So they are sliders rather than constants buried in the code. Set all three to zero and the model stops making a case for us entirely — it turns negative, and says so.

Stated intent is not behaviour

Every published churn-after-a-bad-experience figure is a survey answer, including ours: PwC asked people at what point they would stop, and 32% said one bad experience was enough. People say they'll leave far more often than they actually leave, especially when leaving means finding a supplier who has their size, their address and their card on file. Halving it is our judgement, not a finding — and it is the one number here you cannot check against your own books.

One year, no compounding, no ramp

A real rollout doesn't deliver its full effect in month one, and a real business doesn't hold volume flat for a year. Both simplifications exist to keep the arithmetic checkable — the first works against us, the second could work either way.

Orders per customer is doing two jobs

Churn belongs to people, not orders: someone who hits two bad experiences in a year still only leaves once. So we count the customers behind your order volume and ask how likely each one is to meet at least one failure. That needs orders per customer, and the field you filled in describes a retained customer's future ordering — close, but not the same thing. If your one-time buyers pull the real figure lower, failures spread across more people and slightly fewer of them are double-counted, so the number here is the cautious end of a narrow range.

Nothing here counts churn caused by silence alone

A customer whose order arrived on time, but who spent four days in the dark and had to chase you twice, is not a “failure” in this model — so if they quietly leave, we don't count it. We think that pool is real, and we have nothing to size it with, so it is absent rather than estimated. That is the one omission on this page that works against us.

The cost side is the easy half

The fee, the rate and the implementation are the only figures here that arrive as an invoice. If you want a version of this argument with nothing soft in it at all, read the Conservative row and ignore everything to the right of it.

An open invitation

Tell us the model is wrong.

Bring your own failure rate, your own margin, your own quote — or an argument for why one of our assumptions is nonsense. We'd rather fix the page than win the point. And if your promises are already kept — few failures, nobody chasing you — then there is little here for us to fix, and this model will tell you that plainly. If the Conservative row doesn't clear your bar, that's a real answer and we'll say so.