Marketing Dashboard Template

Nothing here gets downloaded. The template is a contract over eight columns, and any campaign export carrying them turns into a working dashboard the moment you drop it: spend and revenue side by side, the funnel from impression to conversion, and the efficiency ratios computed from raw counts rather than averaged from somebody else's percentages.

Load the template with sample data

The sample is the fastest way to see whether the layout fits before you go and find your own export. It is a year of campaign days across several channels, already renamed to match the contract.

Download the sample CSV to use as the target shape for your own mapping.

The column contract

These are the exact headers in the sample file. Notice what is absent: no click-through rate, no cost per click, no return on ad spend. Ratios are derived, never imported, because a ratio that arrives precomputed cannot be re-aggregated honestly across days or campaigns.

Column What it holds Role Required What breaks without it
date The reporting day for the row. date Required Spend and revenue collapse into two lifetime numbers, so you cannot see the week a budget change landed or when a creative went stale.
campaign Campaign name as your platform records it. category Required There is nothing to rank. The whole point of this layout is telling the campaigns that work from the ones that are quietly eating budget.
channel Platform or placement: Search, Display, Social, Affiliate. category Optional No mix donut and no way to compare platforms, which is the reason most people build this dashboard in the first place.
impressions Times the ad was served. count Optional Click-through rate cannot be computed, so a campaign with a terrible creative and a campaign with no reach look identical.
clicks Times somebody clicked through. count Required The middle of the funnel vanishes and cost per click goes with it, leaving spend and conversions with nothing between them.
spend Money spent on that campaign that day. currency Required Every efficiency number depends on it. Without spend you have an activity report, not a marketing dashboard.
conversions Signups, purchases or leads, on one definition. count Required Cost per acquisition is gone and the funnel stops at the click, which flatters channels that buy cheap traffic that never converts.
revenue Value attributed to those conversions. currency Optional Return on ad spend cannot be shown, so you can rank campaigns by cost but never by whether they made money.

The one column with no natural home in any platform export is channel. You almost always have to add it yourself, and it is the column that turns three separate exports into one comparable file.

What you get

  • An efficiency KPI strip. Total spend, total conversions, blended cost per acquisition and return on ad spend, each computed by dividing one sum by another rather than averaging a column of ratios.
  • Spend against revenue over time. Two lines on one time axis at a grain read from the file. When they diverge, the gap is the story and it is visible without arithmetic.
  • The funnel. Impressions, then clicks, then conversions, as three stages with the drop between each pair stated as a percentage. This is the panel that tells you which stage to fix.
  • Top campaigns by spend. A ranked bar so the budget concentration is obvious. Switch the measure to return on ad spend and the same bar becomes a shortlist of what to cut.
  • Channel mix. A donut over channel showing the share of spend, with the percentage in the legend.
  • Click-through rate by channel. A breakdown that weights each channel by its actual impressions, so a display channel with millions of impressions does not get the same vote as an affiliate with a few thousand.

i. Bring these columns

Marketing is the domain where the contract does the most work, because no two platforms agree on a single header. Before you export anything, write down the eight names and decide what each one will mean for your account. The hardest decision is conversions, because most ad accounts have several conversion actions configured and the default export sums all of them. Pick one action, or one deliberate group, and use it consistently.

Then decide the grain. One row per campaign per day is the sweet spot. If your account runs at the ad group or creative level and you want that detail, keep the campaign column as the campaign and add a second category column; the template will still bind, and you get an extra breakdown you can point at whichever level you care about.

ii. Drop the file

Drag the CSV in and the panels bind. Spend and revenue are read as money and formatted as money everywhere, on axes, in labels and in exports. Impressions and clicks are read as counts. The ratios are computed at the aggregate level, which is the part worth checking on your first file: the cost per acquisition in the KPI strip should equal total spend divided by total conversions, not the average of a per-row calculation.

The most common surprise is a spend column that arrives as text because the export wrapped it in a currency code, something like USD 588.75. Strip the prefix, or use a currency symbol instead, and the column becomes money.

iii. Adjust what you need

Flip the top campaigns panel between spend, conversions and return on ad spend depending on the conversation. For a budget review, spend. For a performance review, return. Set the time grain to weekly if the daily line is too noisy, which it usually is for anything with under a few thousand conversions a month.

Add a panel for cost per click by channel if you are negotiating rates, and remove the funnel if your platform does not report impressions. When it reads the way you want, export the numbers behind any panel as CSV and paste them into the deck alongside the picture.

Getting your export into this shape

Here is what actually comes out of the major platforms and what has to change.

Google Ads. The report editor gives you Day, Campaign, Impr., Clicks, Cost, Conversions and Conv. value. Two traps. The downloaded CSV has two title rows above the header, so the header is not on line one and the file parses with garbage column names until you delete them. And Conversions comes back as a decimal like 3.72, because Google fractionally attributes across a conversion path. That is legitimate, it just means your conversion counts will not be whole numbers and a cost per acquisition computed from them is an attributed figure rather than a headcount.

