Step 4: Verify Delivery
Confirm that your batched webhooks reached your destination.
When a flush condition is met (with the defaults: 5 seconds without new items, 15 seconds after the first item, or 50 items), Webbu sends the group to your destination URL.
Expected delivery
Your endpoint receives one POST (or PUT, if configured) with Content-Type: application/json and a body like:
{
"webbu": {
"customerId": "c_your_account",
"projectId": "p_shop",
"bufferId": "b_orders",
"groupKey": "cus_001",
"groupHash": "9a1c0b7e3d5f2a48",
"segment": 0
},
"window": {
"firstItemAt": 1767225600000,
"lastActivityAt": 1767225604000,
"itemsCount": 3
},
"items": [
{ "messageId": "5b0c6f0e-…", "receivedAt": 1767225600000, "payload": { "event": "order.created", "customerId": "cus_001", "orderId": "ord_100", "amount": 49.99 } },
{ "messageId": "c2d8e1a0-…", "receivedAt": 1767225602000, "payload": { "event": "order.paid", "customerId": "cus_001", "orderId": "ord_100" } },
{ "messageId": "7f4b9e22-…", "receivedAt": 1767225604000, "payload": { "event": "order.shipped", "customerId": "cus_001", "trackingId": "TRK123" } }
]
}Items are in the order they were received. The request also carries an idempotency header (x-idempotency-key: grp:<groupId>:v<n> by default). Respond with any 2xx status within 10 seconds to acknowledge the batch.
Check analytics
curl -H "X-API-Key: $WEBBU_API_KEY" \
https://webbu.dev/api/v1/analytics/summary{
"today": {
"ingestCount": 3,
"deliveryCount": 1,
"deliverySuccess": 1,
"deliveryFail": 0,
"dlqCount": 0,
"avgBatchSize": 3,
"compressionRatio": 3
},
"trend": { "ingestDelta": 0, "deliveryDelta": 0, "successRateDelta": 0 },
"counts": { "projects": 1, "buffers": 1 }
}- Open Dashboard for today's requests, deliveries, success rate and compression ratio
- Open Analytics and filter by project or buffer for trends over 7 or 30 days
Check the dead letter queue
If delivery keeps failing, the batch is recorded in the dead letter queue:
curl -H "X-API-Key: $WEBBU_API_KEY" \
"https://webbu.dev/api/v1/dlq?bufferId=b_orders"An empty array ([]) means nothing has failed.
Open DLQ in the sidebar to see failed batches with the reason and last error.
What just happened?
You sent three webhooks to the ingest endpoint and each was answered with 202.
Webbu read $.customerId from each body. All three had cus_001, so they went into the same group.
After 5 seconds without new items (batch.idleTimeoutMs), the group was flushed.
Webbu sent one request to delivery.url with all three items.
Your endpoint answered 2xx, so the items were removed from the buffer and the delivery was counted as a success.
If your endpoint had failed, Webbu would have retried with exponential backoff (3 attempts in total by default) and then moved the batch to the DLQ. See Delivery & Retries.