Conversion funnel
Four or five steps narrowing into one — visits to carts to checkouts to buys. The chart that turns "we have a leak" into "we have a leak at step 3".
Overview
A vertical stack of trapezoids, each narrower than the last, with the conversion rate between every pair printed alongside.
Every business has a funnel. For e-commerce: visits → product views → carts → checkouts → orders. For onboarding: signed up → invited team → connected data → first action. The funnel chart's job is to make the worst step impossible to miss — the drop from the widest slab to the next-widest is where attention goes first. Pair every slab with the absolute count and the step-to-step conversion rate; people read both.
Reach for it for any sequential, irreversible flow with 3–6 stages. Skip it if the stages aren't strictly ordered (use a stacked bar) or if dropoff is < 10% across the board (the funnel looks like a column and the user wonders why you bothered).
The chart
Five-step e-commerce funnel for the month. Visitors lose the most ground between "viewed product" and "added to cart".
Required pieces
Chart.Funnel ships in v0.2 with auto step-conversion calculation and worst-step highlighting. v0.1-alpha users can compose with inline SVG and the math below.React snippet
Pass steps with label and value. Step-to-step rates are computed for you.
Customising
Horizontal funnel
Lay the funnel left-to-right in a wide card. Same data, different orientation; works inside a header strip.
<Chart.Funnel
steps={oct}
orientation="horizontal"
height={120}
width={720}
/>
Compared funnels
Two side-by-side funnels — this month vs. last. Same scale, easy to see if a step got worse.
<Chart.Funnel.Compare
current={oct}
previous={sep}
showDelta
/>
Segmented by source
Stack each step by traffic source (organic, paid, direct) to see which source leaks where.
<Chart.Funnel
steps={oct}
segmentBy="source"
segments={['organic','paid','direct']}
/>
In context
Embedded in a "Funnel health" stat hero. The hero leads with overall conversion; the funnel chart sits underneath, dimmed slightly, so the eye reads the number first.
Accessibility
A funnel's whole point is the comparison between steps. Make sure every step's value, label, and step-conversion are reachable without sight.
- One
role="img"for the whole funnel. Inside,<title>names it and<desc>lists every step in order with absolute and percentage values. - The
aria-labelstates the overall conversion. "October conversion funnel, 2% overall, worst step views to carts" — verdict first, detail in the desc. - Worst-step highlight is not colour-only. The red border on the leaky slab is duplicated by a "worst step" label and the desc says so.
- Counts are inside the slabs. Don't rely on tooltips — touch users and keyboard users can't hover.
- Numeric fallback table. A visually hidden
<table>lists step / count / step-conversion / cumulative-conversion in reading order. - Slabs are tab-targets. Each step is a focusable region; arrow keys move up and down the funnel.