To integrate Lovable with Webex by Cisco, create a Supabase Edge Function that uses the Webex REST API with a Bearer token to create meetings, send messages to Spaces, and manage rooms. Store your Webex Bot token in Cloud → Secrets. Webex's REST API covers meetings, messaging, and calling in a single platform — preferred for enterprise organizations in the Cisco ecosystem needing adaptive card messaging and enterprise SSO.
Enterprise collaboration features in Lovable with Webex's REST API
Webex by Cisco provides a comprehensive REST API at developer.webex.com that covers three main capabilities: meetings (scheduled and instant video calls), messaging (persistent chat rooms called Spaces with file sharing and adaptive cards), and calling (VoIP features for enterprise phone systems). The API uses simple Bearer token authentication — either from a Webex Bot you create, a personal access token for development, or OAuth2 integration tokens for user-level access in production.
For Lovable integrations, the typical pattern is to create a Webex Bot, which provides a permanent Bearer token that does not expire. The Bot can be invited to Webex Spaces (group chats) to send automated messages, and it can create meetings on behalf of your integration. This is simpler than the OAuth2 authorization code flow required for user-level access, and it works well for notification bots, meeting schedulers, and internal tooling.
Webex distinguishes itself from Teams and Slack in the enterprise context through deeper Cisco hardware integration (room systems, Webex Boards, phones), stronger compliance features (GDPR, HIPAA), and enterprise SSO with Cisco Identity Services. For organizations already in the Cisco networking and security ecosystem, Webex is often the collaboration standard. This integration guide focuses on the Bot token approach for the most common use cases: sending messages to Spaces and creating meeting links.
Integration method
Webex has no native Lovable connector. Integration uses Supabase Edge Functions that call the Webex REST API (developer.webex.com) with a Bearer token from either a Webex Bot or a personal access token. The Edge Function creates meetings, posts messages, manages spaces, and processes webhook events. Tokens are stored in Cloud → Secrets and never exposed to the browser.
Prerequisites
- A Lovable project with Lovable Cloud enabled (Cloud tab visible in the editor)
- A Webex account at webex.com (free developer accounts are available at developer.webex.com)
- A Webex Bot created at developer.webex.com/my-apps with its Bearer token copied
- The Webex Room/Space ID where your bot will post messages (find it via the Webex API or by inviting the bot to an existing space)
- Basic familiarity with Lovable's Cloud → Secrets and Edge Function concepts
Step-by-step guide
Create a Webex Bot and obtain the Bearer token
Create a Webex Bot and obtain the Bearer token
Navigate to developer.webex.com and sign in with your Webex account (create a free account if needed). Click on your profile icon in the top right and select 'My Webex Apps', then click 'Create a New App'. Choose 'Create a Bot' from the app type options. Fill in the bot details: display name (how the bot appears in Webex Spaces), bot username (unique identifier ending in @webex.bot), icon (upload an image or select a default), and description. Click 'Add Bot'. On the next screen, Webex displays your Bot's Access Token — this is a permanent token that does not expire. Copy it immediately and store it securely — if you navigate away, you cannot retrieve the full token again (you must regenerate it). Also note your Bot's full email address (botname@webex.bot) — you will use this to invite the bot to Webex Spaces. To find the Space ID of an existing room, use the Webex API: GET https://webexapis.com/v1/rooms with your personal access token (available at developer.webex.com/docs/api/v1/rooms/list-rooms) to list rooms and find the ID of the space you want to post to.
Pro tip: For development and testing, you can use the personal access token from developer.webex.com (under 'Getting Started' → 'Copy' your token). This token is valid for 12 hours — switch to the Bot token for production use.
Expected result: A Webex Bot created with its Bearer token copied and the target Webex Space ID identified.
Store Webex credentials in Cloud → Secrets
Store Webex credentials in Cloud → Secrets
In your Lovable editor, open the Cloud tab by clicking the '+' panel icon at the top right, then select Cloud. Scroll to the Secrets section and add two secrets. Name the first secret WEBEX_BOT_TOKEN and paste the Bot Access Token from developer.webex.com. Name the second secret WEBEX_ROOM_ID and paste the Space/Room ID where your bot will send messages (the Bot must be a member of this space — invite it by mentioning botname@webex.bot in the Webex app first). The Bot token is long — it is a JWT-like string several hundred characters long. Make sure you copy the entire token without truncation. If you paste only part of the token, the API will return 401 Unauthorized with a confusing error. Lovable's Secrets panel stores values of any length, so this is safe. Lovable blocks approximately 1,200 hardcoded API keys per day — the Secrets panel is the only secure way to store the Bot token.
Pro tip: If your integration needs to post to multiple Webex Spaces, add multiple room ID secrets (WEBEX_ROOM_ID_ALERTS, WEBEX_ROOM_ID_SALES, etc.) and select the appropriate one in your Edge Function based on the notification type.
Expected result: WEBEX_BOT_TOKEN and WEBEX_ROOM_ID secrets saved in Cloud → Secrets.
Build the Webex messaging Edge Function
Build the Webex messaging Edge Function
The Webex messaging Edge Function sends messages to a Space using the Messages API at https://webexapis.com/v1/messages. A basic text message requires just roomId and text. For rich messages, you can include markdown or an attachments array containing an adaptive card. Adaptive cards in Webex use the AdaptiveCard schema (adaptivecards.io) and are specified as a JSON object in the attachment content. Webex renders these cards directly in the Space with buttons, data tables, and interactive elements. The contentType for Webex adaptive cards is 'application/vnd.microsoft.card.adaptive'. The Meetings API endpoint for creating a meeting is POST https://webexapis.com/v1/meetings with title, start, end, and timezone fields. Unlike the messaging Bot approach, meeting creation via the Bot token creates meetings associated with the bot's account — if you need meetings associated with a specific user's account, you need the OAuth2 authorization code flow. For most notification and scheduling use cases, bot-owned meetings work well because the join link is valid for all participants.
Create a Supabase Edge Function called webex-message that: 1) Reads WEBEX_BOT_TOKEN and WEBEX_ROOM_ID from env. 2) Accepts POST body with: text (string, the message), and optionally: markdown (string, markdown-formatted text), cardTitle (string), cardBody (string) for adaptive card messages. 3) If cardTitle is provided, send an adaptive card with the title and body formatted as a ColumnSet card. Otherwise send a plain text or markdown message. 4) POSTs to https://webexapis.com/v1/messages with Bearer token. 5) Returns the message ID on success. Include CORS headers.
Paste this in Lovable chat
1// supabase/functions/webex-message/index.ts2import { serve } from 'https://deno.land/std@0.168.0/http/server.ts';34const corsHeaders = {5 'Access-Control-Allow-Origin': '*',6 'Access-Control-Allow-Headers': 'authorization, x-client-info, apikey, content-type',7};89serve(async (req) => {10 if (req.method === 'OPTIONS') return new Response('ok', { headers: corsHeaders });1112 try {13 const token = Deno.env.get('WEBEX_BOT_TOKEN')!;14 const roomId = Deno.env.get('WEBEX_ROOM_ID')!;15 const { text, markdown, cardTitle, cardBody } = await req.json();1617 let messageBody: Record<string, unknown> = { roomId };1819 if (cardTitle) {20 messageBody = {21 roomId,22 text: cardTitle, // fallback text for older clients23 attachments: [24 {25 contentType: 'application/vnd.microsoft.card.adaptive',26 content: {27 type: 'AdaptiveCard',28 version: '1.3',29 body: [30 {31 type: 'TextBlock',32 text: cardTitle,33 weight: 'Bolder',34 size: 'Medium',35 },36 {37 type: 'TextBlock',38 text: cardBody,39 wrap: true,40 },41 ],42 },43 },44 ],45 };46 } else if (markdown) {47 messageBody.markdown = markdown;48 } else {49 messageBody.text = text;50 }5152 const res = await fetch('https://webexapis.com/v1/messages', {53 method: 'POST',54 headers: {55 'Authorization': `Bearer ${token}`,56 'Content-Type': 'application/json',57 },58 body: JSON.stringify(messageBody),59 });6061 const data = await res.json();62 if (!res.ok) throw new Error(`Webex API error: ${JSON.stringify(data)}`);6364 return new Response(65 JSON.stringify({ messageId: data.id, created: data.created }),66 { headers: { ...corsHeaders, 'Content-Type': 'application/json' } }67 );68 } catch (error) {69 return new Response(70 JSON.stringify({ error: error.message }),71 { status: 500, headers: { ...corsHeaders, 'Content-Type': 'application/json' } }72 );73 }74});Pro tip: Test your Webex Space ID is correct by calling GET https://webexapis.com/v1/rooms/{roomId} with your token before deploying. A wrong room ID returns a 404 that is easy to diagnose early.
Expected result: A deployed webex-message Edge Function that posts text messages and adaptive cards to the configured Webex Space.
Set up Webex webhooks for inbound message processing
Set up Webex webhooks for inbound message processing
To receive messages from Webex users (for a bot command pattern), register a webhook in Webex that sends POST requests to your Edge Function. Create a second Edge Function called webex-webhook to receive these events. Register the webhook via the Webex API: POST to https://webexapis.com/v1/webhooks with name, targetUrl (your deployed Edge Function URL), resource ('messages'), event ('created'), and optionally filter to restrict to a specific room. The registration must use a user-level token or bot token — the Bot can receive messages posted in Spaces where it is a member. Your webhook handler Edge Function receives events with a data object containing message ID, room ID, and person ID. To get the actual message text, make a follow-up API call to GET https://webexapis.com/v1/messages/{messageId} using the Bot token. This two-step pattern (webhook notification + message fetch) is Webex's standard webhook design. For complex multi-command bot logic with database lookups and branching responses, RapidDev's team can help architect the full command routing and response generation system.
Create a Supabase Edge Function called webex-webhook that: 1) Receives POST requests from Webex with a webhook event body containing data.id (message ID) and data.roomId. 2) Makes a follow-up GET to https://webexapis.com/v1/messages/{messageId} using WEBEX_BOT_TOKEN to fetch the message text. 3) Ignores messages sent by the bot itself (check data.personEmail ends with @webex.bot). 4) Inserts the message text, room ID, sender email, and timestamp into a webex_messages table. 5) Returns HTTP 200 immediately.
Paste this in Lovable chat
Pro tip: Always check that the incoming message was not sent by your own bot before processing it — bots receive their own messages in Webex webhooks and you need to filter these to prevent infinite loops.
Expected result: A webhook receiver Edge Function receiving Webex message events and storing them in Supabase, with the webhook registration complete in Webex.
Common use cases
Automated Webex Space notifications from your Lovable app
Send real-time notifications to a Webex Space when important events happen in your app — new user registrations, order completions, error alerts, or daily summaries. The Edge Function posts formatted messages (including adaptive cards with buttons and data tables) to the target Space using the Bot token.
Add a notification system that calls my webex-message Edge Function whenever a new user signs up. Send a message to our team Webex Space with the user's name, email, and signup timestamp. Format it as a Webex adaptive card with the user details in a card layout.
Copy this prompt to try it in Lovable
Meeting creation and join link generator
Create Webex meetings on demand from a scheduling form in Lovable. The Edge Function uses the Webex Meetings API to create a meeting and returns the join link, which is displayed to the user and stored in your Supabase database for future reference.
Create a meeting scheduler that calls my webex-meeting Edge Function. The form should have fields for meeting title, start date/time, and duration. On submission, create a Webex meeting and show the join link and host key to the organizer. Save the meeting ID and join URL to a meetings table.
Copy this prompt to try it in Lovable
Webex Bot command handler for internal tools
Build a Webex Bot that listens for commands in a Space and triggers actions in your Lovable app. When someone types '@YourBot /report weekly' in a Webex Space, the webhook Edge Function receives the message, parses the command, runs the report query against Supabase, and posts the results back to the Space.
Build a Webex bot command handler. When my webex-webhook Edge Function receives a message from the bot containing '/report', query the orders table for this week's summary and post the results back to the same Webex Space using the webex-message Edge Function. Format the report as an adaptive card.
Copy this prompt to try it in Lovable
Troubleshooting
Webex API returns 401 Unauthorized when sending a message
Cause: The WEBEX_BOT_TOKEN value in Cloud → Secrets is truncated, expired, or incorrectly copied. Personal access tokens expire after 12 hours but Bot tokens do not expire.
Solution: Open Cloud → Secrets and verify WEBEX_BOT_TOKEN contains the complete token. Go to developer.webex.com → My Webex Apps → your Bot and copy the token again — look for a 'Regenerate Access Token' button if the original is lost. Paste the full token into the Secret, ensuring no whitespace at the start or end.
Webex API returns 404 when posting a message — roomId not found
Cause: The WEBEX_ROOM_ID is incorrect, or the Bot has not been invited to the Webex Space identified by that ID.
Solution: In the Webex app, open the Space and invite your bot by typing @botname in the message field or going to Space settings → People → Add. Then verify the room ID by calling GET https://webexapis.com/v1/rooms in your browser using a personal access token from developer.webex.com.
Adaptive card message appears as plain text without the card rendering
Cause: The attachment content is malformed — likely missing a required field like type: 'AdaptiveCard' or version in the card content, or contentType is incorrect.
Solution: Verify the contentType is exactly 'application/vnd.microsoft.card.adaptive' and the card content has both type: 'AdaptiveCard' and version: '1.3' (or '1.2'). Test your adaptive card JSON at adaptivecards.io/designer before including it in the Edge Function.
1contentType: 'application/vnd.microsoft.card.adaptive'Webex webhook never fires even after registration
Cause: The targetUrl in the webhook registration is pointing to a non-deployed URL such as a Lovable preview URL, or the webhook was registered with a filter that excludes the test messages.
Solution: Verify the webhook is registered by calling GET https://webexapis.com/v1/webhooks to list all webhooks. Check that targetUrl is your deployed Edge Function URL (not a preview URL). If the URL is correct, verify the resource and event settings match the events you are generating.
Best practices
- Use a Webex Bot with a permanent token for production integrations — personal access tokens expire after 12 hours and break your integration without notice
- Filter out messages from your own bot in webhook handlers by checking if the sender's personEmail ends with @webex.bot to prevent processing loops
- Use adaptive cards for rich notifications — they render much better than plain text for structured data like order summaries, error reports, and alerts
- Register webhooks with a filter (e.g., roomId=specific_room) to reduce unnecessary webhook calls when the bot is in multiple spaces
- Store the Webex message ID returned by the API when posting notifications so you can update or delete the message later if needed
- Use markdown formatting for quick messages and adaptive cards for structured data — markdown supports bold, italic, code blocks, and bullet lists in Webex
- For enterprise deployments with Webex enterprise SSO, coordinate with the Cisco IT administrator to ensure your Bot is approved for the organization's Webex environment
Alternatives
Microsoft Teams is the better choice for organizations standardized on the Microsoft 365 ecosystem, where Teams is already the primary collaboration tool alongside Outlook and SharePoint.
Zoom is better for video-first applications where meeting creation and management is the primary feature rather than persistent messaging and enterprise collaboration workflows.
Slack has a native Lovable connector and a richer developer ecosystem for bot building, making it more accessible for startups and tech teams not in the Cisco enterprise environment.
Frequently asked questions
Does the Webex Bot token ever expire?
Webex Bot tokens do not have an expiration date — they remain valid until you explicitly regenerate them in the Webex Developer Portal. This makes Bots easier to manage than OAuth2 user tokens for backend integrations. However, if you regenerate the token (for security rotation), you must update WEBEX_BOT_TOKEN in Cloud → Secrets immediately.
Can I create meetings that appear on a specific user's Webex calendar?
Meetings created with a Bot token appear under the Bot's account, not a specific user's calendar. To create meetings on behalf of a real user, you need to implement the OAuth2 authorization code flow where that user grants your app permission. The resulting user access token (and refresh token) can then be used to create meetings associated with their account.
How do I send a Webex message to a direct message thread (not a Space)?
Use the toPersonEmail or toPersonId field instead of roomId in your message POST request. The Bot must first be connected to that person (they can initiate a 1:1 with the Bot by searching for its username in Webex). Direct message threads use the same Messages API endpoint.
Is Webex suitable for HIPAA-compliant healthcare applications?
Yes — Webex has HIPAA-compliant plans with Business Associate Agreement (BAA) support available through Cisco's enterprise licensing. However, configuring HIPAA compliance requires account-level settings in the Cisco admin portal, not something you can configure through the API. Consult your Cisco account representative for HIPAA-specific deployment guidance.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation