Reporting

Marketing reports: how to build one that changes a decision

ReportingVadym Kramarenko7 min read

Marketing reports: how to build one that changes a decision

The usual failure of a marketing report is not that it is wrong. It is accurate, it arrives on time, and often nobody does anything differently after reading it. It lists what the tool made easy to list: sessions, clicks, CTR, followers.

This page builds a report the other way round, from the decision it has to support. It includes one worked report with the numbers, the types of marketing report people ask for, how often to send each, and a check to run before it goes out.

What a marketing report is for

What a marketing report is for

A marketing report exists to support a decision someone will make. Everything else is an export. The test is simple: for every number on the page, name who changes what when that number moves. If the answer is nobody, take the number out.

A report also has to survive a challenge. Someone in the room will ask where a number comes from, or why it differs from the one in the ad platform. A report that cannot answer that costs the person presenting it more than a report that was never sent.

Start from the decision, then pick the metrics

Start from the decision, then pick the metrics

Decision Metrics that bear on it What changes when they move
Where does next month’s paid budget go? Spend, orders and net revenue by platform, spend per order, ROAS The budget split between platforms
Where does the funnel lose people? Sessions, add-to-cart, checkout starts and orders, and the rate between each stage Which stage gets fixed first
Which creatives stay live? Spend, CTR, conversions and frequency per creative Which ads are paused
Is the channel mix shifting? Sessions and orders by channel, month over month The channel plan
Did the campaign pay back? Cost, and net revenue with cancelled and returned orders excluded Whether it runs again

A metric that no decision depends on can stay in the platform’s own view. Impressions, for example, do not change how the budget is split when it is decided on orders.

The Turning Point

OWOX Data Marts

See your first report built in real time. 15 minutes.

  1. Connect your data warehouse
  2. Pick your metrics
  3. Get a live Google Sheets report

In the time it takes to write a ticket. Then imagine never writing that ticket again.

Book a Demo

We'll use your actual use case

A worked report: paid acquisition, November 2025

A worked report: paid acquisition, November 2025

A one-page paid acquisition report for November 2025: a bar chart of net revenue per $1 of spend by platform, with a table of spend, platform-reported conversions, store orders, net revenue, spend per order and ROAS for October and November.

The question is on the page: which paid platform gets next month’s budget. The definitions are on the page too. Orders are completed orders whose session came from the platform (medium = cpc), so cancelled and returned orders are not counted, and revenue is the net revenue of those orders. The data is a synthetic demo store, so no figure here describes a real business.

Read it as the person who has to decide:

  • LinkedIn: $2,119 of spend, 3 orders, $1,912 of net revenue. That is 0.90 per dollar, so the revenue did not cover the spend. In October it was 0.17. Twitter spent $260 and produced no orders.
  • TikTok: 9,198 clicks, more than Facebook’s 7,727, but 2.97 per dollar against Facebook’s 5.29. It was 2.99 the month before, so this is not a one-month dip.
  • Reddit: 8.37 per dollar on $726 of spend, but only 16 orders. One month on a small base is a reason to test more spend, not a conclusion.
  • Platform-reported conversions: the platforms report 372 conversions, the store recorded 220 orders, 69% more. By platform the gap runs from 16% for Google to 159% for TikTok, so in this data no single correction factor would close it. It also changes the ranking: on the platforms’ own counts TikTok costs $46.00 per conversion against $53.66 for Facebook, and on store orders it costs $119 per order against $79. Showing both columns means nobody is surprised in the meeting.

The report is one page and answers one question. It has no sessions, impressions or follower counts, because none of them would change the budget.

This is the query your analyst runs behind the report. Hand it to whoever owns your warehouse: it reads the demo store’s views, so they swap in your own ad spend, sessions, orders and purchases tables.

WITH ad AS (
  SELECT FORMAT_DATE('%Y-%m', date) AS month, source,
         SUM(spend) AS spend, SUM(platform_conversions) AS platform_conversions
  FROM `owox-demo.ecommerce.ad_performance`
  WHERE date BETWEEN '2025-10-01' AND '2025-11-30' AND medium = 'cpc'
  GROUP BY month, source
),
st AS (
  SELECT FORMAT_DATE('%Y-%m', o.order_date) AS month, s.source,
         COUNT(DISTINCT o.order_id) AS store_orders, SUM(p.line_net_revenue) AS net_revenue
  FROM `owox-demo.ecommerce.orders` AS o
  JOIN `owox-demo.ecommerce.sessions` AS s ON s.session_id = o.session_id
  JOIN `owox-demo.ecommerce.purchases` AS p ON p.order_id = o.order_id
  WHERE o.order_date BETWEEN '2025-10-01' AND '2025-11-30'
    AND o.status = 'Completed' AND s.medium = 'cpc'
  GROUP BY month, s.source
)
SELECT month, source, ROUND(spend) AS spend, ROUND(platform_conversions) AS platform_conversions,
       store_orders, ROUND(net_revenue) AS net_revenue,
       ROUND(spend / platform_conversions, 2) AS spend_per_platform_conversion,
       ROUND(spend / store_orders, 1) AS spend_per_order,
       ROUND((platform_conversions / store_orders - 1) * 100) AS platform_conversions_pct_more,
       ROUND(net_revenue / spend, 2) AS roas
FROM ad LEFT JOIN st USING (month, source)
ORDER BY month DESC, spend DESC

