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 cause Contio to automatically disable webhook delivery for your app. Auto-disable happens when either of the following is true:
- 10 consecutive failed delivery attempts. Every failed HTTP attempt counts, including retries of the same event (a delivery that fails all 3 attempts contributes 3). A single successful delivery resets the count to zero.
- 72 hours without a successful delivery while your app has failures recorded. For an endpoint that has never delivered successfully, the 72 hours are measured from the first failure of the current streak.
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.removedpartner.idp.domain_verified,partner.idp.domain_verification_failed,partner.idp.domain_revoked
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 |
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.