Customer Segment Migration Sankey Diagram: Template

Compare customers' segment at the start and end of a year to see who upgraded, downgraded, stayed or cancelled. A two-period view with your own counts.

A segment migration Sankey compares the same customers at two points in time. The left column is their segment at the start, the right column their segment at the end.

Net movement hides churn and upgrades that cancel out. Here Premium ends the year the same size it started, yet a fifth of its customers left and others joined from below.

Each segment appears twice, once for each date, so the nodes need distinct names such as Standard at start and Standard at end.

How to read this diagram

  • Premium is 2,000 customers at both dates, but 400 left it and 400 joined it.
  • 800 of 5,000 free customers (16%) upgrade to a paid segment during the year.
  • Of 3,000 Standard customers, 2,000 (67%) stay, 300 upgrade, 300 downgrade and 400 cancel.
  • 1,000 customers cancel in total, 10% of the base.

The data behind it

Invented figures for illustration. Not data about any real business. Customers who joined during the year are not included.

Customer Segment Migration Sankey Diagram: Template (customers)
FromToAmount (customers)
Free at startFree at end3800
Free at startStandard at end700
Free at startPremium at end100
Free at startCancelled400
Standard at startFree at end300
Standard at startStandard at end2000
Standard at startPremium at end300
Standard at startCancelled400
Premium at startStandard at end200
Premium at startPremium at end1600
Premium at startCancelled200

The same data as CSV

source,target,value
Free at start,Free at end,3800
Free at start,Standard at end,700
Free at start,Premium at end,100
Free at start,Cancelled,400
Standard at start,Free at end,300
Standard at start,Standard at end,2000
Standard at start,Premium at end,300
Standard at start,Cancelled,400
Premium at start,Standard at end,200
Premium at start,Premium at end,1600
Premium at start,Cancelled,200

How it works

  1. Freeze the customer list at the start date

    Record each customer's segment.

  2. Look up the same customers at the end date

    Segment, or cancelled.

  3. Count each pair of segments

    For example Standard to Premium.

  4. Check the balance

    Each start segment should send on exactly the customers it began with.

Frequently asked questions

Why leave out new customers?

So each customer is counted once from the start. To include them, add a New customers node on the left.

How is this different from an alluvial diagram?

It is a two-period alluvial view drawn as a Sankey. For many periods, an alluvial or a repeated multi-stage Sankey is clearer.

Edit this migration Sankey

Open the example as your own chart and enter your start and end counts.

Edit this migration Sankey

More in Sankey diagrams