---
availability: INSTALLABLE
installation_asset_uuid: 7147bf72-4590-48fd-9e9a-ab9ecf4cd1cf
name: Cancel a Meeting
purple_chat_link: https://marketplace.moveworks.com/purple-chat?conversation=%7B%22messages%22%3A%5B%7B%22role%22%3A%22user%22%2C%22parts%22%3A%5B%7B%22richText%22%3A%22Cancel+my+meeting+with+Sarah+Miller+about+the+Q4+Roadmap+tomorrow.%22%7D%5D%7D%2C%7B%22role%22%3A%22assistant%22%2C%22parts%22%3A%5B%7B%22reasoningSteps%22%3A%5B%7B%22status%22%3A%22success%22%2C%22richText%22%3A%22%3Cp%3ESearching+for+calendar+events+with+%3Cb%3ESarah+Miller%3C%2Fb%3E+on+%3Cb%3EOutlook%3C%2Fb%3E...%3C%2Fp%3E%22%2C%22connectorName%22%3A%22outlook%22%7D%5D%7D%2C%7B%22richText%22%3A%22%3Cp%3EI+found+the+following+meeting+tomorrow%3A%3C%2Fp%3E%3Cul%3E%3Cli%3E%3Cstrong%3EEvent%3C%2Fstrong%3E%3A+Q4+Roadmap%3C%2Fli%3E%3Cli%3E%3Cstrong%3ETime%3C%2Fstrong%3E%3A+10%3A00+AM+-+10%3A30+AM%3C%2Fli%3E%3Cli%3E%3Cstrong%3EOrganizer%3C%2Fstrong%3E%3A+You%3C%2Fli%3E%3Cli%3E%3Cstrong%3EAttendees%3C%2Fstrong%3E%3A+Sarah+Miller%3C%2Fli%3E%3C%2Ful%3E%3Cp%3EAre+you+sure+you+want+to+cancel+this+event%3F%3C%2Fp%3E%22%7D%5D%7D%2C%7B%22role%22%3A%22user%22%2C%22parts%22%3A%5B%7B%22richText%22%3A%22Yes%2C+cancel+it%22%7D%5D%7D%2C%7B%22role%22%3A%22assistant%22%2C%22parts%22%3A%5B%7B%22reasoningSteps%22%3A%5B%7B%22status%22%3A%22success%22%2C%22richText%22%3A%22%3Cp%3ECancelling+the+meeting+in+%3Cb%3EOutlook%3C%2Fb%3E+and+notifying+attendees...%3C%2Fp%3E%22%2C%22connectorName%22%3A%22outlook%22%7D%5D%7D%2C%7B%22richText%22%3A%22%3Cp%3EI%27ve+cancelled+the+%3Cstrong%3EQ4+Roadmap%3C%2Fstrong%3E+meeting+and+removed+it+from+your+calendar.+Sarah+Miller+has+been+notified.%3C%2Fp%3E%22%7D%2C%7B%22citations%22%3A%5B%7B%22connectorName%22%3A%22outlook%22%2C%22citationTitle%22%3A%22Q4+Roadmap+Meeting+%28Cancelled%29%22%7D%5D%7D%5D%7D%5D%7D
solution_tags:
- HR - Other
- IT
- Productivity
- Sales
systems:
- outlook
description: Cancel a one-time or recurring meeting and notify attendees automatically.
---
## Description
Cancel meetings without opening Outlook — whether it's a one-time event, a single occurrence of a recurring series, or an entire recurring series. If you're not the organizer, the plugin can also notify the organizer on your behalf and ask them to cancel it.
## User Experience Preview
Please refer to the following [**Purple Chat**](https://marketplace.moveworks.com/purple-chat?conversation=%7B%22messages%22%3A%5B%7B%22role%22%3A%22user%22%2C%22parts%22%3A%5B%7B%22richText%22%3A%22Cancel+my+meeting+with+Sarah+Miller+about+the+Q4+Roadmap+tomorrow.%22%7D%5D%7D%2C%7B%22role%22%3A%22assistant%22%2C%22parts%22%3A%5B%7B%22reasoningSteps%22%3A%5B%7B%22status%22%3A%22success%22%2C%22richText%22%3A%22%3Cp%3ESearching+for+calendar+events+with+%3Cb%3ESarah+Miller%3C%2Fb%3E+on+%3Cb%3EOutlook%3C%2Fb%3E...%3C%2Fp%3E%22%2C%22connectorName%22%3A%22outlook%22%7D%5D%7D%2C%7B%22richText%22%3A%22%3Cp%3EI+found+the+following+meeting+tomorrow%3A%3C%2Fp%3E%3Cul%3E%3Cli%3E%3Cstrong%3EEvent%3C%2Fstrong%3E%3A+Q4+Roadmap%3C%2Fli%3E%3Cli%3E%3Cstrong%3ETime%3C%2Fstrong%3E%3A+10%3A00+AM+-+10%3A30+AM%3C%2Fli%3E%3Cli%3E%3Cstrong%3EOrganizer%3C%2Fstrong%3E%3A+You%3C%2Fli%3E%3Cli%3E%3Cstrong%3EAttendees%3C%2Fstrong%3E%3A+Sarah+Miller%3C%2Fli%3E%3C%2Ful%3E%3Cp%3EAre+you+sure+you+want+to+cancel+this+event%3F%3C%2Fp%3E%22%7D%5D%7D%2C%7B%22role%22%3A%22user%22%2C%22parts%22%3A%5B%7B%22richText%22%3A%22Yes%2C+cancel+it%22%7D%5D%7D%2C%7B%22role%22%3A%22assistant%22%2C%22parts%22%3A%5B%7B%22reasoningSteps%22%3A%5B%7B%22status%22%3A%22success%22%2C%22richText%22%3A%22%3Cp%3ECancelling+the+meeting+in+%3Cb%3EOutlook%3C%2Fb%3E+and+notifying+attendees...%3C%2Fp%3E%22%2C%22connectorName%22%3A%22outlook%22%7D%5D%7D%2C%7B%22richText%22%3A%22%3Cp%3EI%27ve+cancelled+the+%3Cstrong%3EQ4+Roadmap%3C%2Fstrong%3E+meeting+and+removed+it+from+your+calendar.+Sarah+Miller+has+been+notified.%3C%2Fp%3E%22%7D%2C%7B%22citations%22%3A%5B%7B%22connectorName%22%3A%22outlook%22%2C%22citationTitle%22%3A%22Q4+Roadmap+Meeting+%28Cancelled%29%22%7D%5D%7D%5D%7D%5D%7D) for a sample conversational experience between a user and the AI Assistant for this plugin.
## Prerequisites
Before installing and using the **Cancel a Meeting** plugin, ensure the following requirements are met.
### 1. Microsoft Graph Connector
This plugin requires an active **Microsoft Graph connector** configured with the OAuth 2.0 Authorization Code (User Consent Auth) flow.
- If you have not already set up the connector, follow the [**Microsoft Graph Connector Guide**](https://marketplace.moveworks.com/connectors/microsoft-graph#how-to-implement) before proceeding. Please follow the 'OAuth 2.0 with Authorization Code (User Consent Auth) Setup' section.
- The connector must be fully configured and tested before installing this plugin.
### 2. Plugin Installation
Once the connector is ready, follow the [**plugin installation documentation**](https://help.moveworks.com/docs/ai-agent-marketplace-installation) for steps on how to install and activate the plugin in Agent Studio.
### 3. Microsoft 365 System Requirements
### a. End User Permissions
To cancel meetings through this plugin, users must already have permission to cancel calendar events in Microsoft 365 — the same access required to cancel meetings through Outlook.
At a minimum, end users must have:
- A licensed Microsoft 365 account with an active Exchange Online mailbox
- Organizer access to the calendar event they wish to cancel
**Note:** If the user is not the organizer of the event, the plugin will warn them that cancelling will only remove the event from their own calendar and not notify other attendees. In this case, the plugin offers to notify the organizer on their behalf and request a cancellation instead.
### b. Timezone and Working Hours Configuration for End User
For event times to display correctly when selecting which event to cancel, each user must have their timezone configured in Outlook.
To configure timezone and working hours in Outlook:
1. Open **Outlook** and go to **Settings → View all Outlook settings → Calendar → View**.
2. Under **Time zone**, select your local timezone from the dropdown.
3. Under **Working hours**, set your working days and start/end times.

### c. API Permissions
The Microsoft Graph connector uses **delegated permissions** to cancel calendar events on behalf of the authenticated user. The following permissions are required for this plugin:
| Permission | Purpose |
| --- | --- |
| `Calendars.ReadWrite` | Read calendar events and submit cancellations on behalf of the user |
| `Place.Read.All` | Read room and location data associated with events |
| `User.Read` | Read the authenticated user's profile |
| `offline_access` | Maintain access via refresh tokens |
**Note:** This plugin does not grant new permissions. It operates within the calendar access already granted to the authenticated user in Microsoft 365.
## Implementation Details
This plugin handles several scenarios behind the scenes — from a simple one-time cancellation, to cancelling part of a recurring series, to notifying an organizer when the user doesn't own the event. The diagram below shows the high-level flow, followed by a breakdown of each API call involved.
### Visual Representation of How the Plugin Works

### API Details
This plugin uses up to five API calls depending on the scenario.
### API #1: Get User Timezone
Retrieves the authenticated user's timezone as configured in their Outlook mailbox settings. This ensures event times are displayed in the correct local timezone when selecting which event to cancel.
```bash
curl --request GET \
--url 'https://graph.microsoft.com/v1.0/me/mailboxSettings' \
--header 'Authorization: Bearer {{access_token}}' \
--header 'Content-Type: application/json'
```
**Key fields returned:**
- `timeZone` *(string)* — The user's configured timezone (e.g., `Pacific Standard Time`). Passed to API #2 to localize event results.
### API #2: Get Calendar Events for Time Range
Retrieves the user's calendar events within a specified time range so they can select which event to cancel.
```bash
curl --request GET \
--url 'https://graph.microsoft.com/v1.0/users/{{email}}/calendarView?startDateTime={{start_date_range}}&endDateTime={{end_date_range}}&$orderby=start/dateTime&$top=350' \
--header 'Authorization: Bearer {{access_token}}' \
--header 'Content-Type: application/json' \
--header 'Prefer: outlook.timezone="{{timezone}}"'
```
**Query Parameters:**
| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `startDateTime` | string | Yes | Start of the search window in ISO 8601 format with timezone offset. |
| `endDateTime` | string | Yes | End of the search window in ISO 8601 format with timezone offset. |
| `$top` | integer | Yes | Maximum number of events to return. Set to `350`. |
| `$orderby` | string | Yes | Sort results by start time ascending. |
### API #3: Get Event by ID
Retrieves the full details of a specific event by ID.
```bash
curl --request GET \
--url 'https://graph.microsoft.com/v1.0/me/events/{{event_id}}' \
--header 'Authorization: Bearer {{access_token}}' \
--header 'Content-Type: application/json'
```
### API #4: Cancel Event
Cancels the event and sends a cancellation notification to all attendees. For recurring events with `ALL_EVENTS`, the `seriesMasterId` is passed as the event ID to cancel the entire series.
```bash
curl --request POST \
--url 'https://graph.microsoft.com/v1.0/me/events/{{event_id}}/cancel' \
--header 'Authorization: Bearer {{access_token}}' \
--header 'Content-Type: application/json' \
--data '{
"comment": "{{reason_for_cancellation}}"
}'
```
**Request Body Parameters:**
| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `event_id` | string | Yes | The ID of the event to cancel. For `ALL_EVENTS`, the `seriesMasterId` is used. For `THIS_EVENT`, the specific occurrence ID is used. |
| `comment` | string | No | An optional cancellation message sent to all attendees. |
---
### API #5: Edit Meeting
For cancel a recurring meeting (from a date and onwards), the Microsoft Graph API does not have a native "cancel from this occurrence onwards" endpoint. Instead, the plugin truncates the series by updating the recurrence range end date on the series master to the day before the selected occurrence. This effectively ends the series at that point.
```bash
curl --request PATCH \
--url 'https://graph.microsoft.com/v1.0/me/events/{{series_master_id}}' \
--header 'Authorization: Bearer {{access_token}}' \
--header 'Content-Type: application/json' \
--data '{
"recurrence": {
"pattern": "{{recurrence_pattern}}",
"range": {
"type": "endDate",
"endDate": "{{day_before_selected_occurrence}}"
}
}
}'
```
**Key nuances:**
- This operation reshapes the series recurrence range — it does not call a cancel endpoint and does not send a cancellation notification to attendees.
Now that you understand how the plugin works under the hood, let's walk through what it can and can't do. We recommend reading both sections before going live to ensure the best experience for your users.
## What Is In Scope for This Plugin?
This plugin supports the following capabilities:
- Cancel a **one-time meeting** as the organizer, with a cancellation message sent to all attendees
- Cancel a **single occurrence** of a recurring meeting
- Cancel a recurring meeting from a **selected occurrence onwards**
- Cancel an **entire recurring series**
- **Notify the organizer** and request a cancellation when the authenticated user is not the organizer
- Include an optional **reason for cancellation** sent to all attendees
Now that you understand how the plugin works under the hood, let's walk through what it can and can't do. We recommend reading both sections before going live to ensure the best experience for your users.
## What Is Out of Scope for This Plugin?
This plugin does **not** support the following:
- Cancelling meetings on behalf of another user — cancellations are always submitted by the authenticated user
- Cancellation for recurring series with a fixed number of occurrences — the plugin will return an error. The user should cancel the full series and create a new one, or make the change directly in Outlook
- Rescheduling a meeting — handled by a separate plugin
- Removing a specific attendee from an event without cancelling the meeting