Send, search and organize email, and manage calendar events and contacts, in a Microsoft 365 or Outlook.com account from any Windmill script, flow or app.
Set up in 2 steps
Connect from the Resources page
Open Resources, click Add a resource/API and pick Outlook under Instance-configured OAuth APIs. Click Connect and sign in with the Microsoft account that owns the mailbox, then name the resource and save it.
Run your first script
Fork the send email script below, or any mail, calendar or contact script.
Scripts
Building blocks, if none of the projects above fit. Fork one, run it, or call it as a step inside your own flow.
New Email
Modify Email
Update Calendar Event
Update Contact
Send Email
Send Draft
Search People
Respond to Event
Reply to Email
Move Email to Folder
List Time Zones
Find Emails
List Folders
List Events
List Event Instances
Find Contacts
List Categories
List Calendars
List Attachments
Get Free/Busy Schedule
Get Message
Get Folder
Get Event
Get Current User
Find Meeting Times
Download Attachment
Delete Calendar Event
Create Calendar Event
Create Draft Reply
Create Draft Email
Trigger flows from Microsoft Outlook
Microsoft Outlook is not only a destination. These inbound paths are supported today.
New email (scheduled poll)
In a flow, add a trigger, choose Scheduled Poll, pick the New Email script and an interval. Each run emits the messages that arrived in the chosen folder since the previous one.
Resource type
The shape of the credential every script on this page expects.
ms_outlook
View raw schema →| Field | Type | Required | What it is |
|---|---|---|---|
| token | string | Yes | Microsoft Graph access token. Filled in and refreshed by Windmill when you connect with OAuth. |
Questions
A script fails on a missing permission
Each script's description names the permission it needs. The default covers your own mail, calendar and contacts; categories, people search, meeting times and shared mailboxes (a Shared permission such as Mail.Send.Shared) are extra. Tick it when connecting, or reconnect an existing resource.
Can scripts act on a shared mailbox?
Yes. Mail scripts take an optional mailbox argument, the address or id of a mailbox the connected account has been granted access to.
Does it work with a personal Outlook.com account?
Mail, calendar and contacts do, when the Entra app allows personal accounts and the tenant is set to common. Find meeting times is only available to work or school accounts.
There is no Connect button on my instance
An instance admin registers an app in Microsoft Entra ID with the redirect URI <your instance>/oauth/callback/ms_outlook, then adds Outlook under Instance settings → Auth/OAuth/SAML → OAuth with its client id, secret and tenant. The tenant is set once for the whole instance, and one Entra app can serve Outlook, OneDrive, SharePoint and Excel.