Dashboard

What does a marketing funnel dashboard show in Metabase?

A marketing funnel dashboard tracks visit → lead → activation → customer, by channel and campaign, in one governed view. It joins traffic fromGoogle Analytics 4 or Plausible, signups with UTM attribution, product events from tools like Amplitude, and customer records from the CRM — so conversion between stages is measured in the warehouse, not guessed from four separate tools.

For: growth and demand-gen marketers, marketing ops, and founders.Grain: one row per lead, with UTM attribution and stage timestamps (created, activated, converted).

Which cards belong on a marketing funnel dashboard?

  • Funnel steps — visits, leads, activated, customers, with conversion between each (funnel)
  • Visit-to-lead conversion rate by channel (bar)
  • Signups by campaign by week (stacked bar)
  • Landing-page conversion — sessions, signups, and rate per page (table)
  • Time to convert — days from first visit to signup (bar)
  • Cost per funnel stage, where ad spend is synced (table)
  • Campaign-level funnel comparison (table)
  • Cohorted signup → customer rate by signup month (line)

What data does the dashboard need?

  • traffic_rollups — sessions by date, channel, and landing page fromGA4 or Plausible.
  • A leads (or signups) table with UTM attribution —utm_source, utm_medium, utm_campaign— captured at signup.
  • Product events for the activation step, from Amplitude, PostHog, or Mixpanel.
  • A customers table from billing or the CRM (e.g. HubSpot), with a lead ID or email to join on.

How do you build it?

  1. Sync traffic, signups, product events, and CRM records into one warehouse — the marketing & growth integrations catalog covers the routes per tool.
  2. Normalize the UTM taxonomy and map raw source/medium values to a fixed channel list; this mapping is the backbone of every by-channel card.
  3. Define each stage precisely — what counts as a lead, which event marks activation, when a customer converts — and pick one attribution rule.
  4. Build the funnel and per-channel cards, add channel and campaign filters, and wire drill-throughs from stage counts to lead-level tables.

Example card SQL

Funnel conversion by channel, trailing 90 daysPostgreSQL
SELECT
  l.utm_source AS channel,
  COUNT(*) AS leads,
  COUNT(*) FILTER (WHERE l.activated_at IS NOT NULL) AS activated,
  COUNT(*) FILTER (WHERE c.customer_id IS NOT NULL) AS customers,
  ROUND(
    100.0 * COUNT(*) FILTER (WHERE l.activated_at IS NOT NULL) / COUNT(*), 1
  ) AS lead_to_activated_pct,
  ROUND(
    100.0 * COUNT(*) FILTER (WHERE c.customer_id IS NOT NULL) / COUNT(*), 1
  ) AS lead_to_customer_pct
FROM leads l
LEFT JOIN customers c ON c.lead_id = l.lead_id
WHERE l.created_at >= now() - interval '90 days'
GROUP BY 1
ORDER BY leads DESC;

Metrics

Integrations

Dashboards

FAQ

How do you keep UTM taxonomy consistent across the funnel?
Treat UTMs as the join key for everything — they connect GA4 sessions, signups, campaigns, and spend, so one team writing utm_source=FB while another writes facebook silently splits the funnel. Publish a taxonomy (lowercase, fixed vocabulary for utm_source and utm_medium, a naming pattern for utm_campaign), generate links from a shared builder, and keep a mapping table in the warehouse to normalize the strays that get through. Every card on this dashboard — and most of marketing analytics — inherits its accuracy from this one convention.
Should the funnel use first-touch or last-touch attribution?
Pick one, label it on the dashboard, and store both. First-touch credits the channel that created demand; last-touch credits the one that closed the signup — they answer different questions and disagree constantly. Capture the first-seen UTM set and the at-signup UTM set as separate columns on the lead record, default the dashboard to one (last-touch is the common start), and add a filter to flip views. What matters is that channel-level conversion and CAC use the same rule, or the numbers will never reconcile.
Why does the funnel need a stable user or lead ID across tools?
Because each stage lives in a different system: visits are anonymous sessions, signups have lead IDs, activation events carry the product's user ID, and customers live in the CRM. Without one persistent key, the stages can only be compared in aggregate — never followed. Assign a user_id at signup, pass it to the product analytics tool via its identify call (see the Amplitude and PostHog guides), and store it (or a reliable email join) on the CRM contact so HubSpot records tie back to the same person.
Where do marketing funnels leak most?
Two places, reliably. First, landing page → lead: traffic arrives but the page doesn't convert, which is why the per-page landing-page conversion rate table belongs on the dashboard rather than a single blended rate. Second, signup → activation: people create accounts and never reach first value — track it with activation rate by cohort. Fixing the second leak usually beats buying more traffic for the first, because everything downstream compounds from it.
How does this differ from the funnel in a product analytics tool?
Funnels in Mixpanel or PostHog are event-level and in-product: precise about steps inside the app, blind to traffic sources, spend, and CRM outcomes. This dashboard is the cross-tool view — it joins sessions, signups, product events, and customers in the warehouse, so it can answer "which channel produces customers" rather than "where do users drop in onboarding." Keep both: the product-side view lives in the product retention dashboard, and the two share the same activation definition.