2xx response within the request timeout.
Request timeout
Each webhook request has a 10 second timeout. If your endpoint does not complete inside that window, the attempt is marked failed.Default retry schedule
The current default environment setting is:| Attempt | Timing |
|---|---|
| 1 | Immediate |
| 2 | 2 seconds later |
| 3 | 4 seconds later |
| 4 | 8 seconds later |
Environment-specific retry counts
If an environment defineswebhookRetries, total attempts become:
What counts as success?
Any2xx response:
200 OK201 Created202 Accepted204 No Content
What counts as failure?
Any of the following:- non-
2xxresponse - connection failure
- DNS failure
- TLS failure
- timeout after 10 seconds
Important behavior: all non-2xx responses retry
Current implementation retries every non-2xx response while attempts remain.
So the following all count as retryable failed attempts:
400401403404409422429500503
Delivery logs
Every attempt is stored in the delivery log with fields such as:eventIdeventTypeendpointIdendpointUrlattemptstatusstatusCodeerrorresponseBodydeliveredAt
Manual replay
Stored deliveries can be replayed manually.Replay endpoints
| Purpose | Method | Endpoint |
|---|---|---|
| Replay one stored delivery | POST | /webhooks/deliveries/:id/retry |
| Replay multiple stored deliveries by filter | POST | /webhooks/deliveries/retry |
- the log entry must exist
- the endpoint must still exist
- the endpoint must still be
active
- downstream receiver outages
- delayed ingestion on the tenant side
- partial data loss in the receiving system
- controlled replay of a known event window
Filtered manual replay
In addition to replaying one delivery at a time, Zquence supports filtered manual replay. Use this when you want to replay only a subset of webhook events instead of replaying every stored row. Example request:Supported filters
- tenant
- environment
- endpoint
- event type
- status
- date range
Tenant access behavior
- Tenant users can replay only their own tenant’s webhook deliveries.
- This makes the endpoint suitable for a self-service Resync webhooks action inside a tenant portal.
- Superadmin or internal tooling may replay on behalf of a tenant when broader operational support is required.
How it works
- Filters narrow the delivery-log set before replay.
- If you provide a status filter, only that delivery state is replayed.
- If you do not provide a status filter, any matching delivery state can be replayed.
- Zquence deduplicates by
endpointId + eventId, so repeated logged attempts for the same event are only queued once. - Deleted or disabled endpoints are skipped and reported in the response summary.
- Replayed events are signed again with the endpoint’s current signing secret.
What replay does and does not do
Replay does:- re-send the stored webhook event to the tenant’s configured endpoint
- preserve the existing event envelope and signing model
- allow targeted recovery for specific event types and time windows
- update historical records inside Zquence
- bypass endpoint status checks
- send to deleted or disabled endpoints
Response summary
Filtered replay returns a summary including:matchedqueuedskipped- per-item results for skipped deliveries such as
endpoint_not_foundorendpoint_disabled
Recommended receiver behavior
- Return
200after verification and queueing. - Do not do long-running work before responding.
- Deduplicate by
event.id. - Log failures on your side together with
event.idandX-Zquence-Webhook-Id.