ROI Measurement
How to compute ROI the way your P&L actually sees it: which costs belong in the denominator, what measurement window to use, and the common mistakes that inflate reported returns.
ROI Measurement
ROI measurement is the practice of computing return on investment using full landed costs and a defined time window, so reported returns match what actually hits your P&L.
ROI measurement is the operational discipline behind a single number. The formula is simple — (gain − cost) ÷ cost — but the inputs are where stores quietly lose money. A Shopify brand that reports 4.2x ROI on Meta using ad-platform revenue may be running closer to 1.4x once COGS, shipping, payment fees, returns, and overhead are loaded in. Honest ROI measurement standardises three choices: which revenue figure to use (gross, net, or contribution), which costs to fully attribute, and over what window the gain is allowed to accrue. Get those three right and ROI stops being a vanity number and starts driving budget decisions.
Most stores in the €1M–€15M range report ROI from one of two sources: the ad platform itself, or a finance spreadsheet that imports Shopify revenue and ad spend. Both understate cost. The platform sees revenue and spend only. The spreadsheet usually forgets returns, payment processing, and the cost of the goods you shipped.
The fix is not more dashboards. It is a documented method — what counts as a gain, what counts as a cost, when the clock stops — applied the same way every month. That is what this framework defines, and it is the basis for the more specific calculations covered in ROI vs ROAS and the Marketing ROI Calculator.
What costs to include in the denominator
The denominator in an ROI calculation is the full landed cost of generating the revenue, not just the media spend. For an apparel store running a €40,000 Meta campaign that drove €170,000 of attributed revenue, ad spend is only one of seven cost layers that legitimately belong below the line.
Include: COGS (typically 25–45% of revenue for apparel and beauty), inbound freight and duties amortised per unit, outbound shipping net of any customer contribution, payment processing (1.8–2.9% of gross), returns and refunds as a revenue reduction plus reverse-logistics cost, ad creative production amortised across the campaigns it ran in, and an overhead allocation for the marketing team time spent. Skip any of these and your ROI is a marketing number, not a business number — which is the gap True ROI vs Reported ROI explores in detail.
Choosing the right measurement window
Window choice changes the answer more than people expect. A 7-day click window on Meta will show a meaningfully different ROI than a 28-day window, and a first-order-only ROI will look very different from a 90-day cohort ROI that includes the second purchase. Neither is wrong — but you have to pick one and stick to it across channels and across months, or you are comparing apples to a different apple every reporting cycle.
A practical default for Shopify and WooCommerce stores: measure ROI on a 30-day post-click window for paid channels and a 90-day cohort for the full picture including repeat purchases. Report both. The 30-day number tells you whether the channel is paying for itself in cash; the 90-day cohort tells you whether the contribution margin justifies pushing harder.
Common mistakes that inflate reported ROI
Five mistakes account for almost all the gap between reported and true ROI. First, using gross revenue instead of net of returns — a beauty SKU with a 12% return rate is not generating the revenue the ad platform claims. Second, double-counting revenue across channels when Meta, Google, and Klaviyo all take credit for the same order. Third, forgetting that the gift-with-purchase or 15% welcome discount you ran on the campaign is a real cost, not a marketing flourish.
Fourth, ignoring incrementality: branded search and retargeting often report enormous ROI because they harvest demand that would have converted anyway. Fifth, treating new-customer ROI and blended ROI as the same metric — they aren't. A 1.2x ROI on a first purchase can be excellent if the contribution margin on the second and third orders takes the cohort to 3.5x by month six. The Contribution Margin framework picks up this thread.
The most expensive single mistake
Reporting ROI on ad-platform revenue without subtracting returns. For categories with return rates above 10% (apparel, footwear, some beauty), this single adjustment moves reported ROI down by 12–20% on its own — enough to flip a profitable campaign into a loss-maker without anyone noticing for two quarters.
From reported ROI to true ROI: a worked view
Take the apparel campaign from earlier: €40,000 spent, €170,000 in platform-reported revenue. That's a headline 4.25x ROI, or 325% return. Now load the costs the platform never saw. Returns at 14% drop revenue to €146,200. COGS at 35% removes another €51,170. Shipping net of customer paid is €9,800. Payment processing at 2.4% is €3,509. Discount applied (10% welcome code on 60% of orders) is another €8,772.
Contribution after variable costs: €72,949. Subtract the €40,000 media spend plus €3,500 creative and team allocation, and true ROI lands at roughly 0.68x, or a 68% return — about a fifth of the reported figure, but still positive. That is the number the CFO uses to decide whether to scale spend. Everything else is internal marketing reporting.
Reported vs true ROI as each cost layer is added back
ROI measurement: common questions
ROI = (gain from investment − cost of investment) ÷ cost of investment, expressed as a multiple or percentage. For e-commerce, the 'gain' should be contribution margin after variable costs, not gross revenue, and 'cost' should include media spend plus creative, team time, and tools.
ROAS (return on ad spend) divides revenue by ad spend only — it ignores COGS, shipping, returns, and overhead. ROI divides profit (or contribution margin) by total cost. A 4x ROAS can easily be a 0.8x ROI once landed costs are loaded in. See ROI vs ROAS for the full breakdown.
Net revenue — gross minus returns, refunds, and any discounts applied at checkout. Using gross overstates returns for any category with a return rate above 5%, and inflates ROI further when promo codes are stacked on top.
Report two: a 30-day post-click window for cash-flow decisions, and a 90-day cohort window that includes repeat purchases for budget-allocation decisions. Pick the windows once and apply them consistently across channels and months.
Yes for blended company ROI, optional for channel-level ROI. Most operators allocate marketing team salaries and tooling proportionally to spend, then apply that overhead rate (typically 8–15% of media spend) to each channel.
Pick one source of truth — usually a server-side attribution model or a post-purchase survey — and de-duplicate revenue before computing ROI. If Meta and Google both claim the same €100 order, your blended ROI silently double-counts revenue and overstates returns.
Reported ROI is whatever the ad platform or basic dashboard shows. True ROI accounts for all variable costs (COGS, shipping, payment fees, returns), promo discounts, and overhead. The gap is typically 40–80% — true ROI is almost always lower.
Report both. First-order ROI tells you whether a channel pays back on the initial purchase; cohort ROI including LTV over 90 or 180 days tells you whether the channel is worth scaling. Reporting only LTV-loaded ROI can mask channels with weak immediate payback.
Treat the team and tool costs as the denominator. For email via Klaviyo, that's the platform cost plus the proportion of the team's time spent on email. For organic, it's content production and SEO tooling. Apply the same revenue rules (net of returns, contribution margin).
Monthly at minimum, with a quarterly review of the methodology itself. Cost ratios drift — return rates change seasonally, payment processing rates renegotiate, COGS shifts with FX and supplier changes. A ROI framework that worked in Q1 may be silently wrong by Q3 if the inputs aren't refreshed.
Track CAC, channels, and funnel conversion in one place
Metricuno connects ad spend, funnel events, and revenue so you can see CAC by channel, cohort, and campaign — without stitching together five tools.