Webbu Docs

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:

  1. Receives webhooks on an HTTP endpoint: POST https://webbu.dev/api/v1/ingest/{projectId}/{bufferId}
  2. Groups them by a key taken from the JSON body or a request header (for example a customer ID)
  3. Batches each group until a flush condition is met: item count, total size, idle time or maximum wait
  4. 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.

Next steps

On this page