Aller au contenu

Développeurs

Webhooks

PollsLive peut envoyer par POST des événements signés vers votre endpoint lorsque les sondages et les sessions en direct changent, pour que vos systèmes réagissent en temps réel au lieu d'interroger.

Configuration

Ajoutez un endpoint dans Studio → API développeur : saisissez votre URL HTTPS et sélectionnez les événements auxquels vous abonner. PollsLive affiche un secret de signature (whsec_…) une seule fois. Conservez-le pour vérifier les livraisons.

Événements

  • 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.

Charge utile

Chaque livraison est un corps JSON contenant le nom de l'événement, un horodatage et les données de l'événement :

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

Chaque requête porte également ces en-têtes :

  • X-PollsLive-Event: le nom de l'événement.
  • X-PollsLive-Delivery: un id de livraison unique.
  • X-PollsLive-Signature: t=<unix>,v1=<hex>.

Vérifier les signatures

Calculez un HMAC-SHA256 de <t>.<rawBody> à l'aide de votre secret de signature et comparez-le à la valeur v1 (en temps constant) :

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

Répondez avec un statut 2xx pour accuser réception. Rejetez tout ce qui échoue à la vérification.

Nouvelles tentatives

Si votre endpoint est injoignable ou renvoie un statut autre que 2xx, PollsLive réessaie avec un backoff exponentiel (environ 1m, 5m, 30m, 2h, 6h) jusqu'à six tentatives. Rendez votre gestionnaire idempotent à l'aide de l'id X-PollsLive-Delivery .

Vous avez encore des questions ?

Notre équipe se fera un plaisir de vous aider.

Contactez-nous

Les cookies essentiels vous gardent connecté et bloquent les votes en double. Avec votre accord, nous utilisons aussi Cloudflare Web Analytics pour compter les pages vues et le Whop Pixel pour savoir quelles visites mènent à un achat. Politique de cookies