# Webhooks (/docs/guides/developers/webhooks)



Webhooks push events from careCycle to your endpoints as they happen, at
**Settings > Developer > Webhooks** (developer settings permission required).

Creating an Endpoint [#creating-an-endpoint]

Add an endpoint with its HTTPS **Endpoint URL** and an optional description,
then choose which events it receives: the picker groups event types by
category and is searchable. Selecting nothing means the endpoint receives
**all** events, which is a sensible default while you are exploring.

<img alt="The New endpoint form, subscribed to customer.updated" src="https://ogcx5pq4kwqrdvky.public.blob.vercel-storage.com/docs/images/guides/webhook-new-endpoint.png" width="1316" height="902" />

For the event catalog and payload shapes, see the [webhook events
reference](/docs/api-reference/webhooks).

Send a Test Event [#send-a-test-event]

Open an endpoint and click **Testing**. Pick an event, look over its schema
and an example payload, and click **Send Example**. It sends fake data to
**every endpoint subscribed to that event**, not just this one, so make sure
your live integrations can safely receive a fake event before you send it.
Failed examples are retried automatically, the same as any other message.

<img alt="The Testing tab: pick an event, see its schema and example, and send it" src="https://ogcx5pq4kwqrdvky.public.blob.vercel-storage.com/docs/images/guides/webhook-testing-tab.png" width="1568" height="647" />

The Delivery Log [#the-delivery-log]

Every message to an endpoint is logged, and this is where webhook debugging
happens. Open a message to see:

* The **message content** (formatted or raw JSON, copyable).
* Every **delivery attempt**, filterable by All, Succeeded, Failed, or
  Canceled, each expanding to the HTTP response code, the response body your
  server returned, and the signed headers (`svix-id`, `svix-signature`,
  `svix-timestamp`) for verifying authenticity.
* A **resend** button (the circular arrow) on each message and attempt, to
  send it again after you have fixed your endpoint.

<img alt="An endpoint's message attempts, with a failed customer.updated and the resend button" src="https://ogcx5pq4kwqrdvky.public.blob.vercel-storage.com/docs/images/guides/webhook-message-attempts.png" width="1568" height="314" />

<img alt="An expanded failed attempt: HTTP response code 0, the connection error, and the svix headers" src="https://ogcx5pq4kwqrdvky.public.blob.vercel-storage.com/docs/images/guides/webhook-failed-attempt.png" width="1600" height="960" />

A response code of **0** means careCycle never reached your server at all
(the address didn't resolve, or the connection was refused). Any other code
is what your server answered.

Verify signatures on your side using the svix headers so you only trust
events careCycle actually sent.

<Cards>
  <Card title="Webhook Events Reference" href="/docs/api-reference/webhooks">
    Event types and payloads.
  </Card>

  <Card title="API Keys" href="/docs/guides/developers/api-keys">
    The other half of your integration credentials.
  </Card>
</Cards>
