Developers

Webhooks

PollsLive can POST signed events to your endpoint when polls and live sessions change - so your systems react in real time instead of polling.

Setup

Add an endpoint in Studio → Developers: enter your HTTPS URL and select the events to subscribe to. PollsLive shows a signing secret (whsec_…) once - store it to verify deliveries.

Events

  • poll.published - A poll was published and is now live/shareable.
  • poll.closed - Voting was closed on a poll.
  • vote.created - A new vote was recorded on an async poll.
  • session.started - A live presenter session was started.
  • session.ended - A live presenter session ended.
  • response.created - A participant submitted a response in a live session.

Payload

Every delivery is a JSON body with the event name, a timestamp, and the event data:

POST body
{
  "event": "poll.published",
  "createdAt": "2026-06-18T12:00:00.000Z",
  "data": {
    "poll": { "id": "...", "slug": "...", "title": "...", "shareUrl": "..." }
  }
}

Each request also carries these headers:

  • X-PollsLive-Event - the event name.
  • X-PollsLive-Delivery - a unique delivery id.
  • X-PollsLive-Signature - t=<unix>,v1=<hex>.

Verifying signatures

Compute an HMAC-SHA256 of <t>.<rawBody> using your signing secret and compare it to the v1 value (constant-time):

Node.js
import crypto from "crypto";

function verify(rawBody, header, secret) {
  const parts = Object.fromEntries(
    header.split(",").map((kv) => kv.split("="))
  );
  const expected = crypto
    .createHmac("sha256", secret)
    .update(`${parts.t}.${rawBody}`)
    .digest("hex");
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(parts.v1)
  );
}

Respond with a 2xx status to acknowledge. Reject anything that fails verification.

Retries

If your endpoint is unreachable or returns a non-2xx status, PollsLive retries with exponential backoff (roughly 1m, 5m, 30m, 2h, 6h) up to six attempts. Make your handler idempotent using the X-PollsLive-Delivery id.

Still have questions?

Our team is happy to help.

Contact us
Webhooks - PollsLive Developer API | PollsLive