Meta Ads Manager. Exports arrive as Reporting starts and Reporting ends rather than a single day, so collapse them to one date. Spend is Amount spent (USD) with the currency baked into the header. Conversions are not a column at all: they are rows in a results field whose meaning depends on the campaign objective, so a file mixing an awareness campaign with a conversion campaign has a results column that means two different things. Filter to one objective, or split the export.

LinkedIn and the rest. LinkedIn writes Total Spent and dates as day ranges. Email tools give you sends and opens rather than impressions and clicks, which map onto the contract cleanly if you accept sends as impressions and say so out loud. Affiliate networks report a payout rather than a spend, which is the same money leaving.

The thing to split, in every case, is a campaign name that encodes several facts at once. Something like US_Q1_Retargeting_Video_Prospecting holds a region, a quarter, an audience and a format. Split it into real columns in a text editor or in the app, and each of those becomes a breakdown you can slice by instead of a string you squint at.

What this template will not do

  • It will not attribute. There is no multi-touch model here. Whatever your export says earned the conversion is what the dashboard reports, and if three platforms each claim the same sale, your total conversions will exceed reality.
  • It will not pull from any ad API. No connectors, no OAuth, no scheduled refresh. You export, you drop, you look. Next week you do it again.
  • It will not fix mismatched conversion definitions. Stacking two platforms whose conversions mean different things produces a clean-looking total that is meaningless, and nothing in the file marks it as wrong.
  • It will not compute lifetime value or payback. Those need a customer table with later revenue in it, which is a different contract. The finance template is closer to that shape.
  • It will not test statistical significance. Two campaigns with different rates are just two numbers here. If you are running an experiment, the difference needs a test, not a bar chart.
  • It will not de-duplicate stacked exports. Export the same week twice into one file and every number doubles, silently.

Frequently Asked Questions

Why is the template a list of columns rather than a file I can download?

Because a downloaded marketing dashboard is a spreadsheet with somebody else's numbers in it, and the first thing you do is delete their rows and break their formulas. The useful part was never the file, it was the arrangement: which columns feed which panel and what each panel means. State that as a contract and the arrangement travels. You keep your own data where it is and the layout comes to it.

Every ad platform names its columns differently. Which names win?

The names in the contract table on this page. Google Ads writes Cost, Meta writes Amount spent, LinkedIn writes Total Spent, and all three mean the same thing. Rename them all to spend before you combine anything. The dashboard will still infer the roles correctly if you do not, because roles come from the values, but the panel titles will read like whichever platform you exported last.

Can I combine Google, Meta and LinkedIn exports into one file?

That is exactly what the channel column is for. Export each platform separately, rename the columns to match the contract, add a channel column holding the platform name, then stack the files one on top of another. The channel breakdown and the mix donut only become interesting once more than one platform is in the file. What you must not do is stack them with mismatched conversion definitions, because the conversions column then means three different things.

Why are click-through rate and cost per click not in the contract?

Because they are ratios and the dashboard computes them. If you bring impressions, clicks and spend, you get click-through rate, cost per click, cost per acquisition and return on ad spend for free and correctly. If you bring a precomputed rate column instead, the dashboard cannot re-aggregate it: averaging a column of daily click-through rates weights a day with nine impressions the same as a day with nine hundred thousand, and the answer is wrong. Always bring the raw counts.

My revenue is attributed by the ad platform and does not match my order table. Which do I use?

Whichever one you are willing to defend, and only one of them per file. Platform-attributed revenue is generous because every platform claims the same conversion. Order-table revenue is conservative and cannot tell you which campaign earned it without a tracking parameter. Mixing the two in a single revenue column produces a return on ad spend nobody can reconcile. Pick a source, write it in the file name, and stay consistent between refreshes.

What granularity should the rows be?

One row per campaign per day per channel. That is fine enough to see a spike on a Tuesday and coarse enough that a year of activity stays under a hundred thousand rows. Hourly rows work and mostly add noise. Rows already rolled up to a month work too, and they cost you the ability to see anything inside the month, which is usually where the story is.

Does anything leave my browser?

No. The file is parsed, aggregated and drawn in the tab. There is no upload endpoint and no request carrying your rows. Marketing exports frequently carry campaign names that hint at unannounced products and budgets that nobody wants published, which is a reasonable thing to be careful about.

Can I see which campaigns are losing money?

Yes, once spend and revenue are both in the file. The campaign breakdown can be switched to show return on ad spend rather than spend, and anything under one is costing more than it returns. Read it with the impression counts beside it though, because a campaign with two conversions and a superb ratio is noise rather than a winner.

Check the fit in thirty seconds

Open the sample, look at the panels, then decide whether the mapping work is worth it.

Load the template with sample data