Skip to content
Integrations

Webhooks

Subscribe to Sign-In events at Sign-In Context or Organization scope. Deliveries batch events for efficient throughput.

Sign In emits events every time a sign-in session changes state, a DHCP lease is granted or expires, or a configuration change is audited. Webhooks deliver those events to an HTTP endpoint you control — useful for CRM, marketing, SIEM, compliance, or operations dashboards.

A webhook subscription is attached to a scope. Sign-In events can be subscribed to at:

  • Sign-In Context — the most specific, and usually what you want. One subscription receives the full Sign-In event catalogue (session lifecycle, arena session, DHCP, and the Context-level configuration audit) for exactly this one Context.
  • Organization — receives only the Organization-level configuration-audit event (organization.configuration.audit), which records audited configuration changes made at the Organization level. It does not aggregate the session, arena, or DHCP events from the Organization’s Sign-In Contexts.

The two scopes do not share the same event catalogue: the session, arena, and DHCP lifecycle events are available only at the Sign-In Context scope. To capture Sign-In session activity for several Contexts, create one Sign-In Context-scoped subscription per Context. Pick the scope that matches the consuming system’s responsibility.

From the Sign-In Context admin, webhooks surface under the Context’s own Webhooks route. The admin UI lets you create subscriptions, see recent deliveries, inspect the details of a single delivery (the exact payload sent and the response received), and enable or disable a subscription without deleting it.

EventWhen it’s emitted
signin.session.createdA guest started a new sign-in on the Captive Portal.
signin.session.resumedA returning guest resumed a previous session on the same device.
signin.session.requestedThe sign-in requires approval (Meeting Host, device approval policy) and is waiting.
signin.session.approvedAn approval was granted (admin / Meeting Host / policy).
signin.session.verifiedThe guest completed their verification step (email link, SMS code).
signin.session.deniedThe sign-in was denied.
signin.session.revokedAn active session was revoked — admin action, device block, or policy change.

Arena sessions are the venue-bound access records used by the event-access and whitelisted-device flows — a device joins the network inside a venue’s space and the arena session tracks that visit.

EventWhen it’s emitted
signin.arenasession.loginA device joined the venue’s network and an arena session was created.
signin.arenasession.resumedA device with an active arena session re-associated (e.g. after a brief disconnect).
EventWhen it’s emitted
signin.dhcp.grantedA DHCP lease was granted to a device associated with a Sign In session.
signin.dhcp.expiredThe DHCP session ended — lease expired, device disconnected, or the system detected a missed expiry.
EventWhen it’s emitted
signin.configuration.auditA configuration change was made inside this Sign-In Context (any audited field on a Login Module, Access Policy, Site, Service Gateway, etc.). Useful for driving a compliance pipeline that mirrors the Change log.

A webhook subscription carries:

  • Name and description — admin labels for the list view.
  • Endpoint URL — where the HTTP POST is delivered.
  • Content type — the MIME type used in the POST body (typically application/json).
  • Custom HTTP headers — optional extra request headers, for authentication against your endpoint or for routing.
  • Enabled events — a subset of the catalogue above. Pick only the event types your consumer actually needs.
  • Batch settings — how many events to pack per delivery and how often to flush (see Batching below).
  • Enabled — on/off without deleting the subscription.

Each HTTP POST carries a batch of events — not a single event. The body is a JSON array, with one object per event inside. Each event object carries the fields specific to its type, along with common envelope fields (event type, scope, timestamps).

The delivery record shown in the admin UI displays the exact payload sent for recent deliveries — use that to confirm the concrete shape your consumer will see. Payloads are structured as open JSON objects so new fields can be added over time without breaking consumers; write your consumer to tolerate unknown fields.

Sign In batches events to avoid flooding consumers. The defaults:

  • Up to 20 000 events per delivery.
  • Flushed at most every 20 minutes.

If either threshold is reached first, the batch is sent. For low-volume Contexts this means near-real-time flushing on the 20-minute boundary; for high-volume Contexts it means many events per delivery.

Adjust batch settings per subscription — for low-latency consumers lower both numbers; for bulk analytics consumers raise them.

Past deliveries are kept for 3 days on the admin delivery-history view, then auto-expire. Long-term storage of event data is the consumer’s responsibility.

The delivery-history view shows every recent delivery, its HTTP status, and the payload sent. Use it to:

  • Confirm a new subscription is reaching your endpoint.
  • Debug failing deliveries — responses and error details are captured.
  • Audit what was delivered when.

Next