Skip to main content
Wire an HTTPS receiver for inbound deliveries from CurbWaste. Delivery auth is HMAC (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:
  1. Create an endpoint with your HTTPS URL
  2. Select the events to receive (for example customer.created, customer.updated, location.created, location.updated)
  3. Copy signingSecret (whsec_…) immediately — it is only shown once

Step 2 — Handle and verify deliveries

Expose an HTTPS route that accepts POST 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 with customers:write. Location writes emit location.* the same way — see the events table.
Your receiver should log customer.created with headers X-CurbWaste-Event-Id / X-CurbWaste-Event-Type.

Checklist

  1. Endpoint registered in the Developer Platform; secret saved
  2. Signature verifies with t. + raw body
  3. Handler branches on event.type (not event.event)
  4. Respond 2xx quickly; idempotent on envelope id
Delivery is queued with automatic retries (up to 8 attempts, exponential backoff from 60 seconds).

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.