Webhooks
Warpweb sends two kinds of outbound webhooks:
- Form Submissions — fired when someone fills out a form on a deployed site. The thing you almost certainly want.
- Revision Status — fired when an async build or revision completes or fails. Optional but recommended over polling.
All webhooks are signed with HMAC-SHA256 using a per-resource secret. Always verify signatures — see Verifying Signatures for copy-paste snippets in multiple languages.
Common conventions
- All deliveries are
POSTwithContent-Type: application/json. - All payloads include an
event_id(UUID). Use it as your idempotency key — duplicates can happen. - Signature lives in the
X-Warpweb-Signatureheader. - User-Agent is
Warpweb-Webhook/1.0. - Connection timeout: 10 seconds. Return a 2xx response within that window.
- Retry schedule on 5xx / network errors: immediate, +30s, +5min. After that, dead-letter.
- 4xx responses are not retried — they’re treated as permanent rejections.
Endpoint requirements
Your webhook receiver should:
- Verify
X-Warpweb-Signatureagainst the raw request body using your stored secret. - Parse JSON and inspect
event_type. - Dedupe on
event_idif you’ve seen it before — return 200 immediately for duplicates. - Process the event, or enqueue it for async processing.
- Return 2xx within 10 seconds.
If your processing is slow, enqueue and return 200 immediately. Don’t make Warpweb wait — it’s better to acknowledge fast and retry on your own queue than to time out and trigger our retry loop.