Introduction to Webhooks (v2)
Webhooks push events from Cirrus Insight to an HTTPS endpoint you control. When something happens in the platform — a meeting is booked, rescheduled, canceled — Cirrus sends a signed HTTP POST to your endpoint with a JSON payload describing the change. You don't poll for data; you receive it as it happens.
The webhooks documented under v1alpha1 deliver the v2 payload version — a canonical Eventmodel envelope wrapping the Platform API's Meetingmodel shape. Partners integrating against both the Platform API and webhooks use one Meeting mapper across both surfaces.
Two payload versions coexist
- v2 (this documentation) — new canonical shape. Delivered on subscriptions created via
POST /api/v1alpha1/webhook-subscriptions, and on subscriptions that explicitly opt into v2. Recommended for new integrations. - v1 (v0.1 documentation) — legacy shape with nested
meetingInfo. Delivered on subscriptions created via the pre-v1alpha1 developer dashboard. Continues to work indefinitely; no forced migration.
Your subscription's payloadVersion is set once at creation and is immutable. To move an existing integration to v2, create a new subscription — the old one keeps working.
Concepts
- Subscription. A durable configuration in Cirrus Insight that says "when event X happens in my org, POST it to URL Y." Managed via the Platform API's
/api/v1alpha1/webhook-subscriptionsendpoints. - Delivery. A single HTTP POST to your endpoint. One event may produce multiple deliveries if the first attempts fail — retried automatically with exponential backoff.
- Signing secret. A 32+ char shared secret (
whsec_...prefix), revealed once at subscription creation. Your endpoint uses it to verify that each delivery genuinely came from Cirrus Insight and wasn't tampered with in transit. See Security. - Event catalog. The set of
eventTypestrings a subscription can subscribe to. See Event Types.
End-to-end flow
- Create a subscription —
POST /api/v1alpha1/webhook-subscriptionswith your endpoint URL and the event types you care about. The response returns thesigningSecretexactly once. Store it in your secrets manager immediately. - Endpoint enters
validatingstate — Cirrus sends a test delivery. Your endpoint responds2xx; subscription moves toactive. - Cirrus emits an event — say, a meeting is booked. Cirrus builds an
Eventmodel envelope with the canonicalMeetingmodel shape indata. - Cirrus POSTs to your endpoint — with
Content-Type: application/json, a signed body, and identifying headers (see Security and Lifecycle). - Your endpoint responds
2xx— usually within a few seconds. Cirrus considers the delivery successful. - Any non-2xx response or timeout triggers retries — up to 3 times with exponential backoff over a 24-hour window.
Benefits
- Real-time. No polling; events fire when they happen.
- Reliable. Retries with exponential backoff; failed deliveries are queryable via the delivery-log endpoint.
- Idempotent. Every delivery carries a stable
eventId; retries share the same id. Deduplicate on your side to survive network hiccups without processing the same event twice. - Signed. HMAC-SHA256 on the raw body ensures the payload is authentic and unmodified.
- Canonical shape. The same
Meetingobject you get from the Platform API is the one delivered inevent.data. One mapper, two surfaces.