Send to rooms
Deliver plain text or Markdown notifications to a room or an existing message thread.
Send direct messages
Link a subscriber through OAuth or identify the recipient by Webex person ID or email.
Prerequisites
- A Webex developer account.
- Permission to create a Webex integration.
- A Novu environment and secret key.
- A Webex room ID for room notifications, or a Webex person ID or email for direct notifications.
Configure a Webex integration
Webex integrations use OAuth 2.0 to act on behalf of an authorized Webex user. The user who authorizes the connection must be able to access the rooms and people you want to target.Create the integration in Webex
Open My Webex Apps
Sign in to the Webex for Developers portal and open My Webex Apps.
Enter the application details
Add a user-facing name, icon, and description. Webex displays this information on the authorization screen.
Add the Novu redirect URI
Register the callback URI for the region where your Novu environment is hosted.

Select OAuth scopes
Select the following scopes:
spark:messages_writespark:rooms_readspark:people_readspark:memberships_read
spark:kms to registered integrations. Novu includes it when generating the authorization URL because Webex requires it for encrypted message content.
| Scope | How Novu uses it |
|---|---|
spark:messages_write | Send room and direct messages. |
spark:rooms_read | Allow your application to discover rooms before registering a room endpoint. |
spark:people_read | Resolve the authorized Webex person and support direct-message linking. |
spark:memberships_read | Allow your application to inspect room membership when choosing destinations. |
spark:kms | Access encrypted Webex content. Webex requires this scope for integrations that interact with messages. |
Configure Webex Messaging in Novu
Open the Novu dashboard
Sign in to the Novu Dashboard.
Enter the credentials
Add the values from your Webex integration:
- Client ID: The Webex integration client ID.
- Client Secret: The Webex integration client secret.
- Redirect URL (optional): Where Novu sends the browser after OAuth succeeds. If omitted, Novu displays a success page.
-
Base URL (optional): Leave empty to use
https://webexapis.com/v1.
The optional Redirect URL in Novu is different from the Webex redirect URI. Webex must redirect to Novu’s regional OAuth callback. The Novu field controls where the user goes after Novu finishes the callback.
Connect a Webex organization
Create a channel connection before registering room or person endpoints. Providing your ownconnectionIdentifier makes it easy to reference the connection later.
The following example creates a shared connection for the acme context. Call it from your backend when an administrator or authorized user clicks Connect Webex in your application.
- Node.js
- Python
- Go
- PHP
- .NET
- Java
- cURL
Connect and link the current person in one flow
For a subscriber-scoped connection, setautoLinkUser to true. Novu creates the connection and a webex_person endpoint for the Webex person who completes OAuth.
Link a subscriber to an existing connection
Use a separate link-user flow when the Webex organization is already connected and another subscriber needs a personal endpoint.- Node.js
- Python
- Go
- PHP
- .NET
- Java
- cURL
people/me and creates a webex_person endpoint linked to the existing connection.
Choose delivery destinations
Every Webex endpoint must reference a Webex Messaging connection throughconnectionIdentifier. If the connection has a Novu context, the endpoint must use the same context.
Send to a Webex room
Use the Webex Rooms API or a room picker in your application to obtain the room ID. The authorizing Webex user must be a member of the room. Create awebex_room endpoint for the subscriber and context that should receive messages:
- Node.js
- Python
- Go
- PHP
- .NET
- Java
- cURL
Send to a Webex person
The recommended approach is to useautoLinkUser or the link-user OAuth flow. These flows identify the person who signs in and create the endpoint automatically.
You can also create a webex_person endpoint manually. Provide exactly one of personId or personEmail.
- Node.js
- Python
- Go
- PHP
- .NET
- Java
- cURL
Send notifications
Create a workflow with a Chat step and select the Webex Messaging integration. After the matching connection and endpoint exist, trigger the workflow with the same subscriber and context.- Node.js
- Python
- Go
- PHP
- .NET
- Java
- cURL
Format Webex messages
The dashboard Chat step sends its body as Webextext. Use trigger overrides when you need Webex-specific message fields such as markdown, files, or attachments.
The example below adds Webex Markdown to a specific Chat step:
webex-chat-step with the Chat step identifier from your workflow.
For supported Webex payload fields, see Create a Message.
Troubleshooting
| Error or symptom | What to check |
|---|---|
| OAuth fails with an invalid redirect URI | Confirm the Webex integration contains the Novu callback for the correct region. The value must match exactly. |
WEBEX_INVALID_CREDENTIALS | Reconnect Webex. The access or refresh token may be invalid or expired. |
WEBEX_INSUFFICIENT_PERMISSIONS | Confirm the required scopes were selected in Webex and requested during OAuth. |
WEBEX_DESTINATION_NOT_FOUND | Verify the room or person identifier and confirm the authorizing user can access that destination. |
| Endpoint context mismatch | Use the same Novu context values on the endpoint and its referenced channel connection. |
WEBEX_RATE_LIMITED | Wait for the retry-after interval reported by Webex before trying again. |
Related
Webex Messages API
Review Webex message destinations, content fields, and API behavior.
