Saltar al contenido

Desarrolladores

Webhooks

PollsLive puede enviar eventos firmados por POST a tu endpoint cuando cambian las encuestas y las sesiones en vivo, para que tus sistemas reaccionen en tiempo real en lugar de hacer sondeos.

Configuración

Añade un endpoint en Studio → API para desarrolladores: introduce tu URL HTTPS y selecciona los eventos a los que suscribirte. PollsLive muestra un secreto de firma (whsec_…) una sola vez. Guárdalo para verificar las entregas.

Eventos

  • 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: An async response was recorded. Live session answers do not emit this event.

Carga útil

Cada entrega es un cuerpo JSON con el nombre del evento, una marca de tiempo y los datos del evento:

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

Cada solicitud también incluye estas cabeceras:

  • X-PollsLive-Event: el nombre del evento.
  • X-PollsLive-Delivery: un id de entrega único.
  • X-PollsLive-Signature: t=<unix>,v1=<hex>.

Verificar firmas

Calcula un HMAC-SHA256 de <t>.<rawBody> usando tu secreto de firma y compáralo con el valor v1 (en tiempo constante):

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)
  );
}

Responde con un estado 2xx para confirmar. Rechaza cualquier cosa que no supere la verificación.

Reintentos

Si tu endpoint es inaccesible o devuelve un estado distinto de 2xx, PollsLive reintenta con retroceso exponencial (aproximadamente 1m, 5m, 30m, 2h, 6h) hasta seis intentos. Haz que tu manejador sea idempotente usando el id X-PollsLive-Delivery .

¿Aún tienes preguntas?

Nuestro equipo estará encantado de ayudarte.

Contáctanos

Usamos cookies esenciales para mantener tu sesión iniciada y evitar votos duplicados. Con tu permiso, también usamos Cloudflare Web Analytics para contar las visitas a las páginas y el Whop Pixel para ver qué visitas terminan en una compra. Política de cookies