Skip to content

Find an Outlook slot ​

Reads your calendar availability and lists the free slots within your working hours.

This node reads the availability of the member running the workflow in Outlook and lists the free slots within working hours. Use it to propose real slots in a reply drafted by Compose (AI), or to book the first free slot directly with Create an Outlook event.

It needs the calendar access of a Microsoft account, shown as the Calendar capability in Connections. See Microsoft. For Google Calendar, use Calendar — find free slots.

At a glance ​

  • Type: outlook_calendar.find_free · version 1
  • Category: Actions
  • Kind: Step — one stage of a run
  • Effect: No external effect (none) — nothing is written outside Mankomail; safe to replay
  • Needs a carrier email: No
  • Connection: Microsoft (capability calendar)
  • Inputs: main
  • Outputs: main

Connection ​

This node needs a Microsoft connection with the calendar capability granted.

Parameters ​

credential ​

Microsoft account — The account whose calendar is used. Connect it from Connections; the token is resolved by the server.

  • Type: Connection (credential)
  • Required: No
  • Default: "" (empty)

from ​

From — ISO date. Left empty: now.

  • Type: Text (string)
  • Required: No
  • Default: "" (empty)
  • 64 characters at most
  • Example: 2026-04-02T00:00:00
  • Expressions: {{ }} accepted

to ​

To — ISO date. Left empty: seven days after the start.

  • Type: Text (string)
  • Required: No
  • Default: "" (empty)
  • 64 characters at most
  • Example: 2026-04-09T00:00:00
  • Expressions: {{ }} accepted

slotMinutes ​

Slot length (minutes)

  • Type: Number (number)
  • Required: No
  • Default: 30
  • Whole number, from 5 to 480

workStartHour ​

Working hours start — Local hour in the time zone below.

  • Type: Number (number)
  • Required: No
  • Default: 9
  • Whole number, from 0 to 23

workEndHour ​

Working hours end

  • Type: Number (number)
  • Required: No
  • Default: 18
  • Whole number, from 1 to 24

includeWeekend ​

Include weekends

  • Type: Yes / no (boolean)
  • Required: No
  • Default: false

timeZone ​

Time zone — IANA name (Europe/Paris, America/Montreal). It is what gives the typed hours their meaning.

  • Type: Text (string)
  • Required: No
  • Default: Europe/Paris
  • 80 characters at most
  • Expressions: {{ }} accepted

maxSlots ​

Slots to propose

  • Type: Number (number)
  • Required: No
  • Default: 10
  • Whole number, from 1 to 50

Outputs ​

  • main

Data produced ​

What this node adds to the run data, and how to read it in an expression. <step> stands for the step key: the node name turned into an identifier (see Data and expressions).

  • {{ data.<step>.slots }} — array of { start, end }. The free slots, in chronological order. start and end are local date-times in the node's Time zone, without zone suffix (2026-04-14T10:00:00): the format Create an Outlook event expects.
  • {{ data.<step>.first }} — object { start, end }. The first free slot, the same as slots.0. Absent when no slot was found.
  • {{ data.<step>.first.start }} — string. The start of the first free slot, to plug into Create an Outlook event or quote in a reply.
  • {{ data.<step>.count }} — number. The number of slots returned. 0 when nothing is free in the window.
  • {{ data.<step>.summary }} — string. A readable sentence giving the number of slots and the first one.

Example ​

A client asks for a call "next week". The node is named Slots:

from: 2026-04-13T00:00:00
to: 2026-04-18T00:00:00
slotMinutes: 30
workStartHour: 9
workEndHour: 18
includeWeekend: false
timeZone: Europe/Paris
maxSlots: 3

If Monday is busy until 10:00, the step data reads:

json
{
  "slots": [
    { "start": "2026-04-13T10:00:00", "end": "2026-04-13T10:30:00" },
    { "start": "2026-04-13T10:30:00", "end": "2026-04-13T11:00:00" },
    { "start": "2026-04-13T11:00:00", "end": "2026-04-13T11:30:00" }
  ],
  "first": { "start": "2026-04-13T10:00:00", "end": "2026-04-13T10:30:00" },
  "count": 3
}

The times are Paris time. A Create an Outlook event step with the same time zone can take {{ data.slots.first.start }} and {{ data.slots.first.end }} as is.

Tips ​

  • Window. From and To are ISO dates. Without a zone suffix they are read in the Time zone field; with one (Z, +02:00) they are taken as is. From left empty means now, and a From in the past is moved to now: a slot that has already started is never offered. To left empty means seven days after the start. The window is capped at 62 days.
  • Working hours and days. Working hours start and end are whole local hours (9 and 18 by default); a slot is only offered if it starts and ends within them. End must be after start, otherwise the step fails with node_invalid_param. Monday to Friday only, unless Include weekends is on.
  • What counts as free. Only time marked free in Outlook. Tentative, busy, away and out-of-office time are all treated as taken.
  • How slots are cut. Slots have the length of Slot length (5 to 480 minutes, 30 by default) and are aligned on multiples of that length counted in UTC: with 30 minutes, slots start on the hour or the half hour. Slots to propose is between 1 and 50, 10 by default.
  • Calendar. The availability is read from the free/busy schedule of the connected account's mailbox, that is its default calendar: Outlook computes no availability for a secondary calendar, so the node does not offer to pick one.
  • Time zone. IANA name (Europe/Paris by default). An unknown time zone fails with microsoft.rejected.
  • Test runs. Reading availability changes nothing: in test runs the node really queries Outlook and returns real slots.
  • Errors. credential.capability_missing: the Outlook calendar is not connected for the member running the workflow. microsoft.rejected: unknown time zone, a window that ends before it starts, an account exposing no address, or a calendar Outlook could not read. microsoft.access_denied: reconnect the account. microsoft.unavailable is retried automatically. See Error handling.