This feature is in Beta. Weβd love your feedback as we continue to improve it.

- You want to show how values flow between categories (e.g., marketing channels β conversions)
- Youβre visualizing multi-step processes or funnels
- You need to understand distribution across interconnected stages
- You have cyclical flows that loop back (e.g., retargeting β conversion β retargeting)
Data requirements
Sankey charts require three columns in your data:| Column type | Description | Example |
|---|---|---|
| Source dimension | Where the flow originates | channel, referrer, stage_from |
| Target dimension | Where the flow goes | conversion_type, destination, stage_to |
| Weight metric | The size of the flow | count, revenue, users |
Creating a Sankey chart
- Run a query with your source dimension, target dimension, and weight metric
- Select Sankey from the chart type picker
- In the configuration panel, assign:
- Source β the dimension representing flow origins
- Target β the dimension representing flow destinations
- Value β the metric determining flow size
Features
Multi-step flows
Sankey charts automatically handle nodes that appear as both sources and targets, creating multi-level visualizations. For example, if βEmailβ appears as a target from βAd Clickβ and as a source to βPurchaseβ, the chart will show the full flow path.Cyclical flows
Unlike traditional Sankey implementations, Lightdash supports cyclical data where flows can loop back. For example, in a retargeting funnel:- Awareness β Consideration
- Consideration β Conversion
- Conversion β Retargeting
- Retargeting β Conversion (loop)
Node layout
The Node layout option controls how a label that appears at more than one depth is rendered. For funnels where a single stage is reached from several preceding steps, the default can make one real stage look like several different nodes, so you can choose between three layouts:- Multi-step (default) β Each occurrence of a label at a different depth is rendered as a separate node, including cycles, which become βStep Nβ instances as described above. This preserves the full journey.
- Merged β Collapses nodes that share a label into a single node, so all flows in and out of that label converge on one node while the multi-step journey is preserved. Available for acyclic flows only; when your data contains a loop the option is disabled and the chart falls back to multi-step.
- Direct β Shows only direct source β target flows in two columns, with no multi-step chaining. A label that is both a source and a target appears once on each side. This works for any data, including cyclical flows.
Display options
- Orientation β Display flows horizontally (left to right) or vertically (top to bottom)
- Node alignment β Align nodes to the left, right, or justify across the chart
- Node layout β Choose how nodes are arranged: Multi-step (depth-based journeys, the default), Merged (one node per label, acyclic flows only), or Direct (two-column source β target only)