Webhook Management¶
Manage webhook delivery status and filter events for your integration.
Related
For webhook event types and payload schemas, see Webhook Events.
Overview¶
Contio provides tools to control webhook delivery. You can enable or disable webhooks for your app, and you can filter which event types are delivered to your endpoint.
Webhook Status¶
How Auto-Disable Works¶
Repeated delivery failures can cause Contio to automatically disable webhook delivery for your app. In the current rollout, auto-disable can happen when either of the following is true:
- 50 webhook deliveries have been abandoned after exhausting retries
- More than 72 hours have passed since the last successful delivery and your app still has webhook failures recorded
When auto-disable happens:
- Contio sets
webhook_enabledtofalse - Contio attempts to notify the primary contact email for your app
- New events that still pass your filter are recorded with
pendingstatus instead of being delivered immediately
You can check the current status with GET /v1/partner/admin/app and inspect the webhook_enabled field.
Checking Webhook Status¶
Disabling Webhooks¶
Re-Enabling Webhooks¶
When re-enabling, you must tell Contio how to handle events that were queued while delivery was disabled:
abandon: discard all backlogged pending deliveries. Use this when your endpoint was down and you do not want older events.deliver: leave pending deliveries in the queue for automatic processing on the next cycle. Use this when your endpoint is fixed and you want to receive the backlog.
curl -X PUT \
-H "X-API-Key: $API_KEY" \
-H "X-Client-ID: $CLIENT_ID" \
-H "Content-Type: application/json" \
-d '{"enabled": true, "pending_disposition": "deliver"}' \
https://api.contio.ai/v1/partner/admin/webhook-status
curl -X PUT \
-H "X-API-Key: $API_KEY" \
-H "X-Client-ID: $CLIENT_ID" \
-H "Content-Type: application/json" \
-d '{"enabled": true, "pending_disposition": "abandon"}' \
https://api.contio.ai/v1/partner/admin/webhook-status
Pending Disposition Required
You must specify pending_disposition when re-enabling webhooks. This ensures you explicitly handle any queued events before delivery resumes.
Event Filtering¶
Overview¶
Event filtering lets you control which webhook event types are delivered to your endpoint. This is useful when your integration only needs a subset of Contio webhook events.
Filter Types¶
| Type | Behavior |
|---|---|
| No filter (default) | All supported events are delivered |
| Include | Only listed events are delivered |
| Exclude | All supported events except the listed ones are delivered |
Available Event Types¶
The following event types can be included or excluded. The AsyncAPI Webhook Events Reference is the canonical event catalog.
meeting.created,meeting.updated,meeting.completedaction_item.created,action_item.updated,action_item.completedautomation.assignment.createdcalendar_event.created,calendar_event.updated,calendar_event.deletedagenda_item.created,agenda_item.updated,agenda_item.deletedparticipant.added,participant.removed
Always Delivered
user.connection.revoked is always delivered regardless of filter settings. If you include it in a filter request, Contio ignores it and continues delivering it.
Setting a Filter¶
const includeFilter = await admin.setWebhookFilter({
type: 'include',
events: ['meeting.created', 'meeting.completed', 'action_item.created']
});
const excludeFilter = await admin.setWebhookFilter({
type: 'exclude',
events: ['calendar_event.created', 'calendar_event.updated', 'calendar_event.deleted']
});
Checking Current Filter¶
Removing a Filter¶
Interaction Between Status and Filtering¶
| Webhook Status | Filter | Behavior |
|---|---|---|
| Enabled | No filter | All supported events are delivered |
| Enabled | Include filter | Only matching events are delivered |
| Enabled | Exclude filter | All supported events except matching ones are delivered |
| Disabled | Any filter state | Matching events are recorded as pending; filtered events create no delivery record |
Rollout
Auto-disable is being rolled out progressively. Your app may not have this capability enabled yet. Contact support if you'd like early access.
Troubleshooting¶
Webhooks were auto-disabled¶
- Check that your webhook endpoint is reachable and returns 2xx responses quickly
- Review recent delivery failures in
GET /v1/partner/admin/webhook-deliveries - Fix the underlying issue in your endpoint or infrastructure
- Re-enable webhooks with the appropriate
pending_disposition(deliverto replay the backlog orabandonto discard it) - Confirm
webhook_enabledreturnstrueinGET /v1/partner/admin/app
Events are not being received¶
- Check whether webhooks are enabled in
GET /v1/partner/admin/app - Check whether a
webhook_filteris configured in the same response - Confirm the event type is included by your filter or not excluded by it
- Remember that
user.connection.revokedalways bypasses filters
Invalid event types in a filter request¶
If you specify an unsupported event type, the API returns 400 Bad Request and includes the list of valid values in the valid_event_types field.