Search…

BI Strategy and Reporting

How to Create Digital Marketing Reports: A Complete Guide

How to Create Digital Marketing Reports: A Complete Guide

Digital marketing reports explained through channel KPIs like CAC, ROAS, and CTR, with the Power BI model and DAX measures to build them.

Digital marketing reports explained through channel KPIs like CAC, ROAS, and CTR, with the Power BI model and DAX measures to build them.

Written By: Sajagan Thirugnanam

Last Updated on September 23, 2026

A digital marketing report pulls performance data from channels like paid, organic, social, and email into one place so a team can see what worked and where to shift spend. Built in Power BI, that means one data model with a table per channel, and each channel's KPIs, like cost per acquisition, ROAS and CTR, defined once as a measure instead of recalculated in a spreadsheet every week.

The KPIs a digital marketing report tracks, by channel

  • Paid. Cost per acquisition (CPA), Return on Ad Spend (ROAS), Click-Through Rate (CTR), Cost Per Click (CPC).

  • Organic (SEO). Organic sessions, organic conversions, landing page traffic. Keyword rankings come from a separate SEO tool and need their own table if you report them.

  • Social. Impressions, reach, engagement rate, follower growth.

  • Email. Open rate, click rate, unsubscribe rate.

These are not interchangeable. CPA and ROAS answer whether a paid channel is worth its spend. CTR and engagement rate answer whether the creative is working. A report that mixes all of these into one undifferentiated table makes it harder to see which question a given number is actually answering.

The data model

Each channel typically has its own source and its own grain, so the cleanest model uses one fact table per channel, joined to shared dimensions:

Table

Grain

Key columns

Paid Performance (fact)

one row per campaign per day

CampaignKey, ChannelKey, DateKey, Spend, Impressions, Clicks, Conversions, Revenue

Social Performance (fact)

one row per post per day

PostKey, ChannelKey, DateKey, Impressions, Reach, Engagements, Followers

Web Analytics (fact)

one row per landing page per day

PageKey, ChannelKey, DateKey, Sessions, Conversions

Email Performance (fact)

one row per campaign send

CampaignKey, DateKey, Sent, Opens, Clicks, Unsubscribes

Channel (dimension)

one row per channel

ChannelKey, ChannelName, ChannelType

Date (dimension)

one row per day

DateKey, Date, Week, Month

Keeping the channel tables separate, rather than forcing paid, social, and email into one generic "Marketing Activity" table, avoids a model full of columns that are blank for most rows. A shared Channel dimension is what lets a single slicer filter across all of them at once.

Core measures in DAX

Cost per Acquisition =
DIVIDE(
    SUM('Paid Performance'[Spend]),
    SUM('Paid Performance'[Conversions])
)

Cost per acquisition is ad spend divided by the conversions the platform attributes to it. It is not the same as customer acquisition cost (CAC), which divides all sales and marketing cost by new customers won. CAC needs finance and CRM data, not just ad platform data.

ROAS =
DIVIDE(
    SUM('Paid Performance'[Revenue]),
    SUM('Paid Performance'[Spend])
)
CTR % =
DIVIDE(
    SUM('Paid Performance'[Clicks]),
    SUM('Paid Performance'[Impressions])
)
Email Open Rate % =
DIVIDE(
    SUM('Email Performance'[Opens]),
    SUM('Email Performance'[Sent])
)
Social Engagement Rate % =
DIVIDE(
    SUM('Social Performance'[Engagements]),
    SUM('Social Performance'[Impressions])
)

Getting channel data into Power BI

Each platform has its own path into the model. Some connect natively through Power Query. Others need the platform's own export or API, shaped in Power Query afterward. For platforms with no native connector, the usual route is a partner connector or a scheduled export into a shared file or database. Check the current native connector list before assuming a given ad platform has one built in, since that list changes over time.

Report layout

  1. Channel overview. Cards for spend, revenue, cost per acquisition and ROAS across all paid channels, with a trend line of spend versus revenue.

  2. Paid detail. Campaign-level table with cost per acquisition, ROAS, CTR, and CPC, filterable by channel.

  3. Organic and social. Organic sessions, organic conversions and social engagement rate side by side, since both measure attention earned rather than bought.

  4. Email. Open rate and click rate by campaign, trended over time.

For the mechanics of building any of these pages, see our guide to creating a dashboard in Power BI and our step-by-step guide to building Power BI reports. For how to pick and structure the KPIs themselves, see KPI reports: definition and examples.

FAQs

Can I create marketing reports using Excel or Google Sheets?

Yes. Both handle a single campaign or a small account well. The tradeoff shows up at scale: a spreadsheet needs the data pasted or refreshed by hand for every channel, while a Power BI model refreshes on a schedule and applies the same measure definitions across every report built on it.

How do I decide which KPIs to include in a marketing report?

Start from the goal of the campaign, not a generic list. A brand-awareness campaign is best read through impressions and reach. A conversion-focused campaign is best read through cost per acquisition and ROAS. Including every available metric on one page usually makes the report harder to act on, not easier.

Sources

Related to BI Strategy and Reporting

Want Power BI expertise in-house?

Get in Touch With Us

Turn your team into Power BI pros and establish reliable, company-wide reporting.

Berlin, DE

powerbi@casewhen.co

Follow us on

© 2026 CaseWhen Consulting
© 2026 CaseWhen Consulting
© 2026 CaseWhen Consulting