Online retail: reporting on margin, not platform ROAS
An illustrative $8M online homewares brand on Shopify and Klaviyo is paying more for paid social every quarter, while three agencies report three versions of success. One contribution-margin model, rebuilt retention flows and a fortnightly creative testing cadence show which spend pays for itself and bring more revenue from customers the brand already has.
This is a worked example: a realistic scenario we've built to show how we'd approach the problem. The organisation is fictional, and every number is a stated assumption or a calculation from those assumptions. It is not a client case study and makes no claim about results.
The situation
Revenue has grown, but profit hasn't kept pace. Paid social costs more each quarter, and the founder spends Sunday nights reconciling three agency reports that each claim a share of the same sales.
Each agency reports return on ad spend (ROAS) from its own platform. Added together, platform-reported revenue is more than Shopify actually recorded, and none of the reports include product cost, shipping, payment fees or discounts. Nobody can say which channel is making money.
The Klaviyo flows were set up at launch and haven't been touched since. Campaign emails go out mostly when there is a sale on, which teaches customers to wait for the next discount.
Constraints we'd work within
- Shopify and Klaviyo stay. They suit a brand of this size, and the team knows them well.
- Cost data is incomplete: some variants have no cost per item in Shopify, and freight-in and 3PL charges arrive as monthly invoices in Xero.
- Agencies are mid-contract, and nothing can pause campaigns during November and December trading.
- Email and SMS marketing must meet Spam Act consent, identification and unsubscribe requirements.
- There is no analyst on staff, so reporting has to run without someone maintaining spreadsheets every week.
What the Diagnostic would find
Findings by lens, with the commercial effect of each. See how the Diagnostic works.
| Lens | Observation | Commercial effect |
|---|---|---|
| Data & reporting | Each platform counts a sale within its own window after a click or a view. Google Ads, for example, defaults to 30 days after a click and 1 day after a view. When a customer touches two platforms, both can claim the same order. | Budget follows whichever channel reports the best ROAS, not the one producing the most margin, and the founder can't reconcile any report to the bank account. |
| Strategy & commercial model | Targets are set in revenue. There is no target for contribution margin per order, and no ceiling on what the brand will pay to acquire a new customer. | The business can grow revenue while losing money on first orders, especially in discount-heavy months. |
| Systems & technology | Shopify's profit reports only include variants that had a cost recorded when they sold, and several ranges have none. Shipping and pick-and-pack costs sit in Xero, a month behind. | The platform's own profit figures leave out part of the range and most fulfilment costs, so true margin per order is unknown until month-end, if at all. |
| Growth & marketing maturity | Only welcome and abandoned-cart flows exist, both unchanged since launch. There is no browse, post-purchase or win-back flow, and paid social relies on a few ads refreshed only when results drop. | Repeat purchases depend on discounts, and acquisition costs rise as the same creative wears out. |
| Operations & process | Three agencies, three briefs, three monthly meetings and no shared plan. Creative made for paid social is rarely reused in email, and the reverse. | Founder time goes on coordinating suppliers, and the brand pays to produce assets that only run in one channel. |
| AI readiness & opportunity | Weekly commentary is written by hand from screenshots. Once orders, spend and costs are joined, the data is structured enough for AI to draft the commentary for a person to check. | Hours back each week, and decisions made on Monday from one set of numbers instead of mid-month from three. |
The moves
Every recommendation resolves to one of nine moves: build, buy, improve, integrate, automate, remove, change, train or leave alone. Building is only one of them.
- Leave alone
Shopify and Klaviyo as platforms. They are the right tools at this size; the problem is how they are configured and reported, not the software.
- Buy
An off-the-shelf data connector to pull Shopify, Meta, Google, Klaviyo and Xero data into one store each day, rather than building and maintaining custom pipelines.
- Integrate
Product cost, 3PL charges, payment fees and returns joined to each order, after completing cost per item on every variant, so contribution margin per order can be calculated daily.
- Build
One contribution-margin dashboard by day, channel, product and new versus returning customer, with ad spend judged against margin rather than platform ROAS.
- Improve
Rebuild the welcome, browse, cart, post-purchase and win-back flows in Klaviyo, with fewer default discounts and product recommendations based on what each customer bought.
- Change
Move paid social from ad hoc refreshes to a fortnightly creative testing cadence, with one hypothesis per test and results judged on margin per order and new-customer cost.
- Automate
A weekly AI-drafted commentary on what moved and what to check, written only from the joined data and reviewed by the e-commerce manager before it reaches the founder.
- Remove
Three separate agency reporting decks. Every supplier works to the same scoreboard and the same definitions.
The system, end to end
Orders, spend and costs are pulled each day into one model that calculates contribution margin per order. The dashboard and a weekly AI-drafted commentary, checked by a person, drive decisions on budget, creative and retention flows, and the results flow back into next week's data.
- Shopify, Klaviyo and ad platforms
- 3PL, payment and Xero costs
- Data connector
- Contribution-margin model
- One dashboard
- AI-drafted weekly commentary
- Human review and decisions
- Budget, creative and flow changes
Margin model
Revenue per order less discounts, product cost, shipping and pick-and-pack, payment fees and returns, with ad spend allocated by channel and day. The rules are written down so anyone can check the arithmetic.
One dashboard
Contribution margin by day, channel, product and new versus returning customer, new-customer acquisition cost, and Shopify-recorded revenue shown beside platform-reported revenue so the gap stays visible.
Retention flows
Welcome, browse abandonment, cart abandonment, post-purchase and win-back flows rebuilt in Klaviyo, with consent checks, frequency limits and discounts used deliberately rather than by default.
Creative testing cadence
A fortnightly plan for paid social: a fixed number of new concepts, one variable changed at a time, and a shared library so winning creative is reused in email and on site.
Weekly commentary
An AI draft of what moved, the figures behind it and what to check next, reviewed and edited by the e-commerce manager. It reports; it never changes a budget or a campaign by itself.
Measurement rules
Clicks and placed orders as the main email measures, because Apple Mail Privacy Protection downloads email content in the background, which makes open counts unreliable. Consistent tracking tags across every supplier.
Delivery stages
Indicative timings.
Diagnostic and data audit
Audit ad accounts, Klaviyo flows, tracking and cost data, reconcile one month of platform-reported revenue against Shopify, and agree the margin rules and targets with the founder.
2 to 3 weeks (indicative)
Margin model and dashboard
Connect sources, complete cost data, build the model and dashboard, and check it against last quarter's Xero figures before anyone relies on it.
4 to 6 weeks (indicative)
Retention flows
Rebuild the five core flows one at a time, comparing each against its previous version or a holdout group so the effect of each change is measured.
4 to 6 weeks (indicative)
Creative cadence and commentary
Start the fortnightly testing plan, switch on the weekly commentary, and move every agency onto the single scoreboard after peak trading.
2 to 4 weeks, then ongoing (indicative)
90-day review
Review margin by channel and product, then reallocate budget and reset targets using contribution margin rather than ROAS.
At 90 days (indicative)
The arithmetic
Assumptions first, then the calculations they produce. Change an assumption and the result changes with it, which is the point.
| Assumption | Value |
|---|---|
| Annual revenue | $8,000,000 ex GST (assumption) |
| Average order value | $125 ex GST (assumption) |
| Landed product cost | 40% of revenue (assumption) |
| Shipping, pick-and-pack and payment fees per order | $16 (assumption) |
| Annual paid media spend | $1,200,000 (assumption) |
| Rise in paid media cost for the same orders next year if nothing changes | 15% (assumption) |
| Extra repeat orders from rebuilt flows | 2% of current annual orders (assumption) |
| Time spent compiling and reconciling reports | 6 hours a week today; 1.5 hours a week reviewing the AI draft (assumption) |
Contribution per order before marketing
$125 − (40% × $125) − $16 = $125 − $50 − $16
$59 per order (modelled)
Contribution after paid media, today
Orders: $8,000,000 ÷ $125 = 64,000. Then 64,000 × $59 = $3,776,000; $3,776,000 − $1,200,000
$2,576,000 a year (modelled)
Do-nothing baseline next year
Same 64,000 orders, paid media 15% dearer: $1,200,000 × 15% = $180,000 more spend; $2,576,000 − $180,000
$2,396,000 a year, with no extra revenue (modelled)
Rebuilt retention flows
64,000 × 2% = 1,280 extra repeat orders; 1,280 × $59
About $75,520 a year in contribution, before Klaviyo costs and any discounts (modelled)
Reporting time released
(6 − 1.5) hours × 48 working weeks
216 hours a year of founder and manager time (modelled)
What we'd measure
- Contribution margin after marketing, weekly and by channel
- New-customer acquisition cost against first-order contribution
- Gap between platform-reported revenue and Shopify-recorded revenue
- Placed-order rate and revenue per recipient, by flow
- Share of revenue from returning customers, and the discount rate on those orders
- Creative tests run each fortnight, and the share that beat the control on margin per order
Risks and how we'd manage them
Cost data is incomplete or wrong
We reconcile the model to Xero before anyone uses it, flag variants with no cost, and show a data-completeness score on the dashboard so gaps are visible rather than hidden.
Agencies resist a shared scoreboard
Agree the definitions in writing, give every supplier access to the same dashboard, and make the change after peak trading so no campaign is paused.
The AI commentary says something the data doesn't support
The draft can only use figures from the model, cites the numbers it relies on, and a named person reviews it before it is sent. It never adjusts budgets.
Flows over-mail customers or miss consent rules
Express consent captured at sign-up and checkout, the brand identified in every message, a working unsubscribe honoured within five working days, and frequency limits across flows and campaigns. We check against the rules; legal advice settles anything uncertain.
The takeaway
Platform ROAS tells you which channel is best at claiming credit. Contribution margin per order tells you which spend pays for itself, and this system puts that number in front of the founder every Monday.
Services in this example
- Reporting & dashboardsOne source of truth for finance, sales, marketing and operations: agreed definitions, automated data pipelines and AI commentary that explains the numbers.
- Email & marketing automationLifecycle email and SMS flows from enquiry to win-back, built around Spam Act consent rules and authenticated for deliverability. See what's included.
- Paid mediaGoogle, Meta, LinkedIn and YouTube ads managed to booked revenue, with CRM sales sent back to the platforms. Spend paid direct to them, never marked up.
- Content & creativeArticles, service pages, short video and ad creative drafted from your brand knowledge base, then edited and approved by people. Shoot days from $2,500.
- System integrationsConnect your CRM, Xero, job system and email so nobody re-keys data. APIs, webhooks and sync rules, plus monitoring that alerts you to failures first.
Recognise your business in this?
A 30-minute call is enough to tell whether the same moves would pay off for you.
Sources
Third-party facts on this page, checked 14 October 2026.
- About conversion windows, Google Ads Help. support.google.com/google-ads/answer/3123169?hl=en
- Profit reports, Shopify Help Center. help.shopify.com/en/manual/reports-and-analytics/shopify-reports/report-types/default-reports/profit-reports
- Protect email privacy in Mail on Mac, Apple Support. support.apple.com/en-gb/guide/mail/mlhlp1205/mac
- Avoid sending spam, Australian Communications and Media Authority. www.acma.gov.au/avoid-sending-spam