What Good Ecommerce Agency Reporting Looks Like (Template)
See what a useful ecommerce agency report includes beyond ROAS: blended MER, CAC, contribution margin, holdouts, and a copyable marketing report template.
Mark Cijo
Founder, GOSH Digital

A useful ecommerce agency report shows whether the business got healthier, not whether Meta printed a pretty ROAS. It should cover blended MER, new-customer CAC, contribution margin, email and SMS incrementality (via holdouts), flow vs campaign split, list health, what was tested, what changed, and the next actions with owners.
If your monthly PDF leads with impressions, platform-attributed revenue, and a 4x screenshot, you're looking at a marketing report template that protects the agency, not the P&L.
This is the scoreboard I'd demand as a founder. Copy the template at the bottom. Then hold last month's deck against it.
Last reviewed: November 7, 2026.
What should an ecommerce agency report include?
Start with the business. Then explain the channels. Then say what you will do next.
A founder should be able to read the first page in two minutes and know:
- Did net revenue and contribution go up or down?
- Did we buy new customers at a cost we can live with?
- Did retention add incremental revenue, or did a platform just claim credit?
- What changed because of the work?
- What happens next, who owns it, and by when?
Everything else is diagnostic. CPC, CTR, open rate, and platform ROAS explain why the business moved. They're not the result.
Here's the core set I want in every ecommerce agency report.
Blended MER. Total store revenue divided by total media spend. Human Marketing defines MER as a backend, business-level ratio: it doesn't care which platform claimed the click. Use it as the control metric for the mix.
New-customer CAC (and aMER). Acquisition spend divided by first-time buyers. aMER is the revenue twin: new-customer revenue divided by the same spend. Returning buyers make blended CAC look cheap. You need both. Full formulas live in blended CAC vs new-customer CAC.
Contribution margin. Revenue left after variable costs. Shopify's contribution margin guide defines it as sales minus the variable expenses of producing the product. Agree with your agency which costs sit in the formula (COGS, shipping, fulfillment, payment fees, discounts, refunds, ad spend) and keep that definition stable month to month.
Net revenue, not gross. Shopify's sales reports define net sales as gross sales minus discounts minus sales reversals. Shipping and tax sit outside that number. Source: Shopify sales report terms.
Email and SMS incrementality. Platform-attributed email revenue is not lift. A holdout (treatment vs control) is how you measure the extra revenue the program actually created. Setup is in how to run a Klaviyo holdout test.
Flow vs campaign split. Flows are the machine. Campaigns are the manual pushes. If you only see one blended email number, you can't tell which one is carrying the account.
List health. Engaged subscribers, unsubscribes, spam complaints, bounce rate, list growth vs churn. List size without engagement is a vanity metric.
What was tested, what changed, next actions. A report without decisions is a recap. Recaps don't grow revenue.
Channel metrics still matter. They just belong one layer down, after the P&L story. For the paid side, that is paid media. For retention, that is email and SMS.
Why isn't platform ROAS enough in an ecommerce agency report?
Google Ads describes Target ROAS as the average conversion value you want for each dollar spent on ads. That's a bidding target, not a profit line. Source: About Target ROAS bidding.
ROAS typically doesn't subtract COGS, shipping, payment fees, refunds, or agency fees. It also depends on who gets credit. Platforms and analytics tools can report different revenue for the same week because they assign that credit differently. Google Analytics attribution documents how models assign credit across touchpoints. None of those models is your bank account.
Two campaigns can print the same ROAS and produce very different profit.
Illustrative example (made-up round numbers, not a client result):
| Metric | Campaign A | Campaign B |
|---|---|---|
| Attributed revenue | $80,000 | $50,000 |
| Ad spend | $20,000 | $12,500 |
| Platform ROAS | 4x | 4x |
| COGS | $40,000 | $15,000 |
| Shipping, fees, returns | $12,000 | $7,500 |
| Contribution after ad spend | $8,000 | $15,000 |
Campaign A looks bigger. Campaign B made nearly twice the contribution. A ROAS-only ecommerce agency report would scale A. A profit-aware report would scale B.
That's why break-even ROAS and MER belong on the same page. If you don't know your profit line, you can't interpret any of these numbers. Work the formulas in break-even ROAS and MER.
How do you spot vanity reporting in a marketing report template?
Vanity reporting is easy to recognize once you know what it is hiding.
It leads with a platform screenshot. Meta ROAS, Google ROAS, Klaviyo-attributed revenue stacked until they exceed actual store sales. Nobody reconciles to Shopify net sales.
Activity stands in for outcomes. "We launched 12 campaigns" and "we sent 8 emails" with no result attached. That's a timesheet.
Open rates and impressions sit above contribution. Engagement is a diagnostic. It is not proof the business made money.
One ROAS target covers the whole catalog. A 3x target can be fine on a high-margin SKU and unsustainable on a heavy, high-return SKU. If the report never splits products, the average is lying.
Email is one blended number. No flow vs campaign split. No holdout. No list health. Just "email drove $X," which is last-touch credit, not incrementality.
No tests, no owners, no next actions. If the last page is a logo, the report is a leave-behind, not a decision document.
If that list feels familiar, it's not a personality clash. It's a reporting design problem. Some of the same tells show up in marketing agency red flags. Use them when you compare the people doing the work, not just the PDF. The hiring version of that question is Klaviyo agency vs freelancer vs in-house.
If you want GOSH to score your current ecommerce agency report against this template and audit the account behind it, book a free 30-minute reporting audit. Bring last month's deck. We'll tell you what's missing and what we'd change first. Klaviyo Gold Partner. 150+ clients. $70M+ revenue driven. Pricing starts from $1,500/mo.
What belongs in a weekly vs monthly ecommerce agency report?
Not every metric deserves the same meeting.
Daily is for problems: tracking broken, spend spikes, feed issues, refund spikes, a flow that stopped sending. You're catching fires, not rewriting strategy from one day of data.
Weekly is for operating decisions. Blended MER, new-customer CAC, contribution movement, budget pacing, tests in flight, flow vs campaign revenue, list health. This is where you reallocate spend and kill a weak test.
Monthly is for business impact. Did net revenue and contribution improve? Did acquisition get cheaper or more expensive in a way that still pays back? What did product mix do to margin? What did we learn from tests? What will we change next month?
Quarterly is for the growth model. Cohorts, payback, channel concentration, retention, whether the file can support the next stage of spend.
Don't make every Slack ping a strategy review. Don't wait 90 days to notice MER fell under your break-even line.
How should email and SMS show up in an agency report?
Ads and retention belong in the same ecommerce agency report because they share customers.
If paid media "works" and email is a screenshot of Klaviyo-attributed revenue, you'll double-count. Klaviyo uses last-touch attribution by default. Default lookback windows for new accounts are 5 days for email clicks and 5 days for email opens. Source: Understanding Klaviyo message attribution. A loyal buyer who was going to reorder can still land in the email column.
Show both layers:
- Attributed revenue, labeled as attributed, not causal
- Flow vs campaign split, so you can see whether the machine or the calendar is carrying the month
- Revenue per recipient, so list growth doesn't hide weaker emails
- Holdout lift when you have it (treatment vs control). That's incrementality. Klaviyo's built-in global holdout is documented in getting started with global holdout groups
- List health: engaged rate, unsubscribes, spam complaints, bounces, growth vs churn
- Tests: subject, offer, flow delay, segment, with a keep/kill/iterate call
If you need the dashboard view of those metrics, use building a custom Klaviyo reporting dashboard.
GOSH is retention-led on purpose. Paid media should feed a file that email can actually monetize. One health and wellness program GOSH ran made $22.3M from email over 31 months. That number only matters next to acquisition cost and contribution, which is why it belongs in the same report as ads, not in a separate "email update."
What does a reusable ecommerce agency report template look like?
Copy this. Keep the definitions identical every period. If a row is blank, the report is incomplete.
Ecommerce agency report template
Period: [week starting / month]
Compared to: prior period (pick one comparison and stick to it)
Prepared by: [name]
Data sources: Shopify net sales, ad platforms, Klaviyo, finance/COGS file
1. Executive summary (10 lines max)
- Net revenue: $ / % vs prior
- Contribution after ads: $ / % vs prior
- Blended MER:
- New-customer CAC / aMER:
- One sentence: what drove the change
- One sentence: what we will do next
A founder should be able to stop here and still run the business.
2. Profitability snapshot
| Line | This period | Prior period | Change |
|---|---|---|---|
| Gross sales | |||
| Discounts and sales reversals | |||
| Net revenue | |||
| COGS | |||
| Shipping, fulfillment, payment fees | |||
| Ad spend (all paid channels) | |||
| Contribution after ad spend | |||
| Contribution margin % | |||
| Blended MER |
Use Shopify net sales (gross minus discounts minus sales reversals) as the revenue start. Don't add Meta's number to Google's number and call it a store.
3. Acquisition
| Metric | This period | Prior | Note |
|---|---|---|---|
| New customers | From Shopify, not from ads manager | ||
| New-customer CAC | Spend / new customers | ||
| aMER | New-customer revenue / spend | ||
| Break-even ROAS / MER | From your margin model | ||
| Channel ROAS (diagnostic) | Meta, Google, other. Not the headline |
4. Retention (email and SMS)
| Metric | This period | Prior | Note |
|---|---|---|---|
| Attributed email/SMS revenue | Label as attributed | ||
| Flow revenue vs campaign revenue | Split required | ||
| Revenue per recipient | |||
| Holdout lift (if running) | Incremental, not attributed | ||
| Engaged list / unsub / spam / bounce | List health | ||
| List growth vs churn |
5. Tests
| Test | Channel | Hypothesis | Result | Decision |
|---|---|---|---|---|
| Paid / email / SMS / site | Keep / kill / iterate |
If this table is empty two months in a row, you're paying for maintenance, not growth.
6. Changes shipped
Bullet the work that actually went live. New flow, bid change, feed fix, segment, offer. Tie each item to a metric in sections 2 to 4. "Created four campaigns" is not a change worth listing unless you can say what it did.
7. Next actions
| Owner | Action | By when | Success metric |
|---|---|---|---|
If there's no owner, it won't happen.
Weekly vs monthly: what to fill
| Block | Weekly | Monthly |
|---|---|---|
| Executive summary | Yes, short | Yes, with the business story |
| Profitability snapshot | MER, contribution, spend | Full P&L walk |
| Acquisition | New-customer CAC, pacing | CAC, aMER, payback |
| Retention | Flow vs campaign, list health | Holdout, cohort, list trend |
| Tests | In-flight calls | What we learned |
| Next actions | Operating moves | Strategy changes |
That's a marketing report template for ecommerce you can reuse without buying another dashboard. The structure is the product. The software is optional.
For a longer take on profit-first agency reporting (paid media and Shopping in particular), see MerchantFlow's ecommerce agency reporting guide. The retention block above is the piece most paid-only reports still skip.
What should you ask your current agency after you read this?
Take last month's report and ask these out loud. You want answers in numbers, not in adjectives.
- Can you walk me from Shopify net sales to contribution after ads? If they can't, they're reporting platforms, not the business.
- What was new-customer CAC, and what was blended CAC? If they only have blended, returning buyers are hiding the cost of growth.
- What is our break-even MER, and where did we sit against it? If they don't know the floor, they can't know whether to scale.
- Of the email revenue in this deck, how much is incremental vs last-touch? If there's no holdout, they should say so, not pretend attributed dollars are lift.
- What is the flow vs campaign split, and which flow actually moved? One blended email number is a hide.
- What did we test, what did we kill, and what do we do in the next 14 days? If the answer is "keep optimizing," you don't have a plan.
You're not being difficult. You hired an agency to grow the business. The report should prove that happened in dollars you can take to the bank.
What should you do once you compare reports?
Print the template. Score last month's ecommerce agency report against it. If more than three rows are blank, you don't have a report. You have a vanity deck.
Then decide whether you want that fixed.
GOSH Digital will audit the report and the account behind it: paid, Klaviyo, and the definitions your team is using for MER, CAC, and contribution. 150+ clients. $70M+ revenue driven. $23M+ ad spend managed. Klaviyo Gold Partner. Headquartered in Dubai, founded in 2021.
Book a free reporting and account audit. Bring the PDF. We'll tell you what's missing, what's vanity, and what we'd change first.
Sources:
- Shopify sales report terms: net sales = gross sales minus discounts minus sales reversals
- Shopify: contribution margin: sales minus variable expenses of producing the product
- Google Ads: About Target ROAS bidding: Target ROAS as conversion value per dollar spent
- Google Analytics attribution: how credit is assigned across touchpoints
- Human Marketing: MER vs ROAS vs aMER: MER as total sales / total media spend
- Klaviyo message attribution: default 5-day email click and open windows
- Klaviyo global holdout groups: incrementality test setup
- MerchantFlow: ecommerce agency reporting: profit-first reporting structure for agencies
Related reading:

Written by Mark Cijo
Founder of GOSH Digital. Klaviyo Gold Partner. Helping eCommerce brands grow revenue through data-driven marketing.
Book a free strategy call →

