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¶
- Get Data → Text/CSV → select
churn_clean.csv - Power Query: verify
MonthlyChargesandTotalChargesare Decimal Number type - Create a Date table if you have signup dates:
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¶
- Connect → Text File →
churn_clean.csv - Create calculated field:
Churn Rate = SUM([Churn]) / COUNT([customerID]) - Sheet 1 — Churn Rate by Contract: Drag
Contractto Rows,Churn Rateto Columns → bar chart - Sheet 2 — Tenure Impact: Drag
tenure_bucketto Rows,Churn Rateto Columns - Sheet 3 — Risk Table: Drag
customerID,tenure,Contract,MonthlyChargesto Details, filterChurn = 0 - Dashboard: drag sheets, add filters, connect to all sheets