Skip to main content
Webhook delivery is on the Phase 2 roadmap. The event shapes on this page are the current draft and may change before GA. Contact info@growyourbrand.io to join the Phase 2 beta.

Event catalog

Envelope

Every event uses the same envelope. data carries the event-specific payload.

Signature verification

Every request is signed with HMAC-SHA256 over the raw body plus a timestamp. The signature and timestamp ship in headers:
To verify:
  1. Compute expected = hex(HMAC_SHA256(secret, timestamp + "." + raw_body)).
  2. Constant-time compare expected against the value after v1=.
  3. Reject requests where abs(now - timestamp) > 300 seconds (five minutes) to block replay attacks.

Retry policy

  • The endpoint must return 2xx within 15 seconds.
  • Non-2xx or timeout triggers exponential backoff: 30 s, 2 min, 10 min, 1 h, 6 h, 24 h.
  • Delivery is retried for up to 72 hours, then the event is marked delivery_failed and surfaced in the dashboard.
  • The same event.id may be delivered more than once. Consumers must be idempotent on event.id.

Replay window

The 500 most recent events per endpoint are retained for 30 days. Replay any event from the dashboard or via POST /v1/webhooks/events/{event_id}/redeliver once the Phase 2 endpoint ships.

Rotating the secret

Endpoint signing secrets can be rotated from the dashboard. Rotation issues a second active secret; both verify for a 24-hour overlap window before the old one is retired. Verify against either secret during the window.