Analyze Churn Data from SaaS Export

SaaS platforms export churn data with one row per cancellation event, often including partial months, duplicate customer IDs across different plans, and free-text cancellation reasons that need grouping. You need cohort retention rates, revenue impact by reason, and time-to-churn averages, but the export gives you raw event logs. Coefficient connects directly to your SaaS platform or imports the CSV, then cleans the data and builds pivot tables in Google Sheets or Excel—no formulas required.

Import your SaaS churn export and get cohort retention tables, revenue-by-reason pivots, and churn rate calculations in minutes instead of hours of formula work.

What this export contains

customer_id
subscription_id
cancellation_date
signup_date
plan_name
mrr
cancellation_reason
churned_arr
account_age_days
last_login_date
payment_failures
support_tickets

Common questions

How do I analyze churn data from SaaS export?

Import the CSV into Google Sheets or Excel, then deduplicate customers by keeping only their final cancellation_date. Group free-text cancellation reasons into 5-8 categories using a lookup table. Calculate cohort retention by grouping customers by signup month and measuring how many remain active after 1, 3, 6, and 12 months. Coefficient automates the import, deduplication, and reason grouping so you can focus on the analysis.

How do I calculate churn rate when customers have multiple subscription rows?

Filter to each customer's last cancellation_date and count unique customer_id values. Divide by the number of active customers at the start of the period. Counting all rows treats a downgrade as a churn, which inflates the rate.

How do I group 60 different cancellation reasons into categories?

Create a lookup table mapping each unique reason to a category like "Price", "Product Fit", "Competitor", "Payment Issue", or "Other". Use VLOOKUP or XLOOKUP to tag each row, then pivot on the category. Coefficient can apply this mapping automatically across all rows.

Why does my churned revenue not match the finance report?

The churned_arr column usually shows the full monthly or annual value, not prorated for partial periods. Multiply by the fraction of the billing period remaining (days from cancellation to renewal date, divided by total billing days) to get actual lost revenue.

How do I separate voluntary churn from payment failures?

If payment_failures is greater than zero and cancellation_reason contains "payment", "card", "declined", or "billing", tag it involuntary. Everything else is voluntary. This is not perfect but catches most cases when the export lacks an explicit flag.

What is a cohort retention analysis and how do I build it from this export?

Group customers by their signup_date month, then calculate what percentage are still active (no cancellation_date) after 1 month, 3 months, 6 months, and 12 months. This shows whether newer cohorts retain better than older ones and where drop-off happens in the lifecycle.

Try it with your own file

DataMimi reads the file you actually have — merged cells, headers below row one, totals pasted at the bottom — and shows which rows and columns every number came from.

Ask about your file

What DataMimi costs

Every plan does everything — slides, written reports, cleaned exports, dashboards. They differ in how much work they cover.

Free

Free

40 credits a month

Starter

$24 /month

1,500 credits a month

Pro

$59 /month

5,000 credits a month

More in SaaS and subscription metrics