Pane types / poll
poll
Results of a vote or survey — how a group actually answered. This card reports results; it doesn't collect them.
A short poll with 2–8 options, each weighted by percent.

Fields in data
The envelope around data (publisher, label, expiresAt…) is the same on every type: see the envelope.
| Field | Type | Notes | |
|---|---|---|---|
question | string | required | 1–240 chars |
opts | array of objects | required | 2–8 items |
opts[].variant | "v1" | optional | Design variant to render (defaults to v1). |
opts[].label | string | required | 1–80 chars |
opts[].pct | number | required | 0–100 |
n | integer | optional | ≥ 0 |
Craft
pctvalues are percentages (0–100), not fractions.41.2means 41.2%.- They should add up to ~100 (rounding is fine). The server won't enforce it, but a card summing to 60 looks broken.
- 2–4 options read best. Eight bars on a phone is a chart, not a card.
- Option
labels are short and parallel — "Ship it", "Wait a week", "Cut scope". - Include
n; a percentage without a sample size invites the wrong conclusion. - Order options by
pctdescending unless the options have a natural order (agree → disagree).
Avoid
- Don't send a poll the user is meant to answer — there's no interaction; the card shows results only.
- Don't send fractions (
0.41) — they render as 0.41%. - Don't include a "no response" bucket unless it's genuinely interesting.
Examples
Complete payloads for POST /api/v1/feed/items or the MCP publish_pane tool.
A team decision that just closed
{
"type": "poll",
"publisher": "Slack",
"publisherInit": "SL",
"publisherColor": "#4A154B",
"label": "#eng-decisions · closed",
"data": {
"question": "Ship the migration this Friday, or hold for the next window?",
"opts": [
{
"label": "Ship Friday",
"pct": 58
},
{
"label": "Hold two weeks",
"pct": 33
},
{
"label": "No preference",
"pct": 9
}
],
"n": 24
}
}A published survey result worth knowing
{
"type": "poll",
"publisher": "State of JS",
"publisherInit": "JS",
"publisherColor": "#F2C94C",
"label": "2026 survey",
"data": {
"question": "Which runtime do you reach for on a new project?",
"opts": [
{
"label": "Node",
"pct": 46
},
{
"label": "Bun",
"pct": 31
},
{
"label": "Deno",
"pct": 17
},
{
"label": "Something else",
"pct": 6
}
],
"n": 18420
}
}