---
title: "How to Set Up a Webex Meeting Bot with Unified"
img: https://s3.us-east-2.amazonaws.com/unified-article-images/how_to_set_up_a_webex_meeting_bot_with_unified-icon.png
date: 2026-11-07T20:02:00.000Z
updated: "2026-11-09T14:48:31.429Z"
tag: Guides
integrations: webexmeetingbot
description: "Webex (meeting bot) (`webexmeetingbot`) is the integration that gives you a `calendarbot` and `calendarbotevent`s for Webex meetings. It is separate from the..."
url: "https://docs.unified.to/guides/how_to_set_up_a_webex_meeting_bot_with_unified"
---

# How to Set Up a Webex Meeting Bot with Unified
------
_November 7, 2026_

## Overview


**Webex (meeting bot)** (`webexmeetingbot`) is the integration that gives you a `calendar_bot` and `calendar_botevent`s for Webex meetings. It is separate from the **Webex** integration: existing Webex connections don't change, and your end users connect Webex (meeting bot) on its own.


A Webex meeting bot is a **monitor**: no bot joins the meeting, and no audio, video or chat is captured. Unified follows the meeting through Webex webhooks:

- while the meeting runs: meeting started and ended, participants joined and left
- after the meeting: `RECORDING_READY` (the bot's `recording_id` is set) and the Webex transcript as `TRANSCRIPT_RECEIVED` events

The same connection also gives you Webex's `calendar_calendar`, `calendar_event`, `calendar_recording` and `calendar_webinar` objects. They work as on the Webex integration, and their scopes are requested only when you select their permissions.


For how to create bots and receive events, see [How to Build a Meeting Bot with Unified](https://docs.unified.to/guides/how_to_build_a_meeting_bot_with_unified_zoom_microsoft_teams_webex_google_meet).


---


## ⚠️ Important: bring your own Webex integration


Unified has no shared OAuth credentials for Webex (meeting bot). You create your own Webex integration (Webex's name for an OAuth app) and enter its client ID and secret in Unified.


---


## What you'll need

- A Webex account that can sign in to the [Webex Developer Portal](https://developer.webex.com/)
- End users on Webex sites with Webex Meetings
- For recordings: cloud recording, which isn't on the Webex Free plan. For transcripts: recording plus Webex Assistant / Closed Captions or the Cisco AI Assistant (transcripts aren't available on Webex for Government)

---


## Step 1: Create a Webex integration

1. In the Webex Developer Portal, open **My Webex Apps** and create an **Integration**.
2. Add the Unified redirect URI for your region:
    - US: `https://api.unified.to/oauth/code`
    - EU: `https://api-eu.unified.to/oauth/code`
    - AU: `https://api-au.unified.to/oauth/code`
3. Select the scopes in Step 2, save, and copy the **Client ID** and **Client Secret**. Webex shows the client secret only once, when you create the integration.

---


## Step 2: Scopes


| Scope                       | Unified permission                                                                                                    | Why                                                                                       |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `meeting:schedules_read`    | `calendar_bot_read`, `calendar_bot_write`, `calendar_botevent_read`, `calendar_event_read`, `calendar_recording_read` | Find the meeting when a bot is created; meeting started and ended webhooks; list meetings |
| `meeting:participants_read` | `calendar_botevent_read`, `calendar_event_read`                                                                       | Participant joined and left webhooks                                                      |
| `meeting:recordings_read`   | `calendar_botevent_read`, `calendar_recording_read`                                                                   | Recording created webhooks; reading the recording                                         |
| `meeting:transcripts_read`  | `calendar_botevent_read`, `calendar_recording_read`                                                                   | Transcript created webhooks, transcript snippets and recording transcripts                |
Unified also requests the OpenID sign-in scopes (`openid`, `profile`, `email`); you don't select those in My Webex Apps. If you select other permissions, add the scopes the Webex integration uses for them: `spark:rooms_read` (`calendar_calendar_read`), and `meeting:schedules_write` and `meeting:participants_write` (`calendar_event_write`, `calendar_webinar_write`).


Webex lists the scope each webhook resource needs in [Register and manage webhooks](https://developer.webex.com/meeting/docs/register-and-manage-webhooks).


---


## Step 3: Enter your credentials in Unified

1. In the Unified app, open **Integrations** and activate **Webex (meeting bot)**.
2. Enter your Webex integration's **Client ID** and **Client Secret**.
3. Select the permissions you need: `calendar_bot_read`, `calendar_bot_write` and `calendar_botevent_read` for bots, `calendar_event_read` to list events (creating a bot from an `event_id` needs only `calendar_bot_write`), and `calendar_recording_read` to read recordings.

---


## Step 4: Webhook setup


There is nothing to configure in Webex. When you create a native `calendar_botevent` webhook on a connection, Unified registers six Webex webhooks for that connection, one per notification:

- `meetings` started and ended
- `meetingParticipants` joined and left
- `recordings` created
- `meetingTranscripts` created

Each has its own random secret, as Webex recommends, and Unified verifies every delivery with the secret of the webhook that sent it. Deleting the Unified webhook removes the Webex registrations. Webex disables a webhook after repeated delivery failures and doesn't re-enable it; if events stop, delete the `calendar_botevent` webhook and create it again.


Create the webhook before the meeting starts, or the bot misses the meeting.


---


## How end users connect


End users authorize **Webex (meeting bot)** through Unified's authorization flow (embedded authorization or the authorization link) and approve the scopes above. A bot only receives notifications from its own connection's webhooks.


---


## Test the setup

1. Create a `calendar_bot` with the Webex meeting link (`meeting_url`), or with the `id` of a `calendar_event` listed on the same connection (`event_id`, the Webex meeting ID). The bot is `READY`. A bot created from an `event_id` that is a meeting instance already in progress starts in `IN_CALL_NOT_RECORDING`; a bot created from a `meeting_url` always starts in `READY`.
2. Create a native webhook for `calendar_botevent` / `created` on the same connection.
3. Start the meeting: expect `BOT_STATUS_CHANGE` to `IN_CALL_NOT_RECORDING` and `PARTICIPANT_JOINED` events.
4. End the meeting: expect `BOT_STATUS_CHANGE` to `CALL_ENDED`. If the meeting was recorded or transcribed, expect `RECORDING_READY` and `TRANSCRIPT_RECEIVED` events later.
5. Read the recording with `GET /calendar/{connection_id}/recording/{recording_id}` on the same connection.

---


## Limits

- **Unsupported features return** **`501`** (`Not supported by this integration: …`): `join_at`, and any `recording_config` (media capture or transcription). Malformed input returns `400`. `automatic_leave` isn't used.
- **Final status is** **`CALL_ENDED`****.** The `meetings.ended` notification doesn't say whether a recording will follow, so a Webex bot never moves to `DONE`. Watch for `RECORDING_READY`.
- **Recordings:** Webex returns only recordings of meetings hosted by or shared with the connected user. A recording can take up to 24 hours to be ready, and a transcript about twice the meeting's length (up to 24 hours).
- **No live transcript, chat, webcam, screen-share or speaking events.** Transcripts arrive after the meeting, one `TRANSCRIPT_RECEIVED` per snippet. Unified asks for 100 snippets per page, for up to 50 pages.
- **Recurring meetings:** a bot created for a series or scheduled meeting follows the first occurrence that starts after the bot was created.
- **One active bot per meeting link** per connection: creating another while an earlier bot for exactly the same link is still active (not `CALL_ENDED`, `DONE` or `FATAL`) returns `409`.
- **Only** **`name`** **can be updated.** An update with `meeting_url` or `event_id` returns `400`.
- **Other errors on create:** `400` for malformed input, `404` when no Webex meeting matches the link or `event_id`, and `422` when the meeting has no web link.
- Webex aims to make the API data behind a notification available within 10 minutes (in 99.5% of cases); until then, looking it up can return `404`. If the transcript isn't readable yet, Unified tries again for about 12 minutes, so `TRANSCRIPT_RECEIVED` events can arrive that much later than the transcript notification.
- Deleting a bot stops following the meeting; no event is sent.

---


## Troubleshooting


### ❌ No events at all

- The `calendar_botevent` webhook was created after the meeting started, or on another connection
- The Webex integration is missing a scope from Step 2 (reconnect after adding scopes)

### ❌ Creating a bot returns 501


The request includes `join_at` or `recording_config`. Remove them.


### ❌ No recording or transcript events

- The meeting wasn't recorded or transcribed in Webex, or the site's plan has no cloud recording
- The connected user didn't host the meeting and the recording wasn't shared with them
- The connection is missing `meeting:recordings_read` or `meeting:transcripts_read`
- Webex hasn't finished processing it yet (up to 24 hours)

### ❌ Events stopped arriving


Webex disabled the registrations after repeated delivery failures. Delete the `calendar_botevent` webhook and create it again.