Request headers
The headers every delivery to your app carries, and the ones a destination cannot set.
Headers we add
Every attempt carries these headers, as well as the sender’s own and the destination’s authentication.
| Header | Holds |
|---|---|
webhook-id | The event’s ID. The same on every attempt, and when a delivery is sent again |
webhook-timestamp | When this attempt was sent, in seconds since 1 January 1970 |
webhook-signature | v1, and the signature, in base64. See Verify deliveries to your app |
X-Hooks-Delivery-Id | The delivery’s ID. A delivery sent again has a new one |
X-Hooks-Attempt | The attempt number, from 1 |
Use webhook-id to recognise an event you have already handled. See At least once.
The sender’s headers
The headers the webhook was received with are sent on, including the sender’s own signature headers, so your app can still check them. These are left out, because they only mean something on the way:
Host,Content-Length,Transfer-Encoding,Connection,Keep-Alive,Upgrade,TE,Trailer, andExpectUser-Agent,Accept-Encoding,Forwarded, and headers starting withX-Forwarded-- Proxy headers, such as
Proxy-Authorization - Any
webhook-id,webhook-timestamp,webhook-signature, orX-Hooks-header the sender set
A destination’s authentication replaces a sender’s header of the same name, such as Authorization.
Headers a destination cannot set
A destination’s header authentication cannot use a header we set ourselves:
Host,Content-Type,Content-Length,Transfer-Encoding,Connection, andUser-Agentwebhook-id,webhook-timestamp, andwebhook-signature- Any header starting with
X-Hooks-
Last updated