Dashboard

What goes in a digital marketing dashboard in Metabase?

A digital marketing dashboard puts every acquisition channel side by side — spend, leads, cost per conversion, and conversion rate — on one definition of a lead. It's built by syncing Google Ads, Meta Ads, Google Analytics, and your CRM into a database, so the comparison survives contact with the platforms' own conflicting reports.

For: demand gen, growth, and marketing leadership. Grain: one row per channel per day or month. Refresh: daily, with a restatement window for late-attributed conversions.

What does a digital marketing dashboard look like?

Here’s the layout this guide builds. The month’s headline numbers sit at the top, volume and channel mix in the middle, and efficiency plus on-site performance at the bottom — so a weekly review reads top to bottom and stops when it has its answer.

Digital marketing dashboard in Metabase showing leads, qualified leads against target, conversions by channel, spend pacing, and cost per acquisition.

An example digital marketing dashboard in Metabase, built from Google Ads, Meta Ads, Google Analytics, and CRM data. Figures are illustrative.

Which cards belong on a digital marketing dashboard?

These eight are the standard set. Read the first row for volume, the second for efficiency, and the last for where the funnel is leaking.

  • Net new leads per month, with trend (line + number)
  • Qualified leads per month against target, by source (bar)
  • Cost per conversion by channel and campaign (table)
  • Cost per acquisition — spend divided by new customers, by channel (line)
  • Conversions by channel, paid versus organic versus email (stacked bar)
  • Organic traffic growth month over month (area)
  • Website conversion rate by landing page and device (table)
  • Spend pacing against budget, month to date (gauge)

What data does the dashboard need?

  • ad_spend_daily — one row per platform, campaign, and day, with cost, impressions, and clicks in a single currency.
  • sessions or page-level analytics with source, medium, campaign, device, and landing page.
  • modeled_leads — one row per lead with created date, first- and last-touch channel, qualification flag, and the date it became a customer.
  • Search Console query and page data if you want organic performance beside paid.
  • A channel_map that folds messy UTM values into the handful of channels leadership actually recognizes.

How do you build it?

  1. Sync ad platforms, analytics, and the CRM into one database with a pipeline (see building a data pipeline), keeping raw campaign IDs and UTMs.
  2. Normalize channels once with a mapping table — nothing wrecks a marketing dashboard faster than Paid Social, paid-social, and fb as three separate rows.
  3. Define a qualified lead and an attribution model as certified models, and point every card at them.
  4. Build volume cards first, then efficiency cards on top of the same joins, so cost per lead can never disagree with lead count.
  5. Add filters for date range, channel, campaign, and region, and show the refresh timestamp plus the attribution model in use.

Example card SQL

Leads, spend, and cost per qualified lead by channel by month PostgreSQL
WITH spend AS (
SELECT
  date_trunc('month', spend_date) AS month,
  channel,
  SUM(cost) AS cost
FROM ad_spend_daily
GROUP BY 1, 2
), leads AS (
SELECT
  date_trunc('month', created_at) AS month,
  first_touch_channel AS channel,
  COUNT(*)                                          AS new_leads,
  COUNT(*) FILTER (WHERE is_qualified)              AS qualified_leads,
  COUNT(*) FILTER (WHERE became_customer_at IS NOT NULL) AS customers
FROM modeled_leads
GROUP BY 1, 2
)
SELECT
COALESCE(s.month, l.month)     AS month,
COALESCE(s.channel, l.channel) AS channel,
l.new_leads,
l.qualified_leads,
s.cost,
ROUND(s.cost / NULLIF(l.qualified_leads, 0), 2) AS cost_per_qualified_lead,
ROUND(s.cost / NULLIF(l.customers, 0), 2)       AS cost_per_acquisition
FROM spend s
FULL OUTER JOIN leads l ON l.month = s.month AND l.channel = s.channel
ORDER BY month DESC, cost DESC NULLS LAST;

Metrics

Integrations

Dashboards

FAQ

What is a digital marketing dashboard?
A digital marketing dashboard brings every acquisition channel — paid, organic, email, social — onto one page with a shared definition of a lead and a shared definition of cost, so channels can actually be compared. Each platform already has its own reporting, but Google Ads counts conversions its way and GA4 counts them another, and neither knows which leads eventually became customers. Joining them in a database is what makes the comparison honest.
Which sources feed a digital marketing dashboard?
Ad platforms for spend and impressions (Google Ads, Meta Ads, LinkedIn Ads), analytics for sessions and on-site conversions (Google Analytics, Plausible, PostHog), search for organic performance (Google Search Console), email for sends and engagement (Mailchimp), and your CRM for what happened downstream (HubSpot, Salesforce). The marketing and growth pillar covers the sync routes.
Why don't my platform numbers match my database numbers?
They will not, and chasing an exact match is wasted effort. Ad platforms attribute a conversion to the click that caused it and back-date it, so last month's number keeps changing for weeks; they also apply their own attribution window and modelled conversions. Your database counts the lead on the day the row was created, using your own attribution rule. Pick the database as the reporting system of record, put the definition on the dashboard, and use platform reporting for in-platform optimization only.
First-touch or last-touch attribution?
First-touch tells you which channels create demand, last-touch tells you which close it, and each flatters a different team. Store both on the lead record rather than choosing once, label every card with the model it uses, and never mix models within a single funnel chart. If you have a longer sales cycle, add a simple multi-touch view later — but only after the two single-touch models are trusted, because a blended model no one can reproduce gets ignored.
How should I define a qualified lead?
In one place, in the model — not per chart, and not per person. Write down the rule (fit criteria, engagement threshold, whoever accepts it), implement it once as a certified model in Metabase, and have every card read from it. The most common failure of a marketing dashboard is not a wrong chart; it is marketing and sales quoting different qualified-lead counts in the same meeting because each built their own filter.
What is a good cost per acquisition?
There is no cross-industry benchmark worth quoting — the only meaningful comparison is against your own customer lifetime value and against the same channel last quarter. A useful default is to watch the CAC-to-LTV ratio and payback period per channel rather than raw CAC, since a channel with a higher cost per customer can still be the better buy if those customers retain longer.
Should NPS be on a digital marketing dashboard?
It is often listed among the top marketing metrics, but it measures existing customers rather than acquisition, and it moves on a much slower clock than spend and leads. Keep NPS on a customer sentiment dashboard and link to it; putting a quarterly survey number next to daily ad spend usually just invites false correlations.
How often should this dashboard refresh?
Daily is right for most teams. Ad platform APIs restate recent days as conversions land, so an hourly refresh mostly shows you attribution settling rather than performance changing, and it tempts people to react to noise. Refresh daily, hold a fourteen-day restatement window open, and show the last-updated timestamp on the page so nobody argues about a number that has since moved.