Where to look
Webhooks → row actions → Delivery log. Specialized delivery details stay here; high-level summaries also appear in Activity.
What each delivery records
| Name | Type | Description |
|---|---|---|
trigger / eventType | string | Subscribed trigger that fired. |
eventId | string | Logical event id (idempotency). |
attempt / maxAttempts | number | Attempt counter vs max (5). |
status | enum | pending, success, failed, or retrying states from the worker. |
requestHeaders | object | Headers Macro sent (signature redacted in some views). |
envelope / message | object | Parsed envelope and trigger message. |
sentBody | string | Exact body bytes after payload mode rendering. |
responseStatus / responseBody | mixed | Receiver HTTP status and truncated body. |
durationMs | number | Round-trip time for the attempt. |
nextRetryAt | ISO-8601 | When the next automatic retry is due. |
isTest | boolean | True for webhook.test deliveries. |
Success criteria
Macro treats HTTP 2xx as success. Non-2xx responses, network errors, and timeouts mark the attempt failed and schedule a retry when attempts remain.
Automatic retries
- Max attempts: 5 (including the first try)
- Backoff (seconds): 60 → 300 → 1800 → 7200 → 28800 (1m, 5m, 30m, 2h, 8h)
- A background tick (~60s) picks up due retries across the website database
Response body size
Macro stores up to 4096 characters of the receiver response body for debugging.
Manual resend & test
Send test event
From the webhook row, send
webhook.test. Useful after rotating a secret or changing payload mode — no real content change required.Resend a delivery
Open a failed (or any) delivery and resend. That creates a new attempt while preserving the original event id for correlation.
Management API
GET
/management/webhooks/:webhookId/deliveriesmt_List recent deliveries (limit ≤ 100). Requires settings.webhook:read.
POST
/management/webhooks/:webhookId/testmt_Enqueue a webhook.test delivery. Requires settings.webhook:write.
POST
/management/webhooks/:webhookId/deliveries/:deliveryId/resendmt_Retry a specific delivery. Requires settings.webhook:write.
Do
- Return 2xx quickly; do heavy work asynchronously after ack.
- Key idempotency on
X-Macro-Event-Id. - Watch the recent failure badge on the webhook list.
Don’t
- Don’t rely on delivery order across different triggers.
- Don’t block the request for long rebuilds — Macro will time out and retry.
- Don’t disable the endpoint to “fix” a bad payload — fix the receiver or template.