Growth OS
Get Started
Advanced25 min read

Dashboard Pack Implementation

Build the two dashboards every PLG company needs: a North Star board for company-wide alignment and an Activation board for understanding user journey health.

Why This Matters

Most teams have dozens of dashboards but no single source of truth. Engineers check different metrics than PMs, who check different metrics than execs. A standardized dashboard pack ensures everyone is looking at the same numbers, debating strategy instead of data accuracy.

North Star Dashboard

The North Star dashboard answers one question: "Is the business healthy?" It should be glanceable in under 10 seconds and updated daily.

Recommended Metrics Layout
MetricDefinitionRefresh
North Star MetricWeekly Active {Objects} — the core unit of value deliveredDaily
WAUUsers with ≥1 session in rolling 7 daysDaily
SignupsNew user registrations (cumulative + daily)Real-time
Activation Rate% of signups completing activation within 7 daysDaily
Revenue (MRR/ARR)Monthly recurring revenue, with expansion/contractionDaily
Churn Rate% of accounts churning in trailing 30 daysWeekly

North Star Metric: Weekly Active Objects

The North Star should capture value delivery, not just activity. For a dashboard tool, it's "Weekly Active Dashboards" (dashboards viewed by ≥1 user in 7 days).

-- Weekly Active Dashboards (North Star)
SELECT
  DATE_TRUNC('week', event_timestamp) AS week,
  COUNT(DISTINCT dashboard_id) AS weekly_active_dashboards
FROM events
WHERE
  event_name = 'dashboard_viewed'
  AND event_timestamp >= CURRENT_DATE - INTERVAL '12 weeks'
GROUP BY 1
ORDER BY 1 DESC;

Activation Dashboard

The Activation dashboard tracks the user journey from signup to value realization. It identifies where users drop off and which behaviors correlate with retention.

Activation Funnel Stages
StageEventTargetTimeframe
1. Signed Upuser_signed_up100%
2. Setup Completeonboarding_completed≥80%Within 24h
3. First Object Createddashboard_created≥60%Within 48h
4. Value Actiondashboard_shared≥40%Within 7d
5. Activateduser_activated≥30%Within 7d

Activation Funnel Query

-- Activation Funnel (7-day cohorts)
WITH signups AS (
  SELECT
    user_id,
    DATE_TRUNC('week', event_timestamp) AS cohort_week
  FROM events
  WHERE event_name = 'user_signed_up'
    AND event_timestamp >= CURRENT_DATE - INTERVAL '8 weeks'
),
funnel AS (
  SELECT
    s.user_id,
    s.cohort_week,
    MAX(CASE WHEN e.event_name = 'onboarding_completed'
      AND e.event_timestamp <= s.cohort_week + INTERVAL '1 day'
      THEN 1 ELSE 0 END) AS setup_complete,
    MAX(CASE WHEN e.event_name = 'dashboard_created'
      AND e.event_timestamp <= s.cohort_week + INTERVAL '2 days'
      THEN 1 ELSE 0 END) AS first_object,
    MAX(CASE WHEN e.event_name = 'dashboard_shared'
      AND e.event_timestamp <= s.cohort_week + INTERVAL '7 days'
      THEN 1 ELSE 0 END) AS value_action,
    MAX(CASE WHEN e.event_name = 'user_activated'
      AND e.event_timestamp <= s.cohort_week + INTERVAL '7 days'
      THEN 1 ELSE 0 END) AS activated
  FROM signups s
  LEFT JOIN events e ON s.user_id = e.user_id
  GROUP BY 1, 2
)
SELECT
  cohort_week,
  COUNT(*) AS signups,
  SUM(setup_complete) AS setup_complete,
  SUM(first_object) AS first_object,
  SUM(value_action) AS value_action,
  SUM(activated) AS activated,
  ROUND(100.0 * SUM(activated) / COUNT(*), 1) AS activation_rate
FROM funnel
GROUP BY 1
ORDER BY 1 DESC;

Suggested Metric Definitions

Clear definitions prevent "which revenue number?" debates. Document these in a shared metrics dictionary and reference them in dashboards.

Active User

A user with at least one page_viewed or dashboard_viewed event in the measurement period. Exclude internal users (email domain filter) and known bots.

Activated User

A user who completes the activation criteria within 7 days of signup: created at least one {object} AND performed the value action (share/export/deploy). Logged via user_activated event.

MRR (Monthly Recurring Revenue)

Sum of all active subscription values normalized to monthly. Annual plans divided by 12. Excludes one-time payments, refunds, and disputed charges. Source: billing system.

Churn Rate

(Lost MRR in period) / (MRR at start of period) × 100. A "churned" account is one that had active subscription at period start and doesn't at period end. Excludes paused accounts and downgrades (count as contraction).

Time to Value (TTV)

Median time from user_signed_up to user_activated event for users who do activate. Measure in minutes. Target: under 30 minutes for self-serve PLG.

Example Queries

Daily Active Users (DAU) Trend

