AsyncAPI description of Crisp's two realtime delivery surfaces: * **Web Hooks (v1)** — HTTP POST callbacks delivered to a subscriber URL registered on a Crisp website or Crisp plugin. Payload envelope: `{ website_id, event, data, timestamp }`. Plugin Hooks are signed with HMAC-SHA256 via the `X-Crisp-Signature` header. Website Hooks are not signed; URL-parameter secrets are used instead. Both share the same event taxonomy. * **RTM API (v1)** — Socket.IO (websocket transport only, WSS) stream of the same conversational events plus several RTM-only events (spam, people-import progress, widget action, media animation listing). The endpoint URL is dynamic and must be acquired through the REST API "Get Connect Endpoints" call before each connection. Event names are quoted verbatim from https://docs.crisp.chat/references/rtm-api/v1/ and https://docs.crisp.chat/references/web-hooks/v1/.
View SpecView on GitHubCustomer ServiceLive ChatHelpdeskMessagingChatbotsAsyncAPIWebhooksEvents
Channels
/webhook
subscribereceiveCrispWebhook
Receive a Crisp Web Hook callback
Single inbound HTTP channel that fans out all webhook events. The specific event is carried inside the JSON envelope's `event` field — there is no per-event path.
rtm/authentication
publishsendAuthentication
Socket.IO event the client emits within ~10s of connecting to authenticate. Server replies with `authenticated` on success or `unauthorized` on failure.
rtm/session:update_availability
subscribe
rtm/session:update_verify
subscribe
rtm/session:request:initiated
subscribe
rtm/session:set_email
subscribe
rtm/session:set_phone
subscribe
rtm/session:set_address
subscribe
rtm/session:set_subject
subscribe
rtm/session:set_avatar
subscribe
rtm/session:set_nickname
subscribe
rtm/session:set_origin
subscribe
rtm/session:set_data
subscribe
rtm/session:set_segments
subscribe
rtm/session:set_block
subscribe
rtm/session:set_opened
subscribe
rtm/session:set_closed
subscribe
rtm/session:set_participants
subscribe
rtm/session:set_mentions
subscribe
rtm/session:set_routing
subscribe
rtm/session:set_inbox
subscribe
rtm/session:set_state
subscribe
rtm/session:sync:capabilities
subscribe
rtm/session:sync:geolocation
subscribe
rtm/session:sync:system
subscribe
rtm/session:sync:network
subscribe
rtm/session:sync:timezone
subscribe
rtm/session:sync:locales
subscribe
rtm/session:sync:pages
subscribe
rtm/session:sync:events
subscribe
rtm/session:sync:rating
subscribe
rtm/session:sync:topic
subscribe
rtm/session:removed
subscribe
rtm/session:error
subscribe
rtm/message:updated
subscribe
rtm/message:send
subscribe
rtm/message:received
subscribe
rtm/message:removed
subscribe
rtm/message:compose:send
subscribe
rtm/message:compose:receive
subscribe
rtm/message:acknowledge:read:send
subscribe
rtm/message:acknowledge:read:received
subscribe
rtm/message:acknowledge:unread:send
subscribe
rtm/message:acknowledge:delivered
subscribe
rtm/message:acknowledge:ignored
subscribe
rtm/message:notify:unread:send
subscribe
rtm/message:notify:unread:received
subscribe
rtm/spam:message
subscribe
RTM-only. Not delivered via Web Hooks.
rtm/spam:decision
subscribe
RTM-only. Not delivered via Web Hooks.
rtm/people:profile:created
subscribe
rtm/people:profile:updated
subscribe
rtm/people:profile:removed
subscribe
rtm/people:bind:session
subscribe
rtm/people:sync:profile
subscribe
rtm/people:import:progress
subscribe
RTM-only. Not delivered via Web Hooks.
rtm/people:import:done
subscribe
RTM-only. Not delivered via Web Hooks.
rtm/campaign:progress
subscribe
rtm/campaign:dispatched
subscribe
rtm/campaign:running
subscribe
rtm/browsing:request:initiated
subscribe
rtm/browsing:request:rejected
subscribe
rtm/call:request:initiated
subscribe
rtm/call:request:rejected
subscribe
rtm/identity:verify:request
subscribe
rtm/widget:action:processed
subscribe
RTM-only. Not delivered via Web Hooks.
rtm/status:health:changed
subscribe
rtm/website:update_visitors_count
subscribe
rtm/website:update_operators_availability
subscribe
rtm/website:users:available
subscribe
rtm/bucket:url:upload:generated
subscribe
rtm/bucket:url:avatar:generated
subscribe
rtm/bucket:url:website:generated
subscribe
rtm/bucket:url:campaign:generated
subscribe
rtm/bucket:url:helpdesk:generated
subscribe
rtm/bucket:url:status:generated
subscribe
rtm/bucket:url:processing:generated
subscribe
rtm/media:animation:listed
subscribe
RTM-only. Not delivered via Web Hooks.
rtm/email:subscribe
subscribe
rtm/email:track:view
subscribe
rtm/plugin:channel
subscribe
rtm/plugin:event
subscribe
rtm/plugin:subscription:updated
subscribe
rtm/plugin:settings:saved
subscribe
rtm/plan:subscription:updated
subscribe
Messages
✉
WebhookEnvelope
Crisp Web Hook delivery envelope
HTTP POST body sent to the subscriber's URL.
✉
AuthenticationRequest
Socket.IO `authentication` event
✉
Authenticated
Socket.IO `authenticated` ack
✉
Unauthorized
Socket.IO `unauthorized` ack
✉
SessionEvent
Session namespace event
✉
MessageEvent
Message namespace event
✉
SpamEvent
Spam namespace event (RTM-only)
✉
PeopleEvent
People namespace event
✉
CampaignEvent
Campaign namespace event
✉
BrowsingEvent
Browsing / MagicBrowse namespace event
✉
CallEvent
Call request namespace event
✉
IdentityEvent
Identity verification namespace event
✉
WidgetEvent
Widget namespace event (RTM-only)
✉
StatusEvent
Status-page namespace event
✉
WebsiteEvent
Website-level namespace event
✉
BucketEvent
Bucket signed-URL namespace event
✉
MediaEvent
Media library namespace event (RTM-only)
✉
EmailEvent
Email namespace event
✉
PluginEvent
Plugin namespace event
✉
PlanEvent
Plan namespace event
Servers
wss
rtmrtm.crisp.chat
Socket.IO RTM endpoint. The real host/path is dynamic and MUST be fetched per-connection from the REST API: `GET https://api.crisp.chat/v1/plugin/connect/endpoints`. The Socket.IO client should be created with `transports: ["websocket"]` (no HTTP long-polling, no insecure WS).
https
webhook{subscriberHost}
The subscriber's own HTTPS endpoint (configured per website or per plugin). Crisp performs `HTTP POST` with a JSON body. Successful delivery requires a 2xx response.