Skip to main content
A webhook subscription tells Exo where to send notifications and which events to listen for. Each subscription targets one resource and one or more trigger events.

Creating a subscription via the API

Send a POST request to the webhooks endpoint:
The response includes the subscription details and the webhook secret:
The secret is only returned in full when you first create the subscription. Store it securely — you’ll need it to verify webhook signatures. After creation, only a masked version is shown.

Subscription fields

The events array must only contain triggers that the resource supports. For example, if a resource only defines ['on_create'] in its triggers() method, you cannot subscribe to on_update. Exo’s built-in model observer emits on_create, on_update, and on_delete.

Listing subscriptions

List all your webhook subscriptions:

Updating a subscription

Update the URL or events of an existing subscription:
You cannot change the resource of an existing subscription. Delete it and create a new one instead.

Deleting a subscription

Activating and deactivating

Subscriptions have an is_active flag. When deactivated, Exo skips the subscription during webhook delivery without deleting it. You can toggle this through the Exo dashboard.

Using the dashboard

Exo includes a web dashboard where you can manage subscriptions without writing API calls. Access it at /exo/dashboard (or whatever prefix you’ve configured). From the dashboard you can:
  • View all your webhook subscriptions
  • Toggle subscriptions on and off
  • Update webhook URLs and events
  • Delete subscriptions
  • See your API tokens
  • Browse available resources and their triggers
The dashboard requires a separate login at /exo/login. This is independent from your main application login.