Webex Meeting to Outlook Calendar Sync
When a Webex meeting is scheduled or changed, the flow creates or updates a matching Outlook calendar event for the organizer (and optionally invitees) with the Webex join link, and posts the schedule to a Teams channel. Cancellations remove the event. Keeps Webex and Microsoft 365 calendars consistent for hybrid users.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
This flow keeps Webex meetings consistent with Microsoft 365 calendars. On a schedule it reads the organizer's upcoming Webex meetings and upserts a matching Outlook calendar event (with the Webex join link) into a target calendar, removes events for meetings that were cancelled, and posts a run summary to a Teams channel. A Dataverse ledger table holds the Webex↔Outlook event-id mapping so updates and deletes are reliable and re-runs never create duplicates.
Why it matters: Hybrid users who schedule in Webex but live in Outlook double-book or lose the join link. A governed sync gives one reliable schedule with the correct link, plus an auditable mapping table.
Implementation note: the Webex connector (shared_webex) is a messaging/spaces connector — it has no meetings API (no meeting trigger, no GetMeeting). Per the connector-first rule, when no connector operation exists the build falls back to the built-in HTTP action against the Webex REST meetings API (GET /v1/meetings). As a result the flow is a scheduled poll (Recurrence) rather than an event trigger. Outlook and Teams remain fully connector-first.
Use Case
Operations and general business users who create meetings in Webex want those meetings mirrored onto their Outlook calendar, automatically updated when rescheduled, and removed when cancelled — with the schedule surfaced in a Teams channel for visibility.
Flow Architecture
Recurrence
SchedulePolls every 30 minutes for the organizer's upcoming Webex meetings.
Initialize variables
Initialize VariableMint a guid() correlation id, bind the Webex base URL / sync window / Teams group / Teams channel env vars, and set synced/cancelled counters.
Get Webex Meetings
HTTP GET (Webex REST)Scheduled meetings in the sync window (Bearer token).
Apply to each Webex meeting
Foreach → ConditionFind the ledger row by Webex id; if new, create an Outlook event (V4CalendarPostItem) and a ledger row; otherwise update the event (V4CalendarPatchItem) and ledger row.
Cancellation sweep
Dataverse ListRecords + Foreach → Outlook CalendarDeleteItem_V2For each still-Synced ledger mapping whose Webex id is no longer scheduled, delete the mirrored Outlook event and mark the ledger row Cancelled.
Post Schedule To Teams
Teams PostMessageToConversationRun summary (synced/cancelled counts + correlation id).
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_WebexApiBaseUrl | String | https://webexapis.com/v1 | Webex REST API base URL. |
| flowlibs_WebexAccessToken | String | <configure> | Bearer token for the Webex REST API (meetings read scope). |
| flowlibs_TargetCalendar | String | Calendar | Outlook calendar id to mirror into. |
| flowlibs_SyncInvitees | String | false | Reserved — mirror to invitees too (see Customization). |
| flowlibs_SyncWindowDays | String | 14 | Days ahead to sync. |
| flowlibs_TeamsGroupId | String | <your-team-id> | Schedule channel target team (group) id. |
| flowlibs_TeamsChannelId | String | <your-channel-id> | Schedule channel target channel id. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Office 365 Outlook | shared_office365 | V4CalendarPostItem V4CalendarPatchItem CalendarDeleteItem_V2 |
| Microsoft Dataverse | shared_commondataserviceforapps | ListRecords CreateRecord UpdateRecord |
| Microsoft Teams | shared_teams | PostMessageToConversation |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Sync invitees
- Use flowlibs_SyncInvitees: when true, populate item/requiredAttendees on the Outlook create/update from the Webex invitees collection (semicolon-separated emails).
- Free/busy privacy
- Set item/showAs to Busy and replace the body/subject with a generic placeholder if mirroring to a shared calendar.
- Recurring meetings
- Switch the Webex query meetingType to meetingSeries and expand scheduledMeeting instances per occurrence; map Outlook recurrence accordingly.
- Reminders
- Set item/reminderMinutesBeforeStart + item/isReminderOn on the create/update.
- Poll cadence / window
- Adjust the Recurrence interval and flowlibs_SyncWindowDays.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Webex meetings query
Query scheduled meetings in the sync window.
EXPR.02Existing-mapping check (is new)
Branch create vs update.
EXPR.03Cancellation test
True when a synced meeting id is no longer scheduled.
EXPR.04Join link in event body
Embed the Webex join link in the Outlook event body.
EXPR.05Loop guard tag
Outlook event item/categories tag used as a loop guard.
Customize & download
Generate a ready-to-import copy of this solution with your environment-variable values baked in — available on Base, Pro, or Team.
Upgrade to customize
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.