The layout of a monthly report

  1. The decision and the answer in the first line.
  2. One table with the same columns as last month.
  3. One chart that shows the comparison the decision turns on.
  4. What changed since last month, in a sentence per row that moved.
  5. The date range and the definition of each metric, on the page.
  6. The next test, if one comes out of it.

The reports people ask for

The reports people ask for

Report The question it answers Core numbers
Sales performance Are we on plan, and where is it coming from? Revenue, orders, average order value, against the plan and the previous period
Paid advertising (PPC) What does each platform return for its spend? Spend, clicks, orders, revenue, ROAS, spend per order
Website traffic and conversion Which traffic converts, and where do visitors drop? Sessions by source, conversion rate by source, rate between funnel stages
Email Which sends earn attention and orders? Delivered, opens, clicks, orders per send
Social Is paid and organic social moving anything that matters? Reach, engagement, clicks and orders from social sessions

Each of these still needs a decision attached. Marketing dashboard examples show what they can look like.

Two of them exist as AI dashboards on a demo store. The CMO dashboard opens on “Is marketing paying for itself?” with net sales and profit against ad spend from seven platforms, and the Paid channels report sets each platform’s spend against the orders and net sales the store recorded. Claude built both through OWOX MCP on the store’s e-commerce Data Model, so they are connected, not a snapshot: each refreshes with every Report run, and next month’s number is not last month’s export.

Pick the cadence by the decision, not the calendar

Pick the cadence by the decision, not the calendar

Cadence The decision it feeds Typical content
Daily Is something broken? Spend pacing, sessions, orders, errors, anything at zero
Weekly What do we change inside a channel? Campaign and creative performance, paused and scaled items
Monthly How do we split the budget between channels? A report like the one above, month against month
Quarterly Is the channel plan working? Revenue and cost by channel against targets

A weekly report that tries to answer the monthly question tends to look noisy, and a monthly one is too slow to catch a broken tag.

Where the numbers come from

Where the numbers come from

The worked report joins two systems: ad spend from the platforms and orders from the store. They agree on source and medium, and the join has to be declared once so every report uses it. When each analyst or marketer writes their own join, the same month produces different totals. How a declared join works is covered in AI-ready marketing analytics data.

OWOX Data Marts supports this the way an analyst would want. The analyst writes the SQL for “orders by platform” once, in a Data Mart with a description and an owner, and a report in Google Sheets or Data Studio reads that one definition from your warehouse. The marketer chooses the question and the layout, and nobody redefines the metric.

Check a report before you send it

Check a report before you send it

  1. Which decision does it support, and is it written at the top?
  2. Does every number name who acts on it?
  3. Is the date range on the page, and are the metric definitions beside the metrics?
  4. If a platform’s number and the store’s number differ, are both shown?
  5. Is any conclusion drawn from a handful of orders?
  6. Do the charts pass the checks in bad data visualization examples?

Your New Normal

Turn your data into decisions.

Governed data marts give you the clean foundation ML needs to actually work.

  • No AI hallucinations
  • Analyst-governed definitions
  • Every number traces to SQL
Get started free

FAQ

Frequently Asked Questions

How often should I review marketing reports for my business?

By the decision each one feeds. Daily for spend pacing and anything at zero, weekly for campaign and creative changes, monthly for splitting budget between channels, and quarterly for the channel plan.

Can marketing reports help in predicting future trends?

They show what happened, and a series over enough months shows direction and seasonality. In the demo store, orders and ad spend both peaked in November and December 2025, so a report that ignores the season would read a seasonal peak as a trend. A forecast needs more than a report.

What should I do if the data in the marketing report is overwhelming?

Start from the decision the report supports and take out every number that does not change it. For each metric that remains, name who acts on it when it moves.

How can I effectively communicate insights from marketing reports to stakeholders?

Put the decision and the answer at the top, show the numbers that support it, and put the definitions and the date range on the page. If a platform's number and the store's number differ, show both and say why.

What are the best practices for making data-driven decisions from marketing reports?

Tie each decision to named metrics before the report is built, check that the numbers mean what you think they mean, and avoid conclusions from a handful of orders. In the worked report on this page, Reddit had the best return but only 16 orders, which is a reason to test, not a conclusion.

How do I identify key trends in marketing reports?

Compare the same metric over the same period lengths, month against month or the same month a year earlier, and check whether the change is large compared with the base. Seasonality can look like a trend: in the demo store, both spend and orders peak in November and December.

What types of marketing reports are there?

The common ones are sales performance, paid advertising, website traffic and conversion, email, and social media reports, sent daily, weekly, monthly or quarterly. Each needs a decision attached to it.

Why are marketing reports important?

They put the numbers behind a decision, such as where next month's paid budget goes, in front of the person who makes it. A report no one acts on is an export.

What are marketing reports?

Marketing reports are documents that bring marketing numbers together to support a decision. A useful one names the decision, shows the metrics that bear on it, and states the date range and the definition of each metric.

Who wrote this

Vadym Kramarenko

Vadym Kramarenko Growth Marketing Manager

Vadym Kramarenko is a Growth Marketing Manager at OWOX, where he drives user acquisition and product-led growth strategies. He hosts the OWOX podcast, interviewing analytics professionals about data-driven marketing, attribution, and reporting best practices. Vadym specializes in turning complex analytics concepts into practical, actionable marketing frameworks.