-- DAU over last 30 days
SELECT
  DATE(event_timestamp) AS date,
  COUNT(DISTINCT user_id) AS dau
FROM events
WHERE
  event_name IN ('page_viewed', 'dashboard_viewed')
  AND event_timestamp >= CURRENT_DATE - INTERVAL '30 days'
  AND user_id NOT IN (SELECT user_id FROM internal_users)
GROUP BY 1
ORDER BY 1;

Feature Adoption by Cohort

-- Feature adoption rates by signup cohort
WITH user_cohorts AS (
  SELECT
    user_id,
    DATE_TRUNC('week', MIN(event_timestamp)) AS cohort_week
  FROM events
  WHERE event_name = 'user_signed_up'
  GROUP BY 1
)
SELECT
  uc.cohort_week,
  COUNT(DISTINCT uc.user_id) AS cohort_size,
  COUNT(DISTINCT CASE WHEN e.event_name = 'dashboard_shared' THEN e.user_id END) AS shared,
  COUNT(DISTINCT CASE WHEN e.event_name = 'report_exported' THEN e.user_id END) AS exported,
  COUNT(DISTINCT CASE WHEN e.event_name = 'teammate_invited' THEN e.user_id END) AS invited_team
FROM user_cohorts uc
LEFT JOIN events e ON uc.user_id = e.user_id
  AND e.event_timestamp <= uc.cohort_week + INTERVAL '14 days'
GROUP BY 1
ORDER BY 1 DESC
LIMIT 12;

Retention Cohort Analysis

-- Week-over-week retention by signup cohort
WITH signup_cohorts AS (
  SELECT
    user_id,
    DATE_TRUNC('week', event_timestamp) AS cohort_week
  FROM events
  WHERE event_name = 'user_signed_up'
),
activity AS (
  SELECT
    user_id,
    DATE_TRUNC('week', event_timestamp) AS activity_week
  FROM events
  WHERE event_name IN ('page_viewed', 'dashboard_viewed')
)
SELECT
  sc.cohort_week,
  COUNT(DISTINCT sc.user_id) AS cohort_size,
  COUNT(DISTINCT CASE WHEN a.activity_week = sc.cohort_week + INTERVAL '1 week'
    THEN sc.user_id END) AS week_1,
  COUNT(DISTINCT CASE WHEN a.activity_week = sc.cohort_week + INTERVAL '2 weeks'
    THEN sc.user_id END) AS week_2,
  COUNT(DISTINCT CASE WHEN a.activity_week = sc.cohort_week + INTERVAL '4 weeks'
    THEN sc.user_id END) AS week_4,
  COUNT(DISTINCT CASE WHEN a.activity_week = sc.cohort_week + INTERVAL '8 weeks'
    THEN sc.user_id END) AS week_8
FROM signup_cohorts sc
LEFT JOIN activity a ON sc.user_id = a.user_id
GROUP BY 1
ORDER BY 1 DESC
LIMIT 12;

Alerting Strategy

Dashboards are reactive; alerts are proactive. Set up alerts for metrics that need immediate attention when they breach thresholds.

Recommended Alerts
AlertConditionSeverityChannel
DAU DropDAU down >20% vs 7-day averageCriticalSlack #alerts, PagerDuty
Signup DropDaily signups <50% of 7-day avgCriticalSlack #growth
Activation Rate Drop7-day activation rate <25%WarningSlack #product
TTV SpikeMedian TTV >60 minutesWarningSlack #product
Error Rate SpikeError events >5% of totalCriticalSlack #eng, PagerDuty
Churn SpikeWeekly churn >3% (for low-churn products)WarningSlack #cs, Email to CS lead

Alert Fatigue Warning

Too many alerts = ignored alerts. Start with 3-5 critical alerts. Add more only when you have bandwidth to respond. Every alert should have a clear owner and response playbook.

Common Mistakes

1.

Vanity Metrics on North Star

Total signups, page views, or registered users as North Star—they go up forever regardless of value.

Fix: North Star must correlate with business outcomes. "Weekly Active Objects" captures actual value delivery.

2.

Undefined Activation

"Activated" means different things to different teams. No clear event marking activation.

Fix: Define explicit activation criteria. Fire user_activated event when criteria met. Document in metrics dictionary.

3.

No Time Boundaries on Funnel

Activation funnel counts users who activated "ever"—not actionable.

Fix: Time-bound each funnel stage (setup within 24h, activation within 7 days). Cohort analysis should show weekly progress.

4.

Missing Segmentation

Company-wide metrics hide segment-specific problems. Enterprise and SMB behave differently.

Fix: Add segment breakdowns (plan tier, company size, acquisition channel). Create segment-specific dashboards for detailed analysis.

5.

Stale Dashboards

Dashboards built once and never updated. Queries break when schema changes.

Fix: Dashboard-as-code. Version control queries. Add data freshness checks. Quarterly dashboard review meetings.

Implementation Checklist

North Star Dashboard

Activation Dashboard

Alerting

Maintenance