Webex AI note taker and meeting transcription
Speak AI joins your Webex calls, captures every word in 100+ languages, and turns the recording into a structured CRM entry. Invite the bot by email or connect Google Calendar or Microsoft 365 for auto-coverage. Push meeting summaries to your CRM via webhook. Production-ready in under 10 minutes.
What you can do
Once Webex calls flow into Speak AI, every meeting becomes searchable, analyzable, and shareable. Sales teams log every Webex call as a CRM activity. Support teams route by sentiment to the right channel. Research teams turn customer interviews into structured Notion writeups.
Auto-join every Webex call
Two paths. Add [email protected] as an attendee on the calendar event with the Webex meeting URL and the bot joins automatically. Or connect Google Calendar or Microsoft 365 to Speak once for ongoing auto-coverage of every event with a Webex URL. No per-meeting setup either way.
Speaker-labeled transcript in 100+ languages
Auto-detected language. Typical processing: under 2 minutes per hour of audio. Document and sentence-level VADER sentiment scoring. Speaker diarization across the full call. Output is editable, exportable to DOCX/SRT/PDF/JSON, and queryable through the Speak app.
Post AI summaries to Webex spaces
Use the Webex Messaging API to drop Adaptive Cards with the meeting summary, sentiment chip, and a link back to Speak directly into the relevant Webex space. Branch by tag, folder, or sentiment threshold so each team only sees relevant meetings.
One-click push to HubSpot, Salesforce, or Zoho
Verified webhook recipe: receive Speak’s media.analyzed event, fetch the insight, create a CRM activity. Same pattern across HubSpot Meetings, Salesforce Tasks, and Zoho Calls. Source-tagged so reports can split Webex vs Zoom vs Meet.
Set up in 3 steps
The fastest path takes 30 seconds: invite the bot by email. Auto-coverage takes 2 minutes: connect your Google Calendar or Microsoft 365. Webex space posting takes 5 minutes: create a Webex bot and configure the Messaging API.
Sign up for Speak AI
Create a free account at app.speakai.co. You get a 7-day trial with full access. No credit card needed. Once you are in, go to Settings > API and copy your API key.
Pick your integration path
[email protected] to a meeting (no setup)
Open the calendar event that contains the Webex meeting URL and add [email protected] as an attendee. The bot accepts the invite and joins the Webex call automatically. Zero in-app configuration. The same email works for Zoom, Teams, and Google Meet events too.
In Speak’s AI Meeting Assistant, click Capture Live Meeting to send the bot to a Webex call that is already running, or Schedule Live Meeting to send it to one starting later. Paste the Webex meeting URL and the bot handles the rest.
For ongoing coverage of every Webex meeting on your calendar, connect Google Calendar or Microsoft 365 in Speak under Meeting Assistant > Calendar. Speak finds calendar events that contain a Webex meeting URL and sends the bot automatically. Note: Webex auto-coverage works through your calendar OAuth (Google or Microsoft 365), not through a Webex OAuth. The trigger is the Webex URL on the calendar event, not a native Webex connection.
Go to developer.webex.com, create a bot under My Webex Apps, copy the bot access token, and invite the bot to your target Webex space. After each recording, POST an Adaptive Card to https://webexapis.com/v1/messages with your bot token. Full recipe in tab 2 below.
Already have Webex calls in Speak? Connect Claude Desktop with npx @speakai/mcp-server init, or add the remote MCP URL to Claude.ai or ChatGPT. Search the entire Webex meeting library through conversation.
Subscribe to media.analyzed
Speak fires a signed webhook when transcription and AI analysis complete (usually within 60 seconds for a 10-minute call). Register your endpoint via POST /v1/webhook and act on transcripts as they land in your CRM, Webex space, or BI tooling.
Real workflows, real results
Four production patterns Speak customers ship with Webex. Pick the one that fits your team and copy the recipe.
Auto-join every Webex meeting
Two paths, same outcome. Easiest: add [email protected] as an attendee on the calendar event that hosts the Webex meeting. The bot accepts and joins. Auto-coverage: connect Google Calendar or Microsoft 365 to Speak once and every calendar event with a Webex meeting URL gets the bot without any per-event invite.
# Manual: open the calendar event (Outlook, Google Calendar, etc.) that contains the Webex meeting link.
# Click "Add attendees" and enter:
# [email protected]
# Save the event. The bot accepts the invite and joins the Webex call automatically.
# Programmatic (Google Calendar API) - add the bot as an attendee:
curl -X PATCH "https://www.googleapis.com/calendar/v3/calendars/primary/events/$EVENT_ID" \
-H "Authorization: Bearer $GCAL_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"attendees": [
{ "email": "[email protected]", "displayName": "Speak AI Notetaker" }
]
}'
# In Speak AI dashboard:
# 1. Go to Meeting Assistant -> Calendar
# 2. Click "Connect Google Calendar" or "Connect Microsoft 365"
# 3. Approve the OAuth scopes when prompted
# 4. Speak scans upcoming calendar events for Webex meeting URLs
# 5. Bot joins every Webex call that appears on your connected calendar automatically
# Note: auto-coverage works through your calendar OAuth (Google or Microsoft 365),
# not a native Webex OAuth. The Webex URL on the calendar event is the trigger.
curl -X POST https://api.speakai.co/v1/meeting-assistant/events/schedule \
-H "x-speakai-key: $SPEAK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Acme Corp - Demo Call",
"meetingURL": "https://acme.webex.com/meet/acme-team",
"meetingDate": "2026-05-15T16:00:00.000Z",
"meetingLanguage": "en-US",
"folderId": "507f1f77bcf86cd799439011"
}'
// Call this when your CRM creates a Webex meeting.
async function scheduleSpeakBot({ title, webexURL, scheduledAt, folderId }) {
const r = await fetch(
"https://api.speakai.co/v1/meeting-assistant/events/schedule",
{
method: "POST",
headers: {
"x-speakai-key": process.env.SPEAK_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
title,
meetingURL: webexURL,
meetingDate: scheduledAt,
meetingLanguage: "en-US",
folderId,
}),
}
);
if (!r.ok) throw new Error(`Speak schedule failed: ${r.status}`);
const { data } = await r.json();
// Persist data.meetingAssistantEventId for pause / resume / remove later.
return data.meetingAssistantEventId;
}
import os, requests
def schedule_speak_bot(title: str, webex_url: str, scheduled_at: str, folder_id: str | None = None):
r = requests.post(
"https://api.speakai.co/v1/meeting-assistant/events/schedule",
headers={
"x-speakai-key": os.environ["SPEAK_API_KEY"],
"Content-Type": "application/json",
},
json={
"title": title,
"meetingURL": webex_url,
"meetingDate": scheduled_at,
"meetingLanguage": "en-US",
"folderId": folder_id,
},
timeout=30,
)
r.raise_for_status()
return r.json()["data"]["meetingAssistantEventId"]
Pause/resume/remove the bot via POST /v1/meeting-assistant/events/{pause|resume|remove} with {meetingAssistantEventId}. Works with Webex Meetings, Webex Suite, and Webex App.
Post AI summaries to a Webex space automatically
Create a Webex bot at developer.webex.com, invite it to your target space, and subscribe Speak’s media.analyzed webhook to your handler. After every recording, fetch the insight from Speak, build an Adaptive Card with the summary and sentiment, and POST to https://webexapis.com/v1/messages with your bot token. Branch by folder, tag, or sentiment so each team sees relevant meetings.
# 1. Go to https://developer.webex.com
# 2. Click "My Webex Apps" -> "Create a New App" -> "Create a Bot"
# 3. Name: "Speak AI Notetaker", Bot Username: speakai-notetaker
# 4. Click "Add Bot" and copy the Bot Access Token
# 5. Store as WEBEX_BOT_TOKEN in your handler's .env
#
# 6. Invite the bot to the target Webex space:
# In Webex App: open the space -> Add People -> search for [email protected]
#
# 7. Find the space's roomId:
curl https://webexapis.com/v1/rooms \
-H "Authorization: Bearer $WEBEX_BOT_TOKEN"
# Copy the id from the room you invited the bot to. Store as WEBEX_ROOM_ID.
media.analyzed webhookcurl -X POST https://api.speakai.co/v1/webhook \
-H "x-speakai-key: $SPEAK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"callbackUrl": "https://your-app.example.com/speak/webex-space",
"events": ["media.analyzed"],
"description": "Forward Speak insights to Webex space"
}'
// Speak posts a thin notification: { eventType, state, mediaId } (verified 2026-05-07).
import express from "express";
const app = express();
app.use(express.json());
app.post("/speak/webex-space", async (req, res) => {
const { eventType, state, mediaId } = req.body;
if (eventType !== "media.analyzed" || state !== "processed") return res.sendStatus(204);
res.sendStatus(202);
// 1. Fetch full insight from Speak
const insight = await fetch(
`https://api.speakai.co/v1/media/insight/${mediaId}`,
{ headers: { "x-speakai-key": process.env.SPEAK_API_KEY } }
).then(r => r.json());
const media = insight.data;
const compound = media.sentiment?.[0]?.document?.Compound ?? 0;
const sentiment = compound > 10 ? "Positive"
: compound < -10 ? "Negative" : "Neutral";
// 2. Build a Webex Adaptive Card (Buttons and Cards / Adaptive Cards 1.2)
const message = {
roomId: process.env.WEBEX_ROOM_ID,
markdown: `**${media.name}** - Sentiment: ${sentiment}`,
attachments: [{
contentType: "application/vnd.microsoft.card.adaptive",
content: {
$schema: "http://adaptivecards.io/schemas/adaptive-card.json",
type: "AdaptiveCard",
version: "1.2",
body: [
{ type: "TextBlock", size: "Large", weight: "Bolder", text: media.name },
{ type: "TextBlock", text: `Sentiment: ${sentiment} (Compound ${compound})`, wrap: true },
{ type: "TextBlock",
text: `Duration: ${Math.round(media.duration?.inSecond / 60)} min`,
isSubtle: true, spacing: "None" },
],
actions: [{
type: "Action.OpenUrl",
title: "Open in Speak",
url: `https://app.speakai.co/media/${mediaId}`,
}],
},
}],
};
// 3. POST to the Webex Messaging API
await fetch("https://webexapis.com/v1/messages", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.WEBEX_BOT_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify(message),
});
});
app.listen(3000);
import os, requests
from fastapi import FastAPI, Request
app = FastAPI()
@app.post("/speak/webex-space")
async def hook(req: Request):
body = await req.json()
if body.get("eventType") != "media.analyzed" or body.get("state") != "processed":
return {"ok": True}
media_id = body["mediaId"]
insight = requests.get(
f"https://api.speakai.co/v1/media/insight/{media_id}",
headers={"x-speakai-key": os.environ["SPEAK_API_KEY"]},
timeout=30,
).json()["data"]
compound = (insight.get("sentiment") or [{}])[0].get("document", {}).get("Compound", 0)
sentiment = "Positive" if compound > 10 else "Negative" if compound < -10 else "Neutral"
message = {
"roomId": os.environ["WEBEX_ROOM_ID"],
"markdown": f"**{insight['name']}** - Sentiment: {sentiment}",
"attachments": [{
"contentType": "application/vnd.microsoft.card.adaptive",
"content": {
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.2",
"body": [
{"type": "TextBlock", "size": "Large", "weight": "Bolder", "text": insight["name"]},
{"type": "TextBlock", "text": f"Sentiment: {sentiment} (Compound {compound})", "wrap": True},
{"type": "TextBlock",
"text": f"Duration: {round(insight.get('duration', {}).get('inSecond', 0) / 60)} min",
"isSubtle": True, "spacing": "None"},
],
"actions": [{
"type": "Action.OpenUrl",
"title": "Open in Speak",
"url": f"https://app.speakai.co/media/{media_id}",
}],
},
}],
}
requests.post(
"https://webexapis.com/v1/messages",
headers={
"Authorization": f"Bearer {os.environ['WEBEX_BOT_TOKEN']}",
"Content-Type": "application/json",
},
json=message,
timeout=15,
)
return {"ok": True}
Webex Adaptive Cards use format version 1.2. The markdown field is shown as fallback text in clients that do not render cards. Branch by tag, folder, or sentiment threshold to route different recording types into different Webex spaces.
Log every Webex meeting in HubSpot, Salesforce, or Zoho
Same verified middleware pattern as the rest of the integrations cluster: receive Speak’s flat {eventType, state, mediaId} notification, fetch full insight via GET /v1/media/insight/:mediaId, then create the CRM activity. Source-tag with webex so reports can split Webex vs Zoom vs Meet.
// Speak webhook body shape (verified 2026-05-07): { eventType, state, mediaId }
import express from "express";
const app = express();
app.use(express.json());
app.post("/speak/webex-to-crm", async (req, res) => {
const { eventType, state, mediaId } = req.body;
if (eventType !== "media.analyzed" || state !== "processed") return res.sendStatus(204);
res.sendStatus(202);
// 1. Fetch full insight
const { data } = await fetch(
`https://api.speakai.co/v1/media/insight/${mediaId}`,
{ headers: { "x-speakai-key": process.env.SPEAK_API_KEY } }
).then(r => r.json());
// 2. Push to HubSpot Meetings (or Salesforce Tasks, or Zoho Calls)
const start = new Date(data.createdAt);
const end = new Date(start.getTime() + (data.duration?.inSecond || 0) * 1000);
await fetch("https://api.hubapi.com/crm/v3/objects/meetings", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.HUBSPOT_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
properties: {
hs_timestamp: start.toISOString(),
hs_meeting_title: data.name,
hs_meeting_body: `Webex call summary. Open in Speak: https://app.speakai.co/media/${mediaId}`,
hs_meeting_external_url: `https://app.speakai.co/media/${mediaId}`,
hs_meeting_start_time: start.toISOString(),
hs_meeting_end_time: end.toISOString(),
hs_meeting_outcome: "COMPLETED",
},
}),
});
});
app.listen(3000);
Full destination-specific code (HubSpot Meeting + association IDs, Salesforce Task + SOQL contact resolution, Zoho Calls + Notes) on /integrations/hubspot/, /integrations/salesforce/, and /integrations/zoho/. The Speak side is identical across all three CRM destinations.
Search every Webex meeting from Claude or ChatGPT
Connect Speak’s MCP server to Claude or ChatGPT and your team queries the entire Webex meeting library through conversation. No SQL, no dashboards, no exports.
# Claude Desktop / Claude Code (auto-detects your installation)
npx @speakai/mcp-server init
# Paste your Speak API key when prompted. Setup takes about 2 minutes.
# Claude.ai (web) and ChatGPT MCP connector
# Settings > Integrations > Add MCP Server
# Remote URL: https://api.speakai.co/v1/mcp
# Auth header: x-speakai-key: YOUR_SPEAK_API_KEY
# Verify the connection responds:
curl -s https://api.speakai.co/v1/mcp \
-H "x-speakai-key: $SPEAK_API_KEY" \
-H "Accept: application/json"
2. Example prompts your team can use today:
- “Show every Webex meeting last week with negative customer sentiment in the last 5 minutes.”
- “Summarize the 3 longest Webex calls with Acme Corp from this quarter.”
- “Pull verbatim quotes from Webex meetings tagged
discoverywhere customers asked about onboarding.” - “Compare discovery completeness across our top 3 SDRs. Use this week’s Webex calls. Score each on a 0-10 rubric.”
- “Find every Webex meeting where the rep missed the discovery question. Pull the timestamps.”
Works with Claude.ai, Claude Desktop, Claude Code, and ChatGPT MCP connectors. View MCP server →
Why Speak AI + Webex
Webex handles the call. Webex AI Assistant covers in-call note suggestions on paid Webex Suite tiers. Speak handles the deeper analysis layer that lives outside Webex: cross-meeting search, custom Magic Prompts, multi-source ingest, CRM push, and shareable embeds.
Multi-source ingest, not just Webex
Webex is one of dozens of inputs. The same Speak workspace ingests Zoom, Google Meet, Microsoft Teams, Twilio, Loom, podcast audio, and direct file uploads. One library, every conversation across every meeting platform.
Custom Magic Prompts, not fixed templates
Webex AI Assistant ships fixed summary templates included with paid Webex Suite plans. Speak’s Magic Prompt runs your prompts on every Webex call: discovery checklist scoring, competitor mention extraction, MEDDIC-stage detection, whatever your team needs. Save prompts once, run them on every recording forever.
SOC 2 + GDPR + HIPAA-eligible
Speak ships with SOC 2 Type 2, GDPR compliance, and HIPAA-eligible plans for healthcare customers. Your Webex meeting data is encrypted in transit and at rest, and Speak does not train on your conversations.
MCP-native for Claude and ChatGPT
The official @speakai/mcp-server exposes 83 tools to AI assistants. Your team queries the Webex meeting library in plain English from Claude Desktop or ChatGPT, without exporting transcripts to other tools.
Teams trust Speak AI for their most important calls
4.9 on G2
“Speak AI has been instrumental in transforming how we handle qualitative data. The transcription accuracy is impressive, and the NLP insights save us hours of manual analysis.”
Research Director | Consulting Firm
“We switched from Otter.ai and the depth of analysis is on another level. Sentiment scoring, keyword extraction, and theme detection all happen automatically.”
Product Manager | SaaS Company
“The ability to search across all our customer calls and pull specific moments is a game-changer for our support team.”
Head of CX | Enterprise Tech
How to use Speak AI with Webex for transcription and meeting intelligence
Cisco Webex is a leading enterprise video meeting platform used by sales teams for discovery and demo calls, support teams for customer reviews, and internal teams for weekly syncs and project standups. Every one of those calls is a potential source of customer truth, decisions, and follow-up actions. Speak AI is what turns those calls into structured, searchable, shareable data without forcing a tool change or a manual export.
Where Speak fits in the Webex call lifecycle
Speak runs after the call ends, or in parallel during the call via the bot. Webex handles call control: rooms, video, audio, the in-meeting AI Assistant features for paid Webex Suite tiers. Speak handles transcription in 100+ languages, AI analysis with custom prompts, search across the full library, and downstream automation. The handoff happens via the calendar bot (email invite or Google/Microsoft 365 calendar OAuth), the per-meeting /v1/meeting-assistant/events/schedule endpoint, or by uploading existing Webex cloud recordings via URL or the Webex recording webhook.
Speak vs Webex AI Assistant
Webex AI Assistant covers in-call note suggestions, meeting highlights, and post-meeting summaries. It is bundled with Webex Suite Business and Enterprise plans. It is well-suited if you only need a Webex-internal summary delivered within the Webex ecosystem.
Speak is a different product. Speak ingests Webex alongside Zoom, Google Meet, Microsoft Teams, file uploads, podcasts, and embed recorder submissions, then runs custom analysis (your Magic Prompts, your tags, your team’s vocabulary), exposes everything via MCP for Claude and ChatGPT, and ships shareable embeds. Most teams using both let Webex AI Assistant handle the in-call host summary and use Speak for the deeper post-call analysis layer plus cross-platform search.
Auto-coverage: how Webex calendar sync works
Speak does not have a native Webex OAuth integration. Auto-coverage for Webex works through your calendar: connect Google Calendar or Microsoft 365 to Speak, and Speak scans upcoming calendar events for Webex meeting URLs. When a calendar event contains a Webex URL (webex.com/meet/... or similar), Speak sends the bot automatically. This means the trigger is the calendar event, not a Webex-side webhook. For organizations that schedule Webex meetings through Outlook or Google Calendar, this works seamlessly.
How do I transcribe Webex meetings automatically?
Three production paths, ranked by lift:
- Email invite. Add
[email protected]as an attendee on the calendar event containing the Webex meeting URL. The bot joins the call, records, and transcribes. Zero setup. Works for any Webex meeting type. - Calendar OAuth auto-coverage. Connect Google Calendar or Microsoft 365 to Speak once. Every calendar event with a Webex URL gets the bot automatically going forward.
- API per-meeting schedule. POST a Webex meeting URL to Speak’s
/v1/meeting-assistant/events/schedulefrom your CRM or scheduling tool. Full control over title, language, and folder.
All three deliver the same output: full transcript, AI summary, sentiment, action items, plus structured CRM push and Webex space posting via the Messaging API.
Can I process Webex cloud recordings via webhook?
Yes. Register a webhook at https://webexapis.com/v1/webhooks for the recordings resource and created event. When a Webex meeting finishes recording, Webex fires the event to your handler. Your handler fetches the recording’s downloadUrl from GET /v1/recordings/{recordingId} using a Webex access token, then passes that URL to Speak’s POST /v1/media/upload endpoint. This is useful for compliance archives and post-call coaching pipelines that run independently of the meeting bot path. The download URL expires after 24 hours.
Use cases by role
Sales and RevOps teams use Speak with Webex to auto-log every Webex demo and discovery call into HubSpot, Salesforce, or Zoho. Magic Prompts score discovery completeness, surface objections, and extract competitor mentions. See Speak AI for sales teams.
Customer support and CX teams capture every inbound Webex support call and route by sentiment. Multilingual queues work without per-language setup since Speak supports 100+ languages with auto-detection.
Customer research teams bring Webex interview calls into the same workspace as their Zoom and embed recorder sessions. Code themes across the entire library, ask Claude for verbatim quotes via MCP, build research deliverables in hours instead of weeks. See Speak AI for qualitative researchers.
Training and enablement teams turn Webex calls into a coaching loop. Speak’s analysis surfaces missed discovery questions, scripted-line drift, and sentiment dips for QA review. See Speak AI for training and development.
Frequently asked questions
What is the easiest way to get the Speak bot into a Webex meeting?
Add [email protected] as an attendee on the calendar event hosting the Webex meeting. The bot accepts the invite and joins the Webex call automatically. No in-app configuration, no OAuth, no API call. The same email works for Zoom, Microsoft Teams, and Google Meet events too.
How do I use an AI note taker for Webex?
Three options. Easy: invite [email protected] on the calendar event. Auto-coverage: connect Google Calendar or Microsoft 365 to Speak under Meeting Assistant. Programmatic: POST the Webex meeting URL to Speak’s /v1/meeting-assistant/events/schedule endpoint. All three produce the same output: speaker-labeled transcript, AI summary, sentiment, and any custom Magic Prompts you have configured.
Can I transcribe a Webex meeting automatically?
Yes. Once the bot is invited (by email, calendar OAuth, or API), every Webex meeting is transcribed automatically without any manual steps. Speak also processes existing Webex cloud recordings: upload the recording URL or video file directly and get a speaker-labeled transcript in 100+ languages, typically in under 2 minutes per hour of audio.
Does Speak have a native Webex OAuth integration?
No. Speak does not have a direct Webex OAuth connection. Auto-coverage for Webex works through your calendar: connect Google Calendar or Microsoft 365 to Speak, and the bot joins any calendar event that contains a Webex meeting URL. You can also invite the bot by email ([email protected]) for individual meetings, or use the Speak API to schedule the bot for specific Webex meeting URLs.
Can Speak AI post meeting summaries to a Webex space?
Yes. Create a bot at developer.webex.com, invite it to your space, and POST Adaptive Cards (version 1.2) to https://webexapis.com/v1/messages with Authorization: Bearer $WEBEX_BOT_TOKEN after each media.analyzed event. Tab 2 above shows the full Node and Python recipes.
What is the best AI tool for Cisco Webex?
Speak AI is rated 4.9 on G2 and handles the full Webex meeting lifecycle: calendar sync, bot join, transcription in 100+ languages, AI analysis, Webex space posting, and CRM push. Unlike Otter, Fireflies, or Fathom, Speak also supports bulk processing of archived recordings, multi-source ingest across Zoom and Meet and Teams, and exposes everything through MCP for Claude and ChatGPT.
Start using Speak AI with Webex today
83 analysis tools. 100+ languages. Calendar bot, Webex space posting via Messaging API, MCP-native for Claude and ChatGPT. Same workspace as your Zoom, Meet, Teams, and Twilio calls.
Try Speak AI free
Create your account, invite the bot to your next Webex meeting (or connect your calendar), and the transcript lands in your Speak workspace automatically. Full access for 7 days. No credit card required.
Book a demo
For sales or IT teams evaluating Speak across an enterprise Webex deployment, book a 30-minute demo with the Speak team. We will walk through the calendar bot, Webex Messaging API space posting, and CRM push live.





