How to report marketing results to a client
A monthly client report for a Shopify brand that holds up: agreed questions, one revenue source of truth, stated attribution settings and next steps.
What this is for
A client report has one job: help the client decide what to do next month. Most reports fail at it for the same reasons. They paste every channel's own revenue figure into one table, those figures overlap, the total is bigger than the store's actual sales, and the client stops trusting any of it.
This guide sets up a monthly report for a Shopify brand that stays honest: it starts from the questions you agreed with the client, uses the store's own sales as the total, says how each channel counts its credit, and ends with decisions. It suits agencies and freelancers running email, ads or both.
Time needed and what you need
Time needed: about 3 hours for the first report, 1 hour a month after. The first month goes on access, settings and building the template; after that it is pulling numbers, writing the story and the call.
- The client's goals for the quarter, in their words
- Collaborator access to their Shopify store and a reporting role in Klaviyo
- Access to their ad accounts and Google Analytics, if you run or report on those
- Last year's numbers for the same month, so you can compare like with like
The steps
Steps 1 to 4 are done once per client. Steps 5 to 8 are the monthly routine.
1. Agree the questions before you build anything
At kickoff, ask the client what they will use the report for. "Is email paying for itself?" and "Can we spend more on ads?" need different numbers. Agree three to five headline numbers, the goal for each, and the date the report arrives each month. Write it down and send it back to them; that note settles most arguments later.
2. Get access that will not quietly lapse
Ask for a Shopify collaborator account with only the permissions you need, and check in at least once a quarter: unused collaborator access expires on its own. In Klaviyo, make sure your user can see reports at all, because content roles cannot. source, checked 28 September 2026
Klaviyo limits reporting to four roles, so ask the client to add you as an analyst if you only need to read results. source, checked 28 September 2026
3. Make Shopify's sales the only total
Every tool credits itself. Klaviyo counts an order if the buyer opened or clicked an email within its window, an ad platform counts it if they saw or clicked an ad, and the same order can appear in both. Use Shopify's total sales as the one revenue figure, and show each channel's own number as its view, never as a slice of the total. Shopify's marketing reports use last non-direct click by default, which is a sensible neutral view to show alongside. For automated emails, the guide to reading a Klaviyo flow report explains which columns belong in a client summary. source, checked 28 September 2026
4. Record each tool's attribution settings in the report
Check the client's Klaviyo conversion window and write it in the report's footnotes. Accounts created after October 2024 default to 5 days for email, but older accounts or a previous agency may have changed it, and a different window makes month-on-month comparisons meaningless. source, checked 28 September 2026
Report on whole months or longer. Klaviyo credits conversions to the day a message was sent, so a report on a single day or a short range undercounts campaigns sent near its start. source, checked 28 September 2026
5. Tag every link the same way
Agree a UTM naming scheme with the client and use it everywhere you send traffic: one source value per platform, one medium per channel, and the campaign name exactly as it appears in the tool. Inconsistent tags split one campaign into several rows and make channels look smaller than they are. The free UTM builder keeps the format consistent. source, checked 28 September 2026
6. Write the report in four parts
Keep it to one or two pages. Clients read the first paragraph and the last one; put the answer to their question in the first and the decision you need from them in the last.
- Headline: what happened against the goal, in two sentences
- Numbers: this month, last month, same month last year, with the goal beside each
- What we did and what it did: each campaign or test with its result, including the ones that did not work
- Next month: the plan, and any decision or asset needed from the client
7. Explain anything that changed how numbers are counted
Before you blame or credit marketing for a swing, rule out measurement. A change in a platform's tracking, a time zone mismatch between tools, a big sale or a stock-out can each move a number more than a month of work. Shopify, for example, changed how sessions are measured between September 21 and 23, 2026, so conversion rate comparisons across that date need a footnote. source, checked 28 September 2026
8. Walk the client through it and record the decisions
Send the report a day before a short call, not instead of one. On the call, go straight to the decisions. Afterwards, add the agreed decisions to the top of next month's report, so every report opens by showing what was decided and what came of it.
A worked example
For an agency reporting September to a loose-leaf tea brand client
Worked example (an invented agency and client, with invented numbers)
Shopify shows $48,000 in total sales for September. Klaviyo credits $14,400 to email and Meta credits $12,000 to ads. Added together, the channels claim $26,400, but some of the same orders are in both, so the report does not add them up or subtract them from Shopify's total.
Ad spend was $4,000, so the store's total sales were 12 times ad spend, against 10 times the month before. The report puts Shopify's $48,000 first, then each channel's own figure with its attribution window beside it.
The headline reads: sales up $6,000 on last September, email held steady, ads improved after the new creative. The decision asked for: raise ad spend by $1,000 for October.
Common mistakes
Adding each channel's reported revenue together. The total will be larger than the store's real sales and the client will notice. Use Shopify's sales as the total and present channel figures side by side.
Expecting Klaviyo and Google Analytics to agree. Klaviyo reads orders from the store and counts opens and clicks within its window; Google Analytics relies on link clicks. The two will differ, so explain why once and pick which one each question uses. source, checked 28 September 2026
Reporting only what went well. Clients trust a report more when it names the test that failed and what you learned. Include it with what you will do differently.
Sending forty charts and no conclusion. The client has to work out what it means, and usually does not. Lead with the answer and the decision, and put the detail in an appendix.
Doing this with Tilly
Reports in Tilly cost no credits, so pulling results for a client does not eat into the budget you use to build campaigns. On the Agency plan, at $399 a month with 6,000 pooled credits, each client gets its own workspace with no limit on the number of workspaces.
Everything Tilly builds for a client, from a Klaviyo draft to a paused Meta ad, waits for approval before it publishes, which gives you a clear record of what was agreed before it went out.
Questions people ask
How often should I report to a client?
Monthly suits most Shopify brands, with a short written note in weeks with a launch or a big sale. Weekly reports on small stores mostly show noise, because a handful of orders can swing any number.
Which ads number should I show next to Shopify's sales?
Show total sales divided by total ad spend as the main figure; the glossary entry on MER explains it. Keep the platform's own ROAS as a secondary number for judging campaigns inside the account.
What if Shopify and Google Analytics disagree on sessions?
They usually will. They count reloads, bots and visitors who block tracking differently, and time zones can shift a day's numbers. Pick one for traffic questions, say which in the report, and stick with it. source, checked 28 September 2026
See this on your own store
Paste your store URL. The first pass takes about a minute and needs no account. Save a card (nothing is charged) and Tilly reads the whole store and works out who buys from you.