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.

A rendered poll pane (poll-v1)
poll-v1

Fields in data

The envelope around data (publisher, label, expiresAt…) is the same on every type: see the envelope.

FieldTypeNotes
questionstringrequired1–240 chars
optsarray of objectsrequired2–8 items
opts[].variant"v1"optionalDesign variant to render (defaults to v1).
opts[].labelstringrequired1–80 chars
opts[].pctnumberrequired0–100
nintegeroptional≥ 0

Craft

  • pct values are percentages (0–100), not fractions. 41.2 means 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 pct descending 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
  }
}