Event types now use the new resource names:
Payload structures also change to match the new API schemas and are documented in the API Reference.
This migration pattern allows you to test the new webhook format while keeping your existing integration working, with the ability to rollback at any point.
Create a new webhook endpoint either in the Extend dashboard or via the API (POST /webhook_endpoints + POST /webhook_subscriptions):
The query parameter lets your code distinguish between events from the old and new endpoints.
State after Step 1:
Update your webhook handler to acknowledge but ignore events from the new endpoint:
Then enable the new webhook endpoint (in the dashboard or via POST /webhook_endpoints/{id}).
State after Step 2:
This lets you verify:
Update your handler to process new events and reject old ones:
Return 400 for old events. This causes Extend to retry delivery. If you need to rollback, those events will be re-delivered when you revert your code.
State after Step 3:
Monitor your new webhook processing for:
If issues arise:
Once you’re confident in the new endpoint:
POST /webhook_endpoints/{id})State after Step 5:
The SDK includes utilities for verifying signatures and parsing events with type-safe payloads:
For large payloads (e.g., workflow runs with many documents), Extend delivers webhooks with a signed URL instead of the full payload. This keeps webhook delivery fast and reliable.
By default, verifyAndParse() throws an error if a signed URL payload is received. To handle these, opt-in with allowSignedUrl:
Signed URLs expire after 1 hour. Fetch the payload promptly.
Use the eventType field for type-safe payload access. See the Webhook Events reference for the complete catalog and payload schemas.
eventId to handle duplicate deliveriesIf you encounter any issues while migrating your webhook handlers, please contact our support team at support@extend.app.