How to report marketing results to a board, step by step
Write the definitions once, pull sales, margin and new customers from Shopify, and take spend from each ad account for the same dates. Compare with the same quarter last year, footnote every rule change, freeze the pack as a PDF and end with one decision.
By Joris van Huët, Founder & CEOUpdated 8 min read
Run the numbers for your store: the free repeat purchase rate calculator.
Usually in seven steps, once a quarter. Write down your definitions, pull sales, margin and new customers from Shopify, and take spend from each ad account for the same dates. Compare with the same quarter last year, note every rule change, freeze the pack as a PDF, and end with the one decision you need.
The aim is a page a board member can check against the books and lay next to the last one. Same layout, same definitions, same yardstick every quarter, so the eye goes straight to what moved. Anything a platform claims goes to an appendix, labelled as that platform's claim.
The page has five blocks, always in this order: the top line, customers, marketing spend, what changed in the measuring, and the decision you need. Channel credit and platform numbers sit behind it.
Step by step
- Write the definitions down once. Decide what counts as sales, marketing spend and a new customer, and which report each comes from. Shopify counts a first-time customer as one who placed their first order with your store. Path: Shopify admin > Analytics > Reports > your report > Save as, so it reopens the same way next quarter.
- Pull the top line for two quarters. Open the Finance Summary for last quarter, then again for the same quarter a year earlier. Take net sales and gross profit from the Gross profit breakdown card, and note any net sales with no cost recorded. Path: Analytics > Reports > Category filter > Finances > Finance Summary.
- Split first-time from returning customers. Open New vs returning customers, group it by quarter and compare with the previous year. Divide total marketing spend by first-time customers for a blended cost per new customer. Path: Analytics > Reports > Categories > Customers > New vs returning customers > Compare to > Comparison to past > Previous year.
- Take ad spend for the same dates. In Google Ads, download the quarter's campaigns table, or schedule it to arrive the same way each time. In Meta Ads Reporting, open your saved report and export it as.xlsx or.csv. Path: Google Ads > Campaigns > download icon > Schedule; Meta Ads Manager > Reports > Create custom report > Export.
- Footnote every rule change. List what changed in the measuring during the quarter, with dates. Shopify's sessions update ran from 21 to 23 September 2026; Meta's move to link-click attribution began in March 2026. Shopify's report annotations are not included in exports, so write the notes on the page itself. Path: Google Ads > Campaigns menu > Change history, for your own account's changes.
- Put channel credit in the appendix. Show each channel's share of GA4 credit for the quarter and name the attribution model behind it. GA4 applies a change of reporting attribution model to past data too, so a silent switch rewrites the numbers behind last year's slide. Path: GA4 > Admin > Data display > Events > Attribution settings.
- Freeze the pack. Download each GA4 report as a PDF, print the Shopify reports to PDF, and file them under the quarter. Next year's comparison then uses what the board actually saw. Path: GA4 > Reports > Share this report > Download File > Download PDF; Shopify > Analytics > Reports > your report > Print.
A worked example
For illustration, with round invented numbers for a store's third quarter.
| For illustration | Q3 2025 | Q3 2026 | Change |
|---|---|---|---|
| Net sales | €400,000 | €460,000 | +15% |
| Gross profit (gross margin) | €180,000 (45%) | €197,800 (43%) | +10% |
| Total marketing spend | €80,000 | €115,000 | +44% |
| Gross profit after marketing | €100,000 | €82,800 | -17% |
| First-time customers | 2,000 | 2,300 | +15% |
| Returning customers | 3,000 | 3,600 | +20% |
| Spend per first-time customer | €40 | €50 | +25% |
Say your sales rose 15% on last year: that is the line everyone reads first. If your spend rose 44% to get there, gross profit after marketing fell from €100,000 to €82,800. Say your first-time customers grew 15% while returning customers grew 20%: growth leaned on people who had bought before. If your cost per first-time customer went from €40 to €50, the board should hear it in the first line, not in the appendix.
Two lines on that page do most of the work: gross profit after marketing and spend per first-time customer. Both tie to the books, and both moved the wrong way while sales grew. Under the table go three lines of commentary: what happened, why you think so, and what you will do. For example: sales grew mostly on returning customers. New customers cost more after a channel was added untested. Spend holds flat while that channel is tested in October.
The page then ends with one decision. For example: hold fourth-quarter spend at the third quarter's level unless a holdout shows the extra €35,000 paid, and read the test out in January.
The appendix holds channel credit, labelled as credit. In one store's Channels sheet, Paid Social holds 0.0% of revenue in all three views. If your appendix shows a line like that beside real spend, label it untested, not failed. A channel can earn sales that no tracked click records.
What to check when the numbers look wrong
- Last year's channel figures changed since you reported them. Someone may have switched GA4's reporting attribution model, which rewrites history. Compare with last year's PDF and check Attribution settings before you explain anything.
- An old customer count changed. Shopify builds its customer reports from each customer's entire order history, not only the orders in the dates you pick. Quote the figure you froze, and name the report it came from.
- A spike nobody can explain. Check the annotations before you guess. Shopify adds its own markers for changes such as a metric definition change, and GA4 may annotate a data-impacting event itself.
- Conversion rate jumped in late September. Shopify changed how it counts sessions, not how many people bought. Check orders, sales and customer counts for the same dates first.
- The board asks for ROAS by channel. Put it in the appendix with each platform's attribution setting beside it. Then point to gross profit after marketing as the number that ties to the books.
- Meta's results dropped while spend held. Meta's link-click change can lower click-through results without touching your bill, since Meta says billing does not change. Compare with your own Shopify sales before you call it a slump.
What to do this week
- Save the board reports in Shopify. Group Total sales over time and New vs returning customers by quarter. Then use Save as, with a name like Board pack. Pass: both reopen with the same settings next quarter. Fail: you rebuild them by hand each time, which is how definitions drift.
- Schedule the Google Ads campaign table. On the Campaigns page, click the download icon, then Schedule. Choose a frequency and a format such as PDF. Pass: the report reaches you and whoever builds the pack. Fail: a recipient lacks access, because Google sends these reports only to people with access to the account.
- Archive last quarter's GA4 reports. In Reports, open each report you show the board, click Share this report, then Download File and Download PDF. Pass: the files sit in a folder named for the quarter. Fail: the option is missing because the report is open for customising, so open it from Reports in the left menu.
Check the homework. Your GA4 Attribution paths export already holds the evidence. Causality Engine reads that one file and shows what each channel caused next to what last-click gave it, in 1 to 2 minutes, for €99 once (excluding VAT), refundable within 30 days. Check the homework
Sources, 1 October 2026: Customers reports (Shopify Help Center); Filtering and editing your reports (Shopify Help Center); Finance reports (Shopify Help Center); Setting and comparing time ranges for your reports (Shopify Help Center); Create, save, and schedule reports from your statistics tables (Google Ads Help); Export and share reports in Meta Ads Reporting (Meta Business Help Center); Changes to sessions and conversion rate in Shopify Analytics (Shopify Help Center); Simplifying Ad Measurement for a Social-First World (Meta, 3 March 2026); Annotations in your Shopify reports (Shopify Help Center); About change history (Google Ads Help); Select attribution settings (Google Analytics Help); Share & export reports (Google Analytics Help); About annotations (Google Analytics Help); Exporting reports (Shopify Help Center)
Related answers
Frequently asked questions
Can I automate a board marketing report?
Partly. Google Ads can email a scheduled report, Meta Ads Reporting can export or share a saved report, and Shopify reports can be saved and reopened. The commentary cannot be automated: what changed, why it changed, and what you will do next.How far back can I compare in Meta Ads Reporting?
Meta says the maximum reporting window is 37 months from the date of your request. Export each quarter's spend and results when you close the quarter, so next year's comparison does not depend on what the platform still shows.Should a board report use GA4 revenue or Shopify revenue?
Shopify's, or your books', for the top line. GA4 only counts what its tag recorded, so its revenue can differ from what the store sold. Use GA4 for channel shares and trends, labelled as credit, in the appendix.
Go deeper: Causal attribution, explained.
Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.
Keep reading
Terms in this article
- AnalyticsAnalytics is the systematic computational analysis of data. It reveals customer behavior and measures campaign performance.
- AttributionAttribution identifies user actions that contribute to a desired outcome and assigns value to each. It reveals which marketing touchpoints drive conversions.
- Attribution ModelAn Attribution Model defines how credit for conversions is assigned to marketing touchpoints. It dictates how marketing channels receive credit for sales.
- CausalityCausality is the relationship where one event directly causes another, essential for identifying specific actions that drive desired outcomes in marketing.
- ConversionConversion is a specific, desired action a user takes in response to a marketing message, such as a purchase or a sign-up.
- Conversion rateConversion Rate is the percentage of website visitors who complete a desired action out of the total number of visitors.
- Google AdsGoogle Ads is an online advertising platform where advertisers bid to display ads, service offerings, and product listings.
- Google AnalyticsGoogle Analytics is a web analytics service that tracks and reports website traffic.