Mapping a customer journey with a Sankey diagram

Funnels flatten a customer journey into a single narrowing shape, which hides the interesting part: people do not just drop off, they drop off from somewhere to somewhere. A Sankey keeps both halves visible.

Start with channels, not totals

The leftmost column should be acquisition sources: organic, paid, referral, outbound. If every channel merges into one Signups node too early, you lose the ability to see that paid traffic activates at half the rate of referrals.

Draw drop-off as a destination

The mistake teams make is letting users vanish between stages. Give churn a node. A ribbon labelled Churned at trial with a width you cannot ignore does more for prioritisation than any percentage in a dashboard.

Keep the stages to four or five

Visit, signup, activation, paid, retained is enough for almost every product. Sub-steps belong in a second chart, not in the one you show the whole company.

Use the same period for every ribbon

Cohort mixing is the classic error here: acquisition counted for the month, retention counted for the year. Pick one window, state it in the title, and keep every number inside it.

  • Nodes: channels, then stages, then outcomes.
  • Green for progression, red for churn, neutral for the funnel trunk.
  • One period, stated in the title.
  • Absolute users, not percentages — the widths already give you the ratio.
Build your journey flow

Once it exists, the chart becomes a monthly ritual: same layout, new numbers, and the ribbons that changed width are your agenda.

Frequently asked

Is a Sankey better than a funnel chart for user journeys?

Whenever users can take more than one path, yes. A funnel assumes a single sequence, so it cannot show that referral users skip a step or that churned users came mostly from one channel.

What data do I need to build one?

Counts of users at each stage, split by the previous stage. Any product analytics export with a stage column and a source column is enough.