caliper uidocs

Conversion funnel

Pro

Stages with counts and the drop-off between each.

Installs components/ui/conversion-funnel.tsxDepends on d3-shapeMotion none in component source
pnpm dlx shadcn@latest add @caliper/conversion-funnel
Visit to paid

2.1% of visitors reach paid. The biggest drop is between Visited and Signed up: 42,100 people (87%).

  1. Visited48,200100.0% of start▲ 9.3% against the previous period
  2. Signed up6,10012.7% of start · 13% of previous▲ 17.3% against the previous period
  3. Started trial3,3006.8% of start · 54% of previous▲ 13.8% against the previous period
  4. Paid1,0202.1% of start · 31% of previous▲ 18.6% against the previous period
Visit to paid
StepEveryonePaid adsOrganic
Visited482001240035800
Signed up610015004600
Started trial33007002600
Paid1020150870

When to use #

Use it for

  • Reviewing where visitors leave a flow.

Skip it when

  • The stages do not follow in order.

Installation #

terminal
pnpm dlx shadcn@latest add @caliper/conversion-funnel

Adds its 4 files to components/ui/, each with its own stylesheet, and installs their packages. Pro installs with your access token, set up once per project. See Pro access. The first part also adds Caliper UI’s tokens; import them once as in Installation.

Usage #

Import it from your copy of the source. The example behind the preview comes with the source.

example.tsx
import { ConversionFunnel } from "@/components/ui/conversion-funnel"

The worked example comes with Pro

The 17-line example behind the preview opens here with a Pro or Team licence.

Checking your licence…

API reference #

ConversionFunnel

component
PropTypeDefault
label *string—
steps *readonly FunnelStep[]—
segments *readonly { id: string; label: string; }[]—
loadingboolean—
errorstring—
classNamestring—

Accessibility #

It exposes status and img semantics, with aria-label and aria-busy kept in step with state. Changes that matter are announced through a live region.

No custom key handling; Tab and the native activation keys do the work.

Motion #

It declares no animation in its component source. Any transition comes from its stylesheet, which uses the duration tokens that collapse to instant under prefers-reduced-motion.