Event

trigger.webex_event
TriggerChat & messagingconnection requiredruns in-engine

Registers a Webex webhook per event in the tenant's Webex account on publish and starts one run per delivery, verified against X-Spark-Signature.

Start a run when Cisco Webex raises an event (message, membership, meeting).

Connection

Required
Yes — the node will not save without one
Auth type
Bearer token
Providers
Cisco Webex
Secret shape
the Webex access token (a bot token or an integration OAuth token)
Resolved by
config.connection_id, else node.connection_id
Note
The token needs the read scope for the resource being watched, and creates a webhook owned by whoever the token belongs to — a bot token only ever sees the spaces the bot is in. Publishing also needs MANTLE_APP_PUBLIC_BASE_URL set to a URL Webex can reach from the public internet.

Configuration

3 fields, none required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.

FieldTypeRequiredDefaultConstraintsExample
resource
The Webex noun to watch. One webhook is created per event on this resource; 'all' is Webex's firehose over memberships, messages and rooms and needs the read scope for all three.
stringNomessagesone of "all", "attachmentActions", "dataSources", "memberships", "messages", "rooms", "serviceApp", "telephony_calls", "telephony_conference", "telephony_mwi", "telephony_agent", "telephony_agentMonitoring", "telephony_queue", "telephony_queueMonitoring", "meetings", "recordings", "convergedRecordings", "meetingParticipants", "meetingTranscripts", "uc_counter", "adminBatchJobs"—
events
The verbs to watch on that resource — each one is a separate webhook at Webex. Not every verb applies to every resource: messages has no 'updated', meetings has 'started' and 'ended', meetingParticipants has 'joined' and 'left'.
arrayNo["created"]1–8 characters; array of string—
filter
Webex's own filter, to narrow what is delivered: name=value pairs joined with '&', e.g. roomId=Y2lzY29...&personEmail=ada@example.com. Without one the webhook fires for everything the token can see, and every delivery starts a run.
stringNo——roomId=Y2lzY29zcGFyazovL3VzL1JPT00v

Example configuration

Every value below is the contract’s own example or default — nothing invented.

{
  "events": [
    "created"
  ],
  "filter": "roomId=Y2lzY29zcGFyazovL3VzL1JPT00v",
  "resource": "messages"
}

Output

One shape.

webex event

The flattened Webex delivery. data's own keys vary by resource, so the shape is open below the declared fields.

Extra keys beyond the ones listed can appear.

FieldTypeExample
event_id
Mantle's idempotency key for this notification, built from Webex's own identity for it: resource, event, the resource id, and a digest of the resource body. Webex sends no delivery id of its own — the envelope's id is the webhook's — so a retry collapses onto the run it already started because it is byte-identical, not because Webex numbered it.
stringmessages:created:Y2lzY29zcGFyazovL3VzL01FU1NBR0Uv:9f2b0c1d4e5a6b7c8d9e0f1a2b3c4d5e
resource
The noun the event is about, e.g. messages, memberships, meetings.
stringmessages
event
The verb, e.g. created, deleted, started. Branch on this when the trigger watches more than one.
stringcreated
webhook_id
Id of the webhook that delivered this — the same on every delivery, so it identifies the subscription and never the event.
string—
webhook_name
The name this webhook was created with.
string—
actor_id
Person who caused the event: the author of a message, the person who removed a membership.
stringY2lzY29zcGFyazovL3VzL1BFT1BMRS9mNWIz
org_id
Organisation that owns the webhook.
string—
created_by
Person whose token created the webhook.
string—
owned_by
Whether the webhook is owned by its creator or the org.
string—
filter
The filter this webhook was registered with, if any.
string—
data_id
Id of the resource the event is about, lifted out of data so the next node need not dig — the message id, the meeting id, the membership id.
stringY2lzY29zcGFyazovL3VzL01FU1NBR0Uv
data
Webex's own representation of the resource. Its keys depend on resource, which is why this shape is open. Note that Webex omits encrypted content: a message arrives WITHOUT its text, and reading it means a webex.get_message call with the same connection.
object—
payload
The delivery envelope exactly as Webex sent it, for anything the fields above do not lift out.
object—
{
  "actor_id": "Y2lzY29zcGFyazovL3VzL1BFT1BMRS9mNWIz",
  "created_by": "Y2lzY29zcGFyazovL3VzL1BFT1BMRS9mNWIz",
  "data": {
    "created": "2026-05-30T12:00:00.000Z",
    "id": "Y2lzY29zcGFyazovL3VzL01FU1NBR0Uv",
    "personEmail": "ada@example.com",
    "personId": "Y2lzY29zcGFyazovL3VzL1BFT1BMRS9mNWIz",
    "roomId": "Y2lzY29zcGFyazovL3VzL1JPT00v",
    "roomType": "group"
  },
  "data_id": "Y2lzY29zcGFyazovL3VzL01FU1NBR0Uv",
  "event": "created",
  "event_id": "messages:created:Y2lzY29zcGFyazovL3VzL01FU1NBR0Uv:9f2b0c1d4e5a6b7c8d9e0f1a2b3c4d5e",
  "filter": "roomId=Y2lzY29zcGFyazovL3VzL1JPT00v",
  "org_id": "OTZhYmMyYWEtM2RjYy0xMWU1LWExNTI",
  "owned_by": "creator",
  "payload": {
    "id": "Y2lzY29zcGFyazovL3VzL1dFQkhPT0sv",
    "resource": "messages"
  },
  "resource": "messages",
  "webhook_id": "Y2lzY29zcGFyazovL3VzL1dFQkhPT0sv",
  "webhook_name": "Mantle workflow trigger (trigger.webex_event)"
}

Notes

  • Publishing creates the webhooks in Webex; unpublishing, disabling or archiving deletes them. A workflow that is off is off at Webex too.
  • Every delivery is verified against X-Spark-Signature, the HMAC-SHA1 of the raw body keyed on a secret minted at registration. A delivery that does not verify is refused before the body is parsed.
  • Webex strips encrypted content from a notification: a messages:created delivery carries the sender, room and timestamp but NOT the message text. Add a webex.get_message step on data_id to read it.
  • Webex disables a webhook that fails 100 deliveries inside five minutes, and disables any webhook whose creating user leaves the organisation. Neither is visible from here — publish again to re-create.
  • Webhooks are created creator-owned. Org-wide webhooks are limited to one per organisation, which is why this trigger never claims it.

See Event run in a workflow.

In a technical demo we add the Cisco Webex connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.