Problem
A fixed sequence does not show the different routes people or resources take through a process.
Solution
Draw stages as nodes and movement between them as bands whose widths represent quantity. Label the measure and provide exact values on interaction.
Include exits or losses when flows do not continue to another shown stage. Make clear what is counted so incoming and outgoing quantities can be understood.
Reduce crossing lines and keep node positions stable between updates. Limit the view to a readable set of routes, with a way to investigate grouped or omitted paths.
Use when
The route branches and people need to understand how volume moves between a manageable set of stages.
Don’t use when
The sequence is fixed, where a funnel is clearer and cheaper. Or when the paths are long-tailed: real user journeys have thousands of distinct routes, and a diagram of the top eight plus “other” is either a lie by omission or an unreadable hairball.
Trade-offs
Crossing bands and many routes quickly become difficult to read. The diagram needs space and is weak for exact comparisons. Grouping small paths can hide the unusual route people are trying to find.
Checklist
- Do the flows conserve, and if not, is there an explicit exit node?
- How many distinct paths exist, and what fraction is shown before “other”?
- Does “other” carry a count, so the viewer can size what is hidden?
- Are crossings minimised, and is node order stable between refreshes?
- Can the viewer get an exact number for a band?
- Is the direction of flow unambiguous?
- Does colour encode anything, or is it decoration?
- Is there a minimum band width below which a path is dropped, and is that stated?
- Would a funnel or a table answer this question with less machinery?
- Does the diagram still work at the panel size it will actually render at?
Compare
Amplitude and Mixpanel offer path analysis where the Sankey is generated from event streams and each node is clickable into the underlying users, which turns a picture into a starting point. Google Analytics has shipped several versions of a flow report over the years and each has struggled with the same long-tail problem, which is a useful demonstration that this is inherent rather than an implementation failure. Grafana has no core Sankey panel and relies on community plugins, so it appears on dashboards rarely and usually as a one-off. Datadog applies the encoding to service dependencies and request routing rather than to people, where conservation actually holds better and the node set is bounded.
Related
Funnel fits a fixed sequence. Service map emphasizes connections rather than flow volume. Stacked composition shows shares at a point in time.
Drill-down opens a route or node. Cohort grid follows groups over elapsed time.