Providers

Webex meetings that follow your calendar events.

Set onlineMeetingService: "webex" on an event. Workwae schedules the meeting, writes the join link into the event, and keeps the two in step.

What Webex requires

An integration or an admin-authorized Service App.

These points are from Webex’s developer docs, as of October 2026.

Integrations for users

An OAuth integration acts for the signed-in user, with the scopes it requests. Meetings are scheduled as that user. Integrations

Service Apps for orgs

A Service App acts as a machine account in the customer’s org, so it does not depend on one user’s authorization. A Full Admin has to authorize it in Control Hub. Service Apps

Token pair

A Service App gets an access and refresh token pair for its machine account, and the refresh token keeps the access token fresh. Service Apps

What Workwae does

Scheduling follows the calendar.

Scopes it asks for

A user grant asks for meeting:schedules_write, meeting:schedules_read and spark:people_read. A Service App needs meeting:admin_schedule_write, meeting:admin_schedule_read and spark-admin:people_read.

Hosting order

The account’s own grant first, then the tenant’s Service App, hosting as the Webex user with the mailbox’s address. Register the Service App with its client secret and refresh token, then run POST /v1/meeting-apps/{appId}/test to verify it.

Duration and invitations

Webex meetings last at least 10 minutes and at most 23 hours 59 minutes, so Workwae clamps the event’s length to that range. Workwae asks Webex not to email attendees, because the calendar already sends the invitation.

Recurring series

Daily, weekly, monthly and yearly rules pass through. A monthly or yearly rule may carry one BYDAY, BYMONTHDAY or BYMONTH value; several are refused as meeting_recurrence_unsupported, as are RDATE and EXDATE.

SDK

Register a Service App, then schedule.

One Webex Service App can host for every mailbox in the organization. Meetings are a module that every plan offers; a workspace’s owner switches it on.

webex.tswebex.py
const app = await workwae.meetingApps.create({
  kind: "webex_service_app",
  name: "Acme Webex",
  clientId,
  clientSecret,
  refreshToken,
});

const { checks } = await workwae.meetingApps.test({
  appId: app.id,
  user: "priya@acme.com",
});
app = workwae.meeting_apps.create(
    kind="webex_service_app",
    name="Acme Webex",
    client_id=client_id,
    client_secret=client_secret,
    refresh_token=refresh_token,
)

result = workwae.meeting_apps.test(app_id=app.id, user="priya@acme.com")
checks = result.checks
FAQ

Questions teams ask.

User sign-in or Service App?

Use user grants when each person connects their own Webex. Use a Service App when an admin should host for everyone without per-user sign-in. A Service App applies only where the provider vouches for the mailbox address: Gmail, Microsoft 365, and IMAP accounts that signed in with Google or Microsoft.

What if there is no Webex user for the mailbox?

The event is refused with meeting_host_missing. Workwae looks users up by address, which needs the people read scope.

Does Workwae read Webex recordings or chat?

No. It only creates, updates and deletes meetings and looks up the host.

Zoom as well?

Yes, see Zoom. Both use the same onlineMeetingService field and the same connect and reauthorization flow.

Early access

Schedule Webex meetings from the same calendar call.

Tell us whether your customers use Webex integrations or Service Apps.