Skip to content

Dashboard Design — Customer Churn Analysis

Dashboard Purpose

A single-page executive dashboard for the Head of Customer Success — answers the question "Do we have a churn problem, and where should we focus?"

A separate operational page for the retention team — answers "Which customers should I call today?"


Executive Dashboard Layout

┌─────────────────────────────────────────────────────────────────┐
│   Churn Rate: 26.5%     Churned MRR: £139k    At Risk: 847     │
│   ▲ 2.1% MoM            ▼ From £145k last mo  Month-to-month   │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  Monthly Churn Rate Trend (12 months)          Contract Mix     │
│  [Line chart with 8% target line]           [Pie: M2M/1yr/2yr] │
│                                                                  │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  Churn Rate by Contract Type       Churn Rate by Tenure Bucket  │
│  [Horizontal bar]                  [Horizontal bar]             │
│                                                                  │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  Internet Service × Contract Heatmap          Add-on Impact     │
│  [Heatmap: churn rate %]                   [Bar: churn by #]    │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

Retention Operations Page Layout

┌─────────────────────────────────────────────────────────────────┐
│   Filters: [Risk Score ▼] [Tenure ▼] [InternetService ▼]       │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  At-Risk Customer Table                                          │
│  ┌─────────────┬────────┬──────────────┬──────────┬──────────┐ │
│  │ Customer ID │ Tenure │ Contract     │ MRR      │ Risk     │ │
│  │ 7590-VHVEG │ 3 mo   │ Month-month  │ £84.90   │ 🔴 High  │ │
│  │ 1234-ABCDE │ 8 mo   │ Month-month  │ £102.50  │ 🟡 Med   │ │
│  └─────────────┴────────┴──────────────┴──────────┴──────────┘ │
│                                                                  │
│  [Export to CSV for outreach team]                              │
└─────────────────────────────────────────────────────────────────┘

Building in Power BI Desktop

Step 1 — Connect and prepare data

  1. Get Data → Text/CSV → select churn_clean.csv
  2. Power Query: verify MonthlyCharges and TotalCharges are Decimal Number type
  3. Create a Date table if you have signup dates:
    DateTable = CALENDAR(DATE(2018,1,1), DATE(2024,12,31))
    

Step 2 — Key DAX Measures

Churn Rate = DIVIDE(SUM(churn[Churn]), COUNTROWS(churn), 0)

Churned MRR = CALCULATE(SUM(churn[MonthlyCharges]), churn[Churn] = 1)

Retained MRR = CALCULATE(SUM(churn[MonthlyCharges]), churn[Churn] = 0)

At Risk Count = 
CALCULATE(
    COUNTROWS(churn),
    churn[Churn] = 0,
    churn[Contract] = "Month-to-month",
    churn[tenure] < 24
)

Churn Risk Score = 
    IF(churn[Contract] = "Month-to-month", 30, 0)
    + IF(churn[tenure] < 12, 20, 0)
    + IF(churn[InternetService] = "Fiber optic", 15, 0)
    + IF(churn[MonthlyCharges] > 70, 10, 0)
    + IF(churn[addon_count] = 0, 15, 0)
    + IF(churn[auto_payment] = 0, 10, 0)

Step 3 — KPI Cards

Add 3 KPI cards at the top: - Churn Rate — use Churn Rate measure with conditional formatting (red if > 25%) - Lost MRR — use Churned MRR measure - At-Risk Customers — use At Risk Count

Step 4 — Slicers

Add slicers for: Contract, InternetService, tenure_bucket, SeniorCitizen

Connect to all pages via: Format → Edit Interactions

Step 5 — Heatmap

In the "Matrix" visual: - Rows: InternetService - Columns: Contract - Values: Churn Rate measure

Apply conditional formatting: Background color → by field value (red = high churn, green = low).


Building in Tableau

  1. Connect → Text File → churn_clean.csv
  2. Create calculated field: Churn Rate = SUM([Churn]) / COUNT([customerID])
  3. Sheet 1 — Churn Rate by Contract: Drag Contract to Rows, Churn Rate to Columns → bar chart
  4. Sheet 2 — Tenure Impact: Drag tenure_bucket to Rows, Churn Rate to Columns
  5. Sheet 3 — Risk Table: Drag customerID, tenure, Contract, MonthlyCharges to Details, filter Churn = 0
  6. Dashboard: drag sheets, add filters, connect to all sheets

← SQL Analysis · Next: Insights and Recommendations →