Introduction
Webbu is a webhook buffering service that receives webhooks, buffers them by a grouping key, and delivers batched payloads to your HTTP endpoint.
What is Webbu?
Webbu is a webhook buffering service that sits between webhook senders (payment providers, e-commerce platforms, chat platforms, your own services) and your application. Instead of forwarding each webhook on its own, Webbu:
- Receives webhooks on an HTTP endpoint:
POST https://webbu.dev/api/v1/ingest/{projectId}/{bufferId} - Groups them by a key taken from the JSON body or a request header (for example a customer ID)
- Batches each group until a flush condition is met: item count, total size, idle time or maximum wait
- Delivers the batch to your destination URL in a single HTTP request, with retries and a dead letter queue
Why buffer webhooks?
- Fewer requests to your app: 50 events for the same customer arrive as one request instead of 50
- Lower automation costs: tools such as Zapier, Make or n8n bill per task, operation or execution
- Related events together: process all events for one customer or conversation at once
- Failure handling included: retries with exponential backoff, a dead letter queue and automatic pausing of failing buffers
Quick example
Send a webhook to Webbu:
curl -X POST https://webbu.dev/api/v1/ingest/p_shop/b_orders \
-H "Content-Type: application/json" \
-d '{"event": "order.created", "customerId": "cus_789", "amount": 99.99}'Webbu answers 202 Accepted right away. When the group for cus_789 is flushed, your destination receives one request with every buffered event:
{
"webbu": {
"customerId": "c_your_account",
"projectId": "p_shop",
"bufferId": "b_orders",
"groupKey": "cus_789",
"groupHash": "3f2a9c1d7e4b8a60",
"segment": 0
},
"window": {
"firstItemAt": 1767225600000,
"lastActivityAt": 1767225603000,
"itemsCount": 2
},
"items": [
{
"messageId": "5b0c6f0e-5f7e-4a51-9d0b-0d6c2a9f1e11",
"receivedAt": 1767225600000,
"payload": { "event": "order.created", "customerId": "cus_789", "amount": 99.99 }
},
{
"messageId": "a1f3d2c4-8e9b-4f6a-b7c5-2d1e0f9a8b7c",
"receivedAt": 1767225603000,
"payload": { "event": "order.paid", "customerId": "cus_789" }
}
]
}Timestamps are Unix epoch milliseconds. See Delivery & Retries for the full format.