Dashboard

What goes in a sales forecast dashboard in Metabase?

A sales forecast dashboard turns your open pipeline into an expected number for the period — weighted vs. unweighted, commit vs. best-case — and checks it against target and past accuracy. Build it from CRM data synced into a database — see HubSpot or Salesforce for the connection.

For: Sales leaders, RevOps, finance. Refresh:daily, with periodic snapshots for accuracy. Source: modeled deals with stage, amount, expected close, and stage probabilities.

Which cards belong on a forecast dashboard?

Headline KPIs

  • Weighted pipeline (expected revenue) for the period
  • Unweighted open pipeline
  • Pipeline coverage vs. target
  • Attainment to date (closed won ÷ target)

Forecast detail

  • Commit vs. best-case vs. target
  • Weighted pipeline by owner and by segment
  • Pipeline by expected close month
  • Forecast accuracy vs. prior periods

What data does a forecast dashboard need?

  • A modeled deals table with stage, amount, and expected close date.
  • Stage win probabilities (from the CRM or modeled from history).
  • Periodic snapshots of the pipeline for forecast accuracy — you can't reconstruct a past forecast from current state alone.
  • A target/quota per period, owner, or segment.

How do you build a forecast dashboard?

  1. Sync your CRM into a database (HubSpot orSalesforce).
  2. Weight open deals by stage probability; compare to unweighted pipeline.
  3. Snapshot the pipeline on a schedule so you can measure forecast accuracy.
  4. Add filters for owner, segment, and expected-close period.

Example card SQL

Weighted vs. unweighted pipeline by ownerPostgreSQL
-- Weighted vs. unweighted open pipeline for the current quarter,
-- weighting each open deal by its stage probability.
SELECT
  d.owner,
  ROUND(SUM(d.amount), 2)                                 AS unweighted_pipeline,
  ROUND(SUM(d.amount * s.win_probability), 2)             AS weighted_pipeline
FROM deals d
JOIN stages s ON s.name = d.stage
WHERE d.stage NOT IN ('won', 'lost')
  AND d.expected_close_at >= date_trunc('quarter', CURRENT_DATE)
  AND d.expected_close_at <  date_trunc('quarter', CURRENT_DATE) + INTERVAL '3 months'
GROUP BY d.owner
ORDER BY weighted_pipeline DESC;

Integrations

Analytics

Dashboards

Metrics

FAQ

What's the difference between weighted and unweighted pipeline?
Unweighted pipeline is the full open amount; weighted pipeline multiplies each deal by its stage win probability to give an expected value. Weighted is closer to a forecast, but it's only as good as the probabilities — calibrate them from historical stage conversion rather than trusting CRM defaults.
Why do I need pipeline snapshots for forecast accuracy?
Because forecast accuracy compares what you predicted at a point in time to what actually closed — and current-state CRM data has already changed. Snapshotting the pipeline on a schedule (e.g. start of each period) is the only way to reconstruct and grade past forecasts.
How does pipeline coverage fit in?
Pipeline coverage is open pipeline ÷ the target it has to cover. It's the quick health check that sits next to the forecast: low coverage means even a good win rate won't hit the number, so it's an early signal to generate more pipeline.