Marketing dashboard examples
Four layouts, the queries behind them, and the test each tile has to pass.
A dashboard is useful when every tile on it can finish the sentence "if this moves, we will…". Tiles that fail that test are the reason most dashboards get opened twice and then never again.
Below are four examples built on that rule — a paid-media dashboard, an SEO dashboard, a blended growth dashboard and a single-client dashboard — with the query behind each tile and a note on what was deliberately left off. They are not screenshots to copy: they are widget sets you can pin against your own connected sources, and one of them is running live on real data.
If what you want is a file to download and hand over — a Looker Studio copy, a Google Sheets tab, a branded PDF — the vendors ranking on this query have those and TableBI does not. This page is the other kind of template: the queries, and a URL that keeps answering them.
Connect the source
npm i -g @tablebi/cli tablebi login tablebi install tablebi connect gsc --site sc-domain:example.com tablebi connect google_ads
Source for this template: any connected source. One connected source and one live dashboard fit inside the free tier.
The widgets
1. Paid media dashboard
Five tiles: blended ROAS, spend by platform, weekly efficiency trend, campaigns wasting money, campaigns worth more budget.
WITH w AS (SELECT MAX(date) AS anchor FROM metrics)
SELECT platform,
SUM(cost) AS spend,
roas(SUM(revenue), SUM(cost)) AS roas,
cpa(SUM(cost), SUM(conversions)) AS cpa
FROM metrics, w
WHERE date > w.anchor - 30
GROUP BY platform ORDER BY spend DESC
2. SEO dashboard
Four tiles: clicks and impressions trend, query movers, striking distance, low-CTR pages at good positions.
WITH w AS (SELECT MAX(date) AS anchor FROM search_console_raw WHERE site = 'example.com')
SELECT query,
SUM(impressions) AS impressions,
avg_position(SUM(position * impressions), SUM(impressions)) AS pos
FROM search_console_raw, w
WHERE site = 'example.com' AND date > w.anchor - 28
GROUP BY query
HAVING avg_position(SUM(position * impressions), SUM(impressions)) BETWEEN 8 AND 20
ORDER BY impressions DESC LIMIT 20
3. Blended growth dashboard
Three tiles: total revenue against total marketing cost, the trend of that ratio, and the paid share of revenue.
WITH w AS (SELECT MAX(date) AS anchor FROM metrics)
SELECT date_trunc('week', date) AS week,
SUM(revenue) AS revenue,
SUM(cost) AS marketing_cost,
roas(SUM(revenue), SUM(cost)) AS blended
FROM metrics, w
WHERE date > w.anchor - 180
GROUP BY 1 ORDER BY 1
4. Single-client dashboard
Six tiles combining paid, organic and on-site behaviour for one account — the client reporting layout.
WITH w AS (SELECT MAX(date) AS anchor FROM ga4_raw)
SELECT channel, SUM(sessions) AS sessions,
SUM(conversions) AS conversions,
SUM(revenue) AS revenue
FROM ga4_raw, w
WHERE date > w.anchor - 30
GROUP BY channel ORDER BY sessions DESC
The test every tile has to pass
Say the sentence out loud: "if this number moves, we will ___". If the blank does not fill itself, the tile is decoration. Applied honestly this usually removes half of a dashboard, and the half it removes is the half nobody was reading.
Tiles that fail most often: total sessions with no segment, a vanity follower count, an averaged bounce rate across every page, and any third-party authority score. Tiles that pass: cost per acquisition against your ceiling, blended efficiency, queries near page one, campaigns spending without converting.
Seven tiles, not twenty
Dashboards get long because adding a chart is cheap and removing one requires an argument. The practical cap is what fits on a screen without scrolling — around seven tiles — because anything below the fold is read by nobody after the first week.
If you genuinely need more, that is two dashboards with different audiences, not one longer dashboard.
A dashboard that stays true
The failure mode of every example above is not layout — it is decay. The connector breaks, a campaign gets renamed, someone changes a filter, and the dashboard keeps rendering confidently from stale data.
Two habits fix most of it. Put the data freshness on the dashboard itself so a stale number looks stale, and compute metrics from macros — roas(), cpa(), ctr() — rather than hand-written arithmetic that drifts between tiles. If you want the arithmetic checked before you build anything, the calculators run the same formulas in the browser.
Pin the set as one live URL
tablebi pin --title "Marketing dashboard examples" → https://you.tablebi.com/d/dsh_… # public, read-only, refreshes itself
The URL needs no login from whoever you send it to, and it re-runs its own queries rather than freezing a moment. Here is one running on real data. It carries no branding of yours — there is no white-label or custom-domain option today, which is the trade against a reporting platform.
Questions people ask
What makes a good marketing dashboard?
Every tile can finish the sentence "if this moves, we will…". Tiles that fail that test are decoration. In practice that means around seven tiles, each tied to a decision, with the data freshness visible so a stale number looks stale.
How many charts should a dashboard have?
About seven — what fits on a screen without scrolling. Anything below the fold stops being read after the first week. If you need more than that, you have two dashboards with two audiences rather than one long one.
What should not go on a marketing dashboard?
Total sessions with no segment, follower counts, an averaged bounce rate across every page, third-party authority scores, and any metric nobody has a lever for. They make the dashboard longer and no decision easier.
How do I keep a dashboard from going stale?
Show the per-source data freshness on the dashboard itself so an old number looks old, and compute metrics from shared macros rather than arithmetic retyped per tile. A pinned TableBI dashboard re-runs its own queries and carries the freshness of every source it touched.
Other templates
SEO report example
Seven widgets that earn their slot — and the SQL behind each one.
PPC report template
Six widgets across Google Ads and Meta, on one definition of cost and revenue.
Client reporting template
What belongs in a monthly client report — and why a link beats an attachment.
Want the arithmetic before the wiring? The free marketing calculators run these same formulas in the browser.