Vote recorded
Sent to the tenant’s webhook URL once per vote, shortly after the vote is recorded. Verify webhook-signature before trusting the body and deduplicate by webhook-id: delivery is at-least-once. Any non-2xx response, a redirect or no response within 10 seconds is retried with growing delays for about a day, then the delivery is abandoned; the vote feed remains the source for reconciliation.
Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”Event id (UUIDv7), the same on every retry; not data.id
Send time of this attempt, epoch seconds; signed, so a stale value exposes a replay
v1,<base64 HMAC-SHA256> of {webhook-id}.{webhook-timestamp}.{body} keyed with the tenant’s webhook secret
Request Bodyrequired
Section titled “Request Bodyrequired”Standard Webhooks envelope of vote.created
object
The vote, in the same shape as the vote feed; ip is always set
object
When the vote was recorded
Responses
Section titled “Responses”Any 2xx acknowledges delivery
