Skip to main content
Polling GET /v1/messages on a timer wastes quota and adds latency to every reply. Webhooks invert the flow: Gork POSTs a signed JSON event to your HTTPS endpoint the moment something happens — a new inbound email, a confirmed send, a bounce, a complaint, or an unsubscribe.

How it works

1

Register an endpoint

Subscribe a URL to the events you care about, via the console (Settings → Webhooks) or POST /v1/webhooks.
2

Verify the signature

Every delivery carries an X-Gork-Signature HMAC-SHA256 header. Reject anything that fails verification — see Verify Requests.
3

Return 2xx fast

Acknowledge receipt with any 200–299 status, then do the slow work (LLM inference, DB writes) asynchronously. Deliveries time out after 10 seconds; anything else is retried — see Retries.

Setup

Omit subscribedEvents to subscribe to the defaults — ["email.received", "email.sent", "email.bounced"] — or pass an explicit list. Endpoints must be HTTPS URLs. The creation response returns the signing secret exactly once; it is never included in GET /v1/webhooks listings.
Save the webhook secret immediately. Without it you cannot verify X-Gork-Signature headers. If it is lost, generate a new one with POST /v1/webhooks/{id}/rotate-secret and update your verifier at the same time.

Next steps

Event Types

The five live events and their payload schemas.

Retries

5 attempts, backoff schedule, and the deliveries log.

Verify Requests

HMAC verification in Node.js and Python.