How a delivery works
- Something emits an event (a record is created, a flow’s Send webhook block runs, you press Send test event).
- Pawabase finds every enabled endpoint whose events pattern matches the event name. A pattern can use
*as a wildcard:orders.*matchesorders.createdandorders.paid;*matches everything. - A delivery is created for each matching endpoint with status pending, and sent in the background. Your app is never slowed by a slow partner.
- Pawabase
POSTs a JSON body to the endpoint’s URL. - If the endpoint answers with a 2xx status, the delivery is delivered. Anything else (a 4xx or 5xx, a timeout, a connection error) is a failed attempt and is retried.
What the endpoint receives
Each attempt waits at most 15 seconds for an answer.
Retries
A failed attempt is retried on a growing schedule:
The waits vary slightly so that many failing deliveries don’t all retry at the same instant. How many attempts an endpoint gets is its Max attempts: from 1 to 10, 5 by default. An endpoint that is down for an afternoon still receives its events; with 10 attempts a delivery keeps trying for about two and a half days.
While waiting for the next attempt the delivery is retrying, with the time of the next attempt shown. After the last attempt it becomes failed.
An endpoint address that points at a private network or your own machines is refused as failed straight away, without retries, so a webhook can’t be used to reach internal services. Use a public address (or a tunnel while developing).
Read the deliveries
Open Activity → Webhooks (or the endpoint itself) to see deliveries, newest first.
Filter by endpoint, event, status or time. This is the first place to look when a partner says they received nothing.
Reading a failure
Redeliver
- One delivery: open it and choose Redeliver.
- Many, after an outage: filter to the failed deliveries (by endpoint, event, status, or since a number of minutes), choose Redeliver, and use Dry run first to see how many would be sent. Up to 500 are sent at once, and the filter can look back up to 90 days.
id as a duplicate.
Make your receiver safe to retry
Because the same event can arrive more than once (retries, redeliveries), receivers should be idempotent:- Verify the signature first.
- Look up
id. If you’ve already processed it, answer200and do nothing. - Otherwise record it and do the work.
- Answer with a 2xx quickly. Queue slow work.