Funnel component
Datatype: "funnel"A funnel chart — conversion / pipeline stages narrowing top→bottom, each band sized to its value with optional conversion percentages. Built for growth and sales reports.
Design JSON
{
"title": "Funnel sample",
"description": "A signup conversion funnel",
"dimensions": {
"width": 800,
"height": 420
},
"background": {
"color": "#ffffff"
},
"components": [
{
"id": "sample-funnel",
"key": "funnel",
"type": "funnel",
"position": {
"x": 220,
"y": 40
},
"rotation": 0,
"size": {
"width": 360,
"height": 340
},
"dynamic": true,
"properties": {
"data": [
{
"label": "Visits",
"value": 12000
},
{
"label": "Signups",
"value": 4200
},
{
"label": "Trials",
"value": 1800
},
{
"label": "Paid",
"value": 640
}
],
"color": "#6366f1",
"showValues": true,
"showPercent": true,
"percentOf": "first",
"valueFormat": "compact",
"opacity": 1
}
}
]
}Like what you built? The full editor — canvas, templates and the render API — is free to start.
Open the editorFunnel examples
Real renders of the funnel — each one is the same component with different property values, and the API payload below each preview reproduces it exactly.
Signup conversion funnel
Visits → Signups → Trials → Paid with conversion rates off the top stage.
API overrides for this example
{
"funnel.data": [
{
"label": "Visits",
"value": 12000
},
{
"label": "Signups",
"value": 4200
},
{
"label": "Trials",
"value": 1800
},
{
"label": "Paid",
"value": 640
}
],
"funnel.showValues": true,
"funnel.showPercent": true,
"funnel.percentOf": "first",
"funnel.valueFormat": "compact"
}Sales pipeline
Deal stages from lead to won, in per-stage colors with dollar values.
API overrides for this example
{
"funnel.data": [
{
"label": "Leads",
"value": 480
},
{
"label": "Qualified",
"value": 260
},
{
"label": "Proposal",
"value": 120
},
{
"label": "Won",
"value": 54
}
],
"funnel.colors": [
"#2563eb",
"#7c3aed",
"#c026d3",
"#db2777"
],
"funnel.showValues": true,
"funnel.showPercent": true,
"funnel.percentOf": "previous",
"funnel.valueFormat": "number"
}All funnel styles
Every style rendered live — each is just a different set of property values on the same component, and each has its own page with a dedicated preview, use cases and API example.
Use cases
What developers typically build with the funnel component.
- Signup / activation conversion funnels for growth reports
- Sales pipeline stage graphics for CRM digests
- Checkout / cart drop-off visuals for e-commerce
- Recruiting or onboarding pipeline snapshots
Use it dynamically via the API
Push fresh stages per render with '<key>.data' (or just '<key>') as [{ label, value }]; colors are overridable too.
Full API request with the sample design's current values — the playground above sends only the properties you change
curl --location 'https://render.imejis.io/v1/{{YOUR_DESIGN_ID}}' \
--header 'dma-api-key: {{YOUR_API_KEY}}' \
--header 'Content-Type: application/json' \
--data '{
"funnel.data": [
{
"label": "Visits",
"value": 12000
},
{
"label": "Signups",
"value": 4200
},
{
"label": "Trials",
"value": 1800
},
{
"label": "Paid",
"value": 640
}
],
"funnel.color": "#6366f1",
"funnel.showValues": true,
"funnel.showPercent": true,
"funnel.percentOf": "first",
"funnel.valueFormat": "compact",
"funnel.opacity": 1
}'Only send the properties you want to change — everything else keeps its design value. See the API documentation for all languages.
Property reference
Every property the funnel component accepts — in the editor, in design JSON, and as API overrides.
| Property | Type | Edits as | Default | Description |
|---|---|---|---|---|
| data | object[] | text | [] | Stages top→bottom: array of { label, value }. |
| colors | color[] | text | [] | One color per stage (falls back to shades of `color`). |
| color | color | #6366f1 | "#6366f1" | Base color when colors is unset. |
| labelColor | color | #ffffff | "#ffffff" | Text color drawn on the bands. |
| showValues | boolean | true | true | Print each stage value. |
| valueFormat | 'number' | 'compact' | 'percent' | 'currency' | numbercompactpercentcurrency | "compact" | How values are formatted (1,200 / 1.2K / 12% / $1,200). |
| currencySymbol | string | text | "$" | Symbol used with the 'currency' format. |
| showPercent | boolean | false | false | Print the conversion percentage per stage. |
| percentOf | 'first' | 'previous' | firstprevious | "first" | Percent basis: share of the first stage or of the previous stage. |
| gap | number | 2 | 2 | Gap between bands (px). |
| opacity | number | 1 | 1 | Overall component opacity from 0 (transparent) to 1 (opaque). |
| borderWidth | number | 0 | 0 | Border thickness in pixels around the component. |
| borderColor | color | transparent | "transparent" | Border color (any CSS color). |
| borderStyle | 'solid' | 'dashed' | 'dotted' | 'double' | 'none' | soliddasheddotteddoublenone | "solid" | Border line style. |
| borderRadius | number | 0 | 0 | Corner radius in pixels. |
| boxShadow | string | text | — | CSS box-shadow applied to the component, e.g. "0 4px 6px rgba(0,0,0,0.1)". |