whsec_…), not your cw_live_… API key. Event catalog and trust model: Webhooks.
Prerequisites
- Access to the Developer Platform
- A publicly reachable HTTPS receiver URL
- An API key with write scope if you will trigger a test event (e.g.
customers:write) — see Authentication
Step 1 — Register your endpoint
In the Developer Platform Webhooks page:- Create an endpoint with your HTTPS URL
- Select the events to receive (for example
customer.created,customer.updated,location.created,location.updated) - Copy
signingSecret(whsec_…) immediately — it is only shown once
Step 2 — Handle and verify deliveries
Expose an HTTPS route that acceptsPOST with a raw JSON body. Verify X-CurbWaste-Signature: t=<unix>,s=<hex> against {t}.{rawBody} with HMAC-SHA256. Reject stale timestamps if you enforce skew (see Webhooks trust model).
The samples below show verification shape only — register a public HTTPS URL in the Developer Platform, not a loopback address.
Step 3 — Trigger an event
Easiest path: create a customer withcustomers:write. Location writes emit location.* the same way — see the events table.
customer.created with headers X-CurbWaste-Event-Id / X-CurbWaste-Event-Type.
Checklist
- Endpoint registered in the Developer Platform; secret saved
- Signature verifies with
t.+ raw body - Handler branches on
event.type(notevent.event) - Respond
2xxquickly; idempotent on envelopeid
Delivery is queued with automatic retries (up to 8 attempts, exponential backoff from 60 seconds).
Related
Webhooks
Events, envelope, HMAC trust model, and retries.
Webhook payloads
OpenAPI schemas for each outbound event.
Sync customers
Outbound push using the UUID join key; pair with webhooks for inbound.