Near Real-Time
Get notified instantly when products or orders change — no need to continuously poll the API.
This page covers Bamboo's Svix-based webhook system for event-driven delivery and signature verification. If you need to configure the Notification URL callback endpoint, see the Notification API reference.
Receive near real-time notifications whenever there are updates to your catalog or orders. Eliminate the need to continuously poll the API to track changes in product status, stock, pricing, or order completions.
Get notified instantly when products or orders change — no need to continuously poll the API.
Every request is signed via Svix. Verify signatures with your Webhook Secret before processing.
Bamboo automatically retries failed deliveries. Your endpoint only needs to return HTTP 2xx.
Subscribe only to the events you need — product updates, order completions, or both.
Set up your webhook endpoint in the Bamboo Client Portal in five steps.
In the Bamboo Client Portal, go to Sidebar → Webhooks.
Click "Subscribe to Bamboo Webhooks" to activate webhooks for your account. Done once per account.
Click "+ Add Endpoint", enter your HTTPS URL, and select the event types you want to receive.
Copy or download the generated Webhook Secret immediately — it is shown only once and cannot be retrieved later.
Send a test message from Webhooks → Test Messages to verify delivery, then configure stock notification settings.
After adding an endpoint, Bamboo generates a Webhook Secret. This secret is used to verify that incoming requests genuinely originated from Bamboo.
The secret cannot be retrieved after the dialog is closed. Copy or download it before clicking Done. If you lose it, go to Webhooks → Endpoints → Rotate Secret. The old secret remains valid for 24 hours so you can migrate without downtime.
Select one or both event types when configuring an endpoint.
productupdated.v1Product changesTriggered when product details such as pricing, face values, availability, or stock are modified. Payload includes both the old and new state of each changed product.
{
"products": [
{
"id": 114111,
"oldState": {
"name": "iTunes USA eGift voucher",
"status": "Available",
"minFaceValue": 50,
"maxFaceValue": 100,
"quantity": 10,
"price": { "min": 50, "max": 100, "currencyCode": "USD" },
"modifiedDate": "2022-08-22T09:06:29.6783345"
},
"newState": {
"name": "iTunes USA eGift voucher",
"status": "Available",
"minFaceValue": 100,
"maxFaceValue": 100,
"quantity": null,
"price": { "min": 100, "max": 100, "currencyCode": "USD" },
"modifiedDate": "2022-08-22T09:06:29.6783345"
}
}
],
"timestamp": "2026-04-01T05:17:53.6491931Z"
}ordercompleted.v1Order fulfilledTriggered when an order reaches a final completed state. Use this to trigger downstream fulfillment, reconciliation, or customer notification workflows.
{
"orderId": 100123,
"status": "succeeded",
"totalCards": 5,
"createdOn": "2026-04-01T08:00:00+00:00",
"completedOn": "2026-04-01T08:05:00+00:00",
"requestId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}Bamboo uses Svix for webhook delivery. Every request includes three headers that you must validate using your Webhook Secret.
svix-idsvix-timestampsvix-signatureimport { Webhook } from "svix";
const webhook = new Webhook("YOUR_WEBHOOK_SECRET");
export default async function handler(req, res) {
const payload = JSON.stringify(req.body);
try {
const evt = webhook.verify(payload, {
"svix-id": req.headers["svix-id"],
"svix-timestamp": req.headers["svix-timestamp"],
"svix-signature": req.headers["svix-signature"],
});
// Process evt here...
res.status(200).send("OK");
} catch (err) {
res.status(400).send("Invalid signature");
}
}Control how frequently stock-related webhook events are sent. Go to Webhooks → Settings → Edit to configure.
The minimum time (in minutes) between consecutive stock quantity notifications. Set to 0 to receive updates immediately.
When available stock falls below this item count, a webhook is sent immediately regardless of the notification interval.
If your endpoint returns a non-2xx status, Bamboo automatically retries delivery. Price, status, name, and face value changes are always sent immediately regardless of interval settings.
Start with Troubleshooting or explore the API notification endpoint.