Browse documentation

Webhooks

Webhook setup

Every developer project can register HTTPS endpoints and subscribe each endpoint to one or more event types. When Carebit records a subscribed event, the dispatcher POSTs a signed JSON payload to the endpoint.

1. Create an endpoint

Open Settings > Developer platform > Projects > (your project) > Webhook endpoints, click Add endpoint, and paste the HTTPS URL that will receive deliveries.

2. Copy the signing secret

The dashboard shows the endpoint's signing secret once when the endpoint is created. Store it as a secret in your deployment. Signing secrets use the carebit_whsec_live_... prefix.

If you lose the secret, rotate it from the dashboard. Carebit signs every request with the current secret AND the previous secret for 24 hours after a rotation so a receiver that has both configured can validate either signature.

3. Subscribe to events

Pick the event types the endpoint should receive. See Webhook events for the complete list of event types and payload schemas. Webhook subscriptions are independent from API scopes: selecting an event type authorizes that endpoint to receive the payload. API credentials are still governed by project scopes.

4. Delivery envelope

Every request is POST application/json:

{
  "id": "evt_00000000-0000-4000-8000-000000000012",
  "object": "event",
  "api_version": "v1",
  "created_at": "2026-08-17T10:00:00Z",
  "livemode": true,
  "source": "dashboard",
  "developer_platform_project_id": null,
  "type": "booking.confirmed",
  "data": {
    "object": {
      "id": "00000000-0000-4000-8000-000000000001",
      "object": "booking",
      "...": "..."
    }
  }
}

5. Request headers

Header Purpose
Content-Type Always application/json.
User-Agent Always Carebit-Webhooks/1.0.
Carebit-Delivery-Id Unique id for this delivery. Stable across every retry of the delivery.
Carebit-Event-Id The event id (matches id in the JSON body). Use this for dedupe.
Carebit-Event-Type The event type, for example booking.confirmed.
Carebit-Endpoint-Id The id of the endpoint the request was routed to.
Carebit-Signature Signed timestamp and HMAC digests. See Webhook signatures.

Carebit does not publish stable egress IPs for the dispatcher. Use the signature as the security boundary.

6. Verify and respond

Verify the signature before you trust the body. See Webhook signatures for reference implementations in Node.js, Python, Ruby, and PHP. Return 2XX within 20 seconds. Move slow work off the request thread.

Prefer plain text? Append ?format=md or send Accept: text/markdown to receive this page as raw Markdown.