Dashboard

What goes in an NPS and CSAT trends dashboard?

An NPS and CSAT trends dashboard reports the two headline experience scores the way statisticians wish everyone would: as trends with visible response volume, segmented by the customers behind them, and never as a single decontextualized number.

For: Product and CX leadership, research, and customer success. Refresh: daily for in-app programs; weekly for email waves. Source: modeled feedback, survey, and product-usage tables in a Metabase-connected database.

Which cards belong on this dashboard?

  • NPS trend by month with response volume
  • Promoters, passives, and detractors over time
  • CSAT trend by touchpoint
  • NPS by plan, segment, and region
  • Score by customer tenure cohort
  • Response volume by survey and channel
  • Verbatim theme counts by sentiment
  • Detractor follow-up rate

What data does this dashboard need?

  • Response-grain NPS data with 0-10 score, timestamp, and account
  • CSAT responses with score, touchpoint, and timestamp
  • Account dimension with plan, segment, region, and start date
  • Categorized verbatim themes where text analysis exists
  • Follow-up or ticket links for detractor workflows

How do you build it?

  1. Sync the source tools into a database and retain raw IDs, timestamps, statuses, and segment fields.
  2. Build modeled tables at the grain this dashboard requires.
  3. Create one saved question per card and certify the shared models and definitions.
  4. Add dashboard filters for Date range, survey, segment, plan, touchpoint.
  5. Show refresh time, and exclude internal and test activity from every headline card.

Example card SQL

NPS by segment, trailing 90 daysPostgreSQL
SELECT
  a.segment,
  COUNT(*) AS responses,
  ROUND(
    100.0 * (
      COUNT(*) FILTER (WHERE r.score >= 9)
      - COUNT(*) FILTER (WHERE r.score <= 6)
    ) / NULLIF(COUNT(*), 0), 1
  ) AS nps
FROM nps_responses r
JOIN accounts a ON a.id = r.account_id
WHERE r.submitted_at >= CURRENT_DATE - INTERVAL '90 days'
GROUP BY a.segment
HAVING COUNT(*) >= 30
ORDER BY nps DESC;

Dashboards

Integrations

Metrics

Analytics

FAQ

What sample size does an NPS card need?
Small samples swing wildly — a common floor is 30 responses per segment per period before showing a score, and the SQL pattern above enforces one with HAVING. Below the floor, show response counts instead of scores.
Should NPS and CSAT live on the same dashboard?
Yes, side by side but never merged. NPS is relationship-level loyalty on a 0-10 scale; CSAT is transaction-level satisfaction, usually 1-5 per touchpoint. They move differently and answer different questions.