> ## Documentation Index
> Fetch the complete documentation index at: https://docs.etho.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks

> Send selected CRM, form, and booking updates to your own endpoint

Open **Settings > Integrations > CRM > Webhooks > Manage webhooks**. Owner or Admin access is required.

These webhooks send updates out of Olympus. They are separate from incoming automation triggers or a provider's own webhooks.

## Add an endpoint

1. Select **Add endpoint**. A workspace can have up to 10 endpoints.
2. Enter **Name** and **Endpoint URL**. Use public HTTPS on port 443, with no embedded credentials or URL fragment.
3. Select at least one **Events** checkbox.
4. Optionally filter Forms, Calendars, Excluded calendars, and Pipelines. Empty inclusion filters allow all matching events; excluded calendars take precedence.
5. Add **Custom headers** if your receiver requires them. You can supply up to 12; sensitive values are stored encrypted.
6. Choose whether to include contact and opportunity custom fields, or form and booking answers. Both options are off by default. **Exclude updates from provider** can prevent sending an integration's own changes back to it.
7. Select **Save endpoint**. Copy the signing secret from **Save your signing secret**, configure your receiver, then select **Done**. The secret is shown once.

An existing endpoint URL cannot be edited. Create a new endpoint to change the destination.

## Available events

| Group | Events |
| - | - |
| Forms | Form submitted; Submission updated |
| Bookings | Booking created; Booking updated; Booking rescheduled; Booking cancelled; Booking status changed |
| Contacts | Contact created; Contact updated |
| Opportunities | Opportunity created; Opportunity updated; Opportunity stage changed |
| Qualification | Lead qualified; Lead disqualified |

## Test and inspect delivery

Use **Send test**, then **Delivery history**. Tests are queued; select **Refresh** after dispatch. Expand a delivery to see its payload and attempts. **Retry delivery** requeues an eligible delivery.

The active scheduler checks about once a minute. Temporary failures can retry for up to 72 hours. Delivery history is retained for 30 days.

## Pause, rotate, or remove

The **Status** switch pauses or resumes the endpoint. **More actions** includes **Rotate secret** and **Remove endpoint**.

After rotating, update your receiver immediately. Future deliveries and retries use the new secret. Removing an endpoint stops new deliveries; requests already in flight can finish, and retained history remains available.

## Receiver requirements

Olympus sends JSON by POST. Verify the signature over the raw request body using the saved signing secret before processing it. Headers include `webhook-id`, `webhook-timestamp`, and `webhook-signature`. Use `webhook-id` to avoid processing a retry twice, and acknowledge promptly.

The receiver must accept direct public HTTPS delivery; redirects are not followed. Temporary network errors, HTTP 408, 429, and server errors can retry. Other unsuccessful client-error responses do not automatically retry.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.