Outlook Calendar
Put an Outlook calendar in a flow: book, move and find meetings, answer invitations and find free time with the action node, and fire a flow when an event is created, changed or cancelled with the trigger. The action node can also be handed to an AI Node as an AI toolkit.
Connect a calendar
Click Connect Outlook Calendar — in the node's credential picker or in Settings → Credentials — and sign in with Microsoft. A personal account (outlook.com, hotmail.com, live.com) and a work or school account both work. Microsoft asks you to allow HostWebhook to read, create and change the account's calendar events. One credential is one account, with all its calendars.
- Work accounts whose organization requires an administrator to approve new apps show a request screen instead: an admin approves HostWebhook once, in Microsoft Entra.
- Revoking. Remove HostWebhook from
account.microsoft.com→ Privacy → Apps and services (personal) ormyapps.microsoft.com(work), and the credential stops working; Reconnect it from Settings → Credentials.
The action node
Ten operations, in four groups.
| Group | Operation | What it does | Calendar |
|---|---|---|---|
| Events | Create event | In a calendar of yours. With attendees, Outlook sends them the invitation. | writes |
| Events | Update event | Only the fields you fill in change; attendees, if given, replace the list. | writes |
| Events | Get event | One event whole: when, where, who is invited and how each answered. | reads |
| Events | Find events | Between two dates, earliest first — repeating events as each occurrence. | reads |
| Invitations | Respond to invitation | Accept, tentatively accept or decline, with a note if you like. | writes |
| Invitations | Cancel meeting | One you organize: it leaves your calendar and the attendees get the cancellation. | notifies |
| Invitations | Delete event | Removed from your calendar. Attendees are not told. | deletes |
| Availability | Find free slots | The free windows between two dates, long enough for a meeting, across one or more calendars. | reads |
| Calendars | List calendars | With their IDs — which one is the default and which you can edit. | reads |
| Calendars | Create calendar | A new calendar in your account. | writes |
Every field takes a template: {{payload.email}} from a form, {{payload.id}} for the event that fired the Outlook Calendar trigger. Attendees are comma-separated addresses.
Picking a calendar
Wherever a calendar is asked for, you pick it from the account's own list — the default one is marked, and so are the ones shared with you that you can only read. Left empty, the default calendar is used. Refresh reloads the list after you create one in Outlook. To take it from the flow instead, choose Type an ID or a template under the list.
Dates, times and time zones
Write a date and time as 2026-10-01T09:00 — or pick it from the calendar next to the field. It is read in the node's Time zone, which starts as your workspace's; a time that already carries its offset (…-06:00, …Z) keeps it. With All day on, Starts and Ends are just dates, and Ends is the last day the event covers.
Everything the node returns comes back in that same zone, with its offset — 2026-10-01T09:00:00-06:00 — and an all-day event as its dates.
Invitations and cancelling
Cancel meeting is for a meeting you organize: the attendees get the cancellation, with your note. Delete event just removes it from your calendar, without telling anyone.
Finding free time
Find free slots looks at one or more calendars between two dates (up to 62 days apart) and returns the windows with nothing busy in them, at least Duration long (30 minutes by default). Events shown as free and cancelled ones don't count as busy.
AI toolkit mode
Once the calendar is connected, the node asks for a Mode. AI toolkit turns it into ten tools that an AI Node — or an MCP client, through one of your MCP servers — calls by name.
| Tool | Arguments |
|---|---|
| create_outlook_event | calendar_id? · subject · start · end · time_zone? · all_day? · body? · location? · attendees? · online_meeting? · … |
| update_outlook_event | event_id · subject? · start? · end? · time_zone? · location? · attendees? · … |
| get_outlook_event | event_id · body_format? |
| find_outlook_events | calendar_id? · from? · to? · time_zone? · search? · max_results? · include_body? |
| respond_to_outlook_event | event_id · response · comment? · send_response? |
| cancel_outlook_event | event_id · comment? |
| delete_outlook_event | event_id |
| find_outlook_free_slots | calendar_ids? · from · to · duration_minutes? · time_zone? |
| list_outlook_calendars | max_results? |
| create_outlook_calendar | name |
What you control
- Cancelling and deleting start blocked. Unblock
cancel_outlook_eventordelete_outlook_eventin the node's tool list if the agent should have them. Any other tool can be blocked the same way — creating events, for an agent that should only read the agenda. - Times. A time the model writes without an offset is read in the workspace time zone, and results come back in it.
- Characters per call sent to the model. 20,000 by default. Lists that don't fit are cut whole events at a time, with a
notesfield saying how many were left out.
Testing a tool
operation in their payload that names another tool is refused.{ "operation": "find_outlook_free_slots", "from": "2026-10-01T09:00", "to": "2026-10-03T18:00", "duration_minutes": 45 }The trigger
Pick an Outlook Calendar credential, then what fires it and the calendar to watch, from the account's list:
- Event created — a new event, or an invitation that arrives.
- Event updated — its time, place, attendees, their answers, its description… A change you can't see, like dismissing a reminder, doesn't fire it.
- Event cancelled or deleted — a meeting its organizer cancelled, or an event removed from the calendar.
- Any change — all three.
Optionally, only events whose subject contains something (upper or lower case).
Activating subscribes to the account with Microsoft. Each notification carries a secret that belongs to this trigger, and HostWebhook checks it before reading anything; events from the account's other calendars are ignored without being read. Each state of an event is delivered once, even when Microsoft sends several notifications for it. Deactivating deletes the subscription.
What the trigger sends downstream
The same event the action node's Get event returns, with what changed and the calendar in front — a flow reads {{payload.start}} the same way from either. Times are in the workspace time zone:
{
"event": "created",
"service": "outlook_calendar",
"deleted": false,
"calendarId": "AAMkAGI2…",
"calendar": "Calendar",
"id": "AAMkAGI2TG93AAABEgAQAAk=",
"subject": "Interview — Sam Rivera",
"start": "2026-10-01T09:00:00-06:00",
"end": "2026-10-01T09:45:00-06:00",
"isAllDay": false,
"timeZone": "America/Mexico_City",
"location": "Room 4B",
"organizer": { "name": "Ana García", "address": "ana@example.com" },
"attendees": [
{ "name": "Sam Rivera", "address": "sam@example.com", "type": "required", "response": "accepted" }
],
"isCancelled": false,
"isOnlineMeeting": true,
"onlineMeetingUrl": "https://teams.microsoft.com/l/meetup-join/…",
"preview": "Second-round interview for the backend role.",
"body": "<html>…</html>",
"webLink": "https://outlook.live.com/owa/?itemid=…"
}A deleted event arrives as cancelled with deleted: true. Microsoft only tells its ID, so the subject and times are the ones HostWebhook last knew — it remembers the calendar's upcoming events from the moment you activate, and every event it sees change. An event deleted before HostWebhook ever saw it isn't reported.
Answer it, move it or cancel it with the action node using {{payload.id}}.
Trying it out
The trigger's Test push reads the latest changed events of the calendar, applies your filters, and shows them exactly as a delivery will arrive — without running the flow. To see a real one, activate the trigger and create an event in that calendar: Microsoft usually notifies within seconds.
Good to know
Busy or throttled
Microsoft limits how fast one account can be called. When it answers that it is busy, the node waits the time it asks for (up to ten seconds) and tries once more before giving up with Microsoft's message.
Repeating events
Find events returns each occurrence of a repeating event on its own, with the series' ID in seriesMasterId. Updating, cancelling or deleting the series' ID changes the whole series; an occurrence's ID, just that one.