Webhooks

Get an HTTPS POST when something happens, and verify that it came from us.

Adding an endpoint

In Studio, open Webhooks, give us an HTTPS URL and tick the events you care about. Venued POSTs a JSON body to that URL whenever one of them happens. Connect it to your own backend, or to something like Zapier or Make.

The events you can subscribe to

  • order.confirmed fires when an order is paid and confirmed.
  • event.published fires when one of your events becomes visible.

Verifying the signature

Every delivery carries a Venued-Signatureheader. Recompute an HMAC-SHA256 over the timestamp and the raw body using your endpoint’s signing secret, then compare it against the v1 value in that header. If it does not match, discard the request.

Compare against the RAW body, exactly as received. Parsing the JSON and re-serialising it changes the bytes, and the signature will never match again.

The signing secret is shown beside the endpoint in Studio. You can roll it at any time: a new secret is issued immediately and takes effect from the next delivery, so update your endpoint as soon as you have it.

Acknowledging, and what happens if you do not

Return any 2xx status to acknowledge a delivery. Anything else is treated as a failure and retried with backoff.

Answer quickly and do the work afterwards. An endpoint that takes seconds to reply will be retried while it is still thinking, and you will process the same event twice.

Deliveries can arrive more than once. Use the envelope’s id to make your handler idempotent: a resent delivery keeps the id it had the first time, which is exactly what makes it recognisable.

When something breaks

Each endpoint in Studio keeps a delivery log: the event, the HTTP status we got back, how many attempts it took, how long it took, and the exact body we sent. Open a delivery to read the payload, and send it again once your endpoint is fixed.

A disabled endpoint will not accept a resend. Enable it first.