ROI Calculator

Setup —
* Required. Defaults are shown so the page runs, but replace every starred field with their number before you send this.
Pages & content—
Assumed, so nobody has to answer it: a review round adds 5 calendar days, and a post-launch read needs 14 days of traffic before it means anything. Both show on the slide.

Why no CTR or CVR

The roles that decide are the smallest slice of your traffic. Fix them and your page numbers do not move.

Economic Buyer 7% of your traffic Lift that slice 2% → 3% 3,800 sessions per arm = 2 years Blended, that same fix reads 2.00% → 2.07% To see 2.07% at all 600,000 sessions per arm = never

And analytics cannot tell you which sessions were theirs.

So we count what you can count. We never claim a lift.

How each number is built
Pages & content · counted(rounds today − rounds after) × hours saved × marketing rate × assets/yr × your confirmed rate
What it costs in team time to get one asset through review, before and after.
Learning cycles · countedhours saved × cycles/yr × marketing rate × your confirmed rate
The work of finding out whether a shipped asset is working. No overlap with the review line: that one is the argument before a page ships, this one is the cycle after it.
Two things are deliberately absent. The wait, because nobody sits idle while traffic accumulates, so calendar time never becomes money — it is on line 4, in days. And the run's own cost, because the plan price is already the denominator of the ratio; deducting it here would charge for it twice.
Ads · protectedspend/mo × (flagged ÷ checked) × (days to next review ÷ 30) × campaigns/yr × your confirmed rate
The committee run says what the page answers, the ad run says what the creative promised, and we count the gap.
No overlap with the pages line. That one counts marketing hours before launch, this one counts paid clicks after it.
Email · counted(reviewers × hours × rounds removed × marketing rate + copywriter × rounds removed) × sends/mo × 12 × your confirmed rate
Audience — cost per lead · observed(control CPL − test CPL) × leads/mo × 12 × haircut
Haircut is 0.5 when the test window is under 30 days. No confirmed-rate haircut: this one you measured.
Audience — targeting · protectedpaid social spend/mo × share outside your target function × 12
Read the share off the platform's own demographics report, never an estimate.
Audience — expansion · counted(hours × marketing rate + research cost) × assessments/yr
Line 4 — speedrounds removed × 5 days per asset, 14 days per post-launch read, and the same arithmetic per send on email. Those two day figures are ours, not theirs, and they are printed on the slide. Listed, never summed: those cycles run in parallel, and a summed figure is the double count a CFO looks for.
AccuracySet per section, because a page run and an ad run are not graded by the same people on the same evidence. Every counted and protected line in a section is cut by its own rate. Blank, and we use our published 84% and say so.
The measured cost-per-lead line is never cut: that one you observed, so a haircut would be us discounting your own data.
The ratio(every line above) ÷ annual price, always rounded down.
— — See the slide