Webhooks overview
How to wire your systems to Restora 360's event stream.
Subscribing to events
Open Settings → Integrations → Webhooks in the dashboard. Add an endpoint URL + the event types you want. The same set of events fires for every restaurant; filter on your side if you only care about some.
Event payload shape
Every event has the same envelope:
{
"id": "evt_2025_05_28_abc123",
"type": "order.status_changed",
"createdAt": "2026-05-28T14:32:11Z",
"tenantId": "luigi-pizza",
"data": { /* event-specific payload */ }
}id is stable per event — use it to dedupe replays.
Signature verification
Restora 360 signs every event with HMAC-SHA256 using your endpoint's signing secret (generated when you create the webhook). Verify before processing:
import crypto from 'crypto';
function verify(secret: string, payload: string, signature: string) {
const expected = crypto.createHmac('sha256', secret)
.update(payload).digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature, 'hex'),
Buffer.from(expected, 'hex'),
);
}The signature is sent as the X-Restora 360-Signature header.
Retries
If your endpoint returns anything outside 2xx, Restora 360 retries with exponential backoff:
- Attempt 2: +30 seconds
- Attempt 3: +5 minutes
- Attempt 4: +1 hour
- Attempts 5–10: +6 hours each
After 10 failed attempts the event is marked failed (visible in the webhooks dashboard) and stops retrying. Failed events can be manually re-sent from the dashboard.
Event types
Currently supported:
order.created— new order placedorder.status_changed— order moved between statesorder.canceled— customer or restaurant cancelledpayment.succeeded— Stripe confirmed paymentpayment.failed— payment attempt failedpayment.refunded— refund issuedescrow.released— payout scheduled after fulfillmentreservation.created— new bookingreservation.confirmed— restaurant confirmedgift_card.redeemed— gift card applied to an ordercommission.recorded— partner commission accrued
Frequently asked
- Typically under 500ms after the underlying event. Bursts (e.g. 100 orders in a minute) may delay slightly while Restora 360 batches the queue.
- 10 seconds. If your endpoint hasn't responded in 10s, Restora 360 marks the attempt failed and retries.
Related articles
API Documentation
Orders API
The endpoints you call to drive a customer order through the kitchen.
API Documentation
Idempotency
You can safely retry network failures without double-charging customers or double-creating orders.
API Documentation
Authentication
Four cookie types, per-route role enforcement, and how to make authenticated calls.