- Home
- Resources
- Integrations
- Microsoft Outlook
Microsoft Outlook n8n integrationAutomate Microsoft Outlook with n8n.
Want every new email to start a workflow? The Microsoft Outlook n8n integration covers 38 operations across calendars, contacts, drafts, and events, and the Microsoft Outlook Trigger polls the mailbox for new messages. Ops teams and support desks use it to turn an inbox into an automation.
Verified Trustpilot reviews · AI, automation & growth agency
What does the Microsoft Outlook n8n integration unlock?
The Microsoft Outlook node lets n8n read, create, and update mail drafts, calendars, contacts, and events in a connected Outlook mailbox, while the Microsoft Outlook Trigger starts a workflow every time a new message arrives. Together they expose 38 operations across 8 resources, backed by one trigger event, so a workflow can react to a mailbox and change what is inside it without anyone opening Outlook.
A support team can watch a shared mailbox with the Microsoft Outlook Trigger, filter incoming messages by sender or subject, and use event.create to block a callback slot on the right calendar the moment a client asks for one, so no one has to re-read the inbox to catch the request.
A sales team that keeps its contacts in Google Sheets can push each new row into Outlook with contact.create, so a colleague who only works from Outlook, while someone else stays on Gmail, always sees the same address book without a manual export.
Outreach teams draft messages with draft.create, let a teammate review the wording inside Outlook, then trigger draft.send from n8n once the draft is approved, useful when a workflow assembles the text from a spreadsheet or a form but a human still needs to sign off before it goes out.
The 38 operations cover calendars, contacts, drafts, events, folders, messages, and attachments, but not every setting Microsoft Graph exposes for a mailbox. When an operation is missing, a mail rule for example, the HTTP Request node reuses the same Microsoft credential to call the Graph API directly.
The trigger has one limit worth planning around: it polls on a schedule instead of listening for a webhook, the address a tool calls by itself the moment something happens, so a new email takes up to the configured interval to reach the workflow. Teams that also route alerts through Slack or send transactional mail with SendGrid usually keep Outlook for what only Outlook can do, the mailbox itself, and hand the rest to a purpose-built node.
For a team still weighing the platform beyond Outlook, the n8n review covers how it holds up across the rest of its integrations.
How do you connect Microsoft Outlook to n8n?
- 01
Register an app in Azure
Open the Microsoft Application Registration Portal, select Register an application, name it, and set Supported account types to accounts in any organizational directory plus personal Microsoft accounts. Paste the OAuth Callback URL n8n shows into the Redirect URI field, choose the Web platform, then copy the Application (client) ID into n8n's Client ID field.
- 02
Generate a client secret
On the app's Certificates & secrets page, add a new client secret and give it a description such as n8n credential. Copy the Secret value shown right after creation, Azure only displays it once and hides it afterward, then paste it into n8n's Client Secret field before moving on to the next step.
- 03
Connect the mailbox
Back in the n8n credential, select the
Connect my accountbutton, sign in with the Microsoft account that owns the mailbox to automate, and approve the permissions Outlook asks for. n8n stores the connection and offers it in every Microsoft Outlook node from then on.
What does the Microsoft Outlook Trigger listen for?
Microsoft Outlook Trigger is the node that starts a workflow when something happens in Microsoft Outlook. It listens to 1 events, listed below by family. Pick one or several, activate the workflow: n8n registers the webhook on your Microsoft Outlook account.
What you see in n8n
Every event, by family
One row per object, one chip per action. The event to tick in the node is object.action; hover a chip to read exactly when it fires.
message.*1Configuration notes
01Trigger On
The Microsoft Outlook Trigger polls the mailbox on the interval set in Poll Times, as often as once a minute, and turns every new message it finds into one item, ready for the rest of the workflow. This is the configuration note: it does not fire on its own event, it decides which messages count as new and what the output item looks like.
Key parameters
- Output: Simplified by default, or a custom set of Fields to keep only the properties a workflow actually needs from each message.
- Filters: narrows what counts as new, by Sender (a name or address to match), Has Attachments, Read Status, or by choosing which Folders to Include or Folders to Exclude the trigger watches.
- Download Attachments: pulls the message's files into the output, under a field prefix set by Attachments Prefix, with an index starting at 0 appended to each file name.
02Message Received
The only event this trigger fires is messageReceived, one item per new message found in the watched folders since the last poll. Microsoft Outlook exposes a single event family here, unlike tools that split inbound mail into several separate events, so every filtering decision happens inside this one trigger instead of by picking a different event.
messageReceived item.What can the Microsoft Outlook node do?
The Microsoft Outlook node exposes 38 operations across 8 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Create | Get | Get Many | Update | Delete | Add | Download | Move | Reply | Send | Send and Wait for Response |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Calendar | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| Contact | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| Draft | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| Event | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| Folder | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| Folder Message | ✓ | ||||||||||
| Message | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| Message Attachment | ✓ | ✓ | ✓ | ✓ |
Operations index
Calendar
5 operationsCreate a calendar
calendar.createWhat you see in n8n
Notes & use cases
This operation adds a new calendar to the connected mailbox, separate from the default one, so a workflow can file events without touching what the person already has open.
Key parameters
- Name: the calendar's display name, for example
Client Calls. - Calendar Group: an optional group to file the new calendar under, and Color to tell it apart at a glance.
Delete a calendar
calendar.deleteWhat you see in n8n
Notes & use cases
This operation removes a calendar and every event scheduled on it, so it is worth confirming the target before this step runs.
Key parameters
- Calendar: the calendar to delete, picked from the list n8n loads from the mailbox, or supplied by ID, most often the expression
{{ $json.id }}, which reads that field from the item arriving in the node, here from an earliercalendar.getAll.
Get a calendar
calendar.getWhat you see in n8n
Notes & use cases
This operation retrieves a single calendar's details, its name, color, group, and whether it is the mailbox's default calendar, without listing the events inside it.
Key parameters
- Calendar: the calendar to read, chosen from the list or passed by ID, most often the value an earlier
calendar.getAllalready returned.
calendar.update to confirm the change stuck.Get many calendars
calendar.getAllWhat you see in n8n
Notes & use cases
A workflow that writes events to a specific calendar usually starts here: this operation returns every calendar in the mailbox to pick from.
Key parameters
- Return All: on, n8n fetches every calendar; off, it stops at Limit.
- Filter Query: an OData filter, only calendars that can be shared for example, to narrow the list before it reaches the rest of the workflow.
Update a calendar
calendar.updateWhat you see in n8n
Notes & use cases
This operation changes a calendar's name, color, or default status without recreating it, so existing events stay attached.
Key parameters
- Calendar: the calendar to change, picked from the list or given as an ID; nothing else in the node says which calendar receives the new values.
- Name and Color: the new display name and color, and Default Calendar to make it the mailbox's primary calendar.
Contact
5 operationsCreate a contact
contact.createWhat you see in n8n
Notes & use cases
Creating a contact saves a new person to the mailbox's address book, ready to appear as a suggestion the next time someone addresses an email. Only one field is required.
Key parameters
- First Name: the contact's given name, the only field this operation requires.
- Last Name, plus a handful of optional fields to round out the card: Email Address, Company Name, Job Title.
Delete a contact
contact.deleteWhat you see in n8n
Notes & use cases
Deleting a contact takes it out of the mailbox's address book for good. No step in the workflow brings it back.
Key parameters
- Contact: the contact to delete, picked from the list or supplied by ID, most often the value a previous
contact.getAllalready returned.
contact.getAll, so the address book stays current.Get a contact
contact.getWhat you see in n8n
Notes & use cases
This operation retrieves one contact's full card, every field n8n knows about, from job title to phone numbers.
Key parameters
- Contact: the contact to read, picked from the mailbox list or handed over as an ID by the step before.
- Output: Simplified by default, or Select Included Fields to pick only the ones the workflow needs, such as Email Addresses or Company Name.
Get many contacts
contact.getAllWhat you see in n8n
Notes & use cases
This operation lists contacts in the mailbox's address book, with the same field-selection options as contact.get.
Key parameters
- Return All: on, n8n fetches every contact; off, it stops at Limit.
- Filter Query and Email Address: narrow the list to contacts matching an OData filter or one of several email addresses, separated by commas.
Update a contact
contact.updateWhat you see in n8n
Notes & use cases
This operation edits an existing contact's card without recreating it, so its history and category tags stay intact.
Key parameters
- Contact: the contact to change, taken from the list or from the ID an earlier lookup returned.
- Update Fields: one line per field to overwrite, the same list as on creation, Job Title and Company Name after a promotion, Email Address after a domain change.
Draft
5 operationsCreate a draft
draft.createWhat you see in n8n
Notes & use cases
This operation writes a new email without sending it, ready for a person, or a later step in the workflow, to review first.
Key parameters
- Subject and Message: the draft's subject line and body content.
- To, CC Recipients, and BCC Recipients: comma-separated recipient lists, plus Attachments to attach files.
Delete a draft
draft.deleteWhat you see in n8n
Notes & use cases
Deleting a draft clears it from the mailbox for good, whether n8n created it or a person did, and it cannot be recovered afterward.
Key parameters
- Draft: the draft to delete, picked from the list or supplied by ID, most often the value
draft.createreturned earlier in the same workflow.
Get a draft
draft.getWhat you see in n8n
Notes & use cases
Reading a draft returns its current content, recipients, subject, and body included, before it goes any further in a review or send step.
Key parameters
- Draft: the draft to read, chosen from the list or supplied by ID.
- Output and Fields: keep the full record or select only fields such as toRecipients or bodyPreview, and Download Attachments to pull its files into the output as well.
draft.send to release it.Send a draft
draft.sendWhat you see in n8n
Notes & use cases
This operation sends an existing draft as-is, the last step of a create-review-send sequence built earlier in the workflow.
Key parameters
- Draft: the draft to send, usually the ID
draft.createreturned earlier in the same run. - To: an optional comma-separated recipient list that overrides the one already on the draft.
Update a draft
draft.updateWhat you see in n8n
Notes & use cases
This operation edits a draft already sitting in the mailbox, its text or recipients, without starting over.
Key parameters
- Draft: the draft to change, taken from the list or from the ID kept earlier in the run.
- Subject, Message, To Recipients: the fields to overwrite, filed under Update Fields alongside Is Read to mark it read or unread.
draft.send releases it.Event
5 operationsCreate an event
event.createWhat you see in n8n
Notes & use cases
This operation books a new event on a calendar, from a quick reminder to a full meeting with attendees.
Key parameters
- Calendar, Title, Start, and End: the four fields this operation requires, most often filled with values such as
{{ $json.startDateTime }}coming from an earlier step. - Attendees and Location: optional fields to invite people and set where the event happens.
Delete an event
event.deleteWhat you see in n8n
Notes & use cases
This operation removes an event from a calendar. The cancellation reaches the mailbox owner and every attendee who had the slot on their own calendar.
Key parameters
- Calendar and Event: the calendar the event lives on and the event to remove, most often the ID an earlier
event.createorevent.getAllreturned.
Get an event
event.getWhat you see in n8n
Notes & use cases
Reading an event returns its full details, time, location, organizer, and who is attending, useful right before a workflow needs to act on that specific meeting.
Key parameters
- Calendar and Event: which calendar and which event to read, most often supplied by the ID an earlier
event.getAllreturned. - Output: Simplified by default, or Select Included Fields to keep only fields such as Attendees or Start.
Get many events
event.getAllWhat you see in n8n
Notes & use cases
This operation lists events on a calendar within a date range, the base for any reporting or reminder workflow.
Key parameters
- Calendar, Start Date, and End Date: the three fields this operation requires.
- Return All and Limit: return every event in range or stop at a fixed count, and Include Recurring Event Instances to expand a recurring meeting into each occurrence; left off, the series comes back as one master event and the weekly slots stay invisible.
Update an event
event.updateWhat you see in n8n
Notes & use cases
This operation changes an existing event, its time to its attendee list, without canceling and recreating it.
Key parameters
- Calendar and Event: which event to change.
- Start, End, Attendees: the fields most often updated, filed under Additional Fields alongside Show As to mark the slot busy, free, or tentative. The attendee list sent on an update replaces the existing one in full, so a workflow adding one person has to send all the others again.
Folder
5 operationsCreate a folder
folder.createWhat you see in n8n
Notes & use cases
n8n creates a new mail folder at the root of the connected mailbox, and returns its Microsoft Graph folder ID for later steps.
Key parameters
- Name: the folder's display name, for example
Invoices 2026. - Parent Folder: optional, nests the new folder under an existing one instead of the mailbox root.
Delete a folder
folder.deleteWhat you see in n8n
Notes & use cases
This operation takes an existing mail folder out of the connected mailbox.
Key parameters
- Folder: identifies the folder to delete, usually filled with
{{ $json.id }}from an earlierfolder.getAllorfolder.createstep.
folder.getAll right before this step makes it easy to confirm which folder gets removed.Get a folder
folder.getWhat you see in n8n
Notes & use cases
This operation reads the details of one mail folder, such as its name and item counts.
Key parameters
- Folder: points to the folder to read, typically
{{ $json.id }}from a previous step. - Fields: limits the response to the properties actually read further down, Unread Item Count to fire an alert, Total Item Count to watch a folder grow.
Get many folders
folder.getAllWhat you see in n8n
Notes & use cases
n8n lists the mail folders in the mailbox, or only those under one parent folder when a search scope is set.
Key parameters
- Return All: on, n8n lists every folder in the mailbox; off, it stops at Limit.
- Filter Query: a raw query such as
displayName eq 'My Folder'to match one folder by name. - Parent Folder: restricts the search to the child folders of one folder instead of the whole mailbox.
Update a folder
folder.updateWhat you see in n8n
Notes & use cases
Renaming an existing mail folder is what this operation does. Both fields are required here, the folder and the new name, so an update with an empty name stops the node instead of clearing the label.
Key parameters
- Folder: the folder to rename, usually
{{ $json.id }}from a previous step. - Name: the new display name applied to the folder.
To Sort to Archived 2026 once a workflow has processed its content, so the mailbox stays organized without a manual rename.Folder Message
1 operationGet many folder messages
folderMessage.getAllWhat you see in n8n
Notes & use cases
The messages inside one specific mail folder come back with this operation, instead of the whole mailbox.
Key parameters
- Folder: the folder to read, for example a shared
Supportfolder identified by{{ $json.id }}. - Return All: on, n8n walks the whole folder; off, it stops at Limit.
- Search: filters on a keyword matched across the sender, subject and body of each message.
- Download Attachments: adds each message's attachments to the output as binary data.
Message
8 operationsDelete a message
message.deleteWhat you see in n8n
Notes & use cases
Deleting a message pulls it out of the connected mailbox. No Folder field appears here, so the same step works wherever the message currently sits.
Key parameters
- Message: identifies the message to remove, usually
{{ $json.id }}from the trigger or amessage.getAllstep.
Get a message
message.getWhat you see in n8n
Notes & use cases
Reading a message in full is the job of this operation.
Key parameters
- Message: points to the message to read, typically
{{ $json.id }}from the trigger. - Output: Simplified keeps the common fields, Select Included Fields narrows the response to the chosen Fields, Raw returns the full Graph API object.
- Download Attachments: includes the message's attachments as binary data in the output.
Get many messages
message.getAllWhat you see in n8n
Notes & use cases
n8n lists and searches messages across the whole mailbox, not limited to one folder.
Key parameters
- Return All: on, n8n keeps paging until every match is in; off, it stops at Limit.
- Search: a keyword matched by default against the sender, subject and body.
- Filters: narrows results with structured conditions instead of a free-text search.
Move a message
message.moveWhat you see in n8n
Notes & use cases
Moving a message into a different folder is what this operation handles.
Key parameters
- Message: the message to move, usually
{{ $json.id }}from the trigger. - Parent Folder: the destination folder, for example one created earlier with
folder.create.
Invoices folder right after it is processed. The message keeps the same identifier after the move, so a later step can still reference it with the same {{ $json.id }} expression.Reply to a message
message.replyWhat you see in n8n
Notes & use cases
This operation replies to an existing message, keeping it in the same conversation thread.
Key parameters
- Message: the message being answered, usually
{{ $json.id }}from the trigger. - Reply to Sender Only: off, the reply also goes to every other recipient of the original message.
- Save as Draft: on, n8n creates the reply as a draft instead of sending it right away.
Send a message
message.sendWhat you see in n8n
Notes & use cases
Sending a new message from the connected mailbox is the function of this operation.
Key parameters
- To: a comma-separated list of recipient email addresses.
- Attachments: attaches binary data from a previous step, for example a generated report.
- From: the mailbox the message leaves from, and it has to be the mailbox the credential actually opens, not any address the workflow fancies.
- Save To Sent Items: off, the message goes out without leaving a copy in Sent Items.
Send message and wait for response
message.sendAndWaitWhat you see in n8n
Notes & use cases
Sending a message here puts the workflow on hold until the recipient answers.
Key parameters
- Subject: the email subject, for example
Approval required. - Response Type: Approval adds approve or disapprove buttons inside the message, while Free Text and Custom Form send the recipient to a form instead.
- Append n8n Attribution: on, the message ends with the line saying it was sent automatically with n8n, worth switching off before it reaches a client.
- Limit Wait Time: optional, stops the wait after a set duration instead of blocking the workflow indefinitely.
Update a message
message.updateWhat you see in n8n
Notes & use cases
Editing the properties of an existing message, without sending it again, is what this operation allows.
Key parameters
- Message: the message to update, usually
{{ $json.id }}from the trigger. - Is Read: marks the message as read or unread.
- Category Names or IDs: applies one or more Outlook categories to the message.
Message Attachment
4 operationsAdd an attachment
messageAttachment.addWhat you see in n8n
Notes & use cases
An attachment gets added to an existing message with this operation.
Key parameters
- Message: the message to attach the file to, usually a draft created earlier in the workflow.
- Input Data Field Name: the binary field holding the file, for example
datafrom a previous node. - File Name: optional, overrides the name taken from the binary property.
Download an attachment
messageAttachment.downloadWhat you see in n8n
Notes & use cases
This operation downloads one attachment from a message as binary data.
Key parameters
- Message: the message that holds the attachment.
- Attachment: the specific attachment to download, usually
{{ $json.id }}from an earliermessageAttachment.getAllstep. - Put Output in Field: the binary field name used to store the downloaded file.
Get an attachment
messageAttachment.getWhat you see in n8n
Notes & use cases
n8n retrieves an attachment's metadata without downloading its content.
Key parameters
- Attachment: identifies the attachment to read, usually
{{ $json.id }}from an earliermessageAttachment.getAllstep. - Fields: limits the response to chosen properties, for example Name or Size.
messageAttachment.download should pull it in a later step, which keeps a workflow from moving large files it never reads.Get many attachments
messageAttachment.getAllWhat you see in n8n
Notes & use cases
Every attachment on one message shows up here, ready to filter before a download.
Key parameters
- Message: the message to inspect, usually
{{ $json.id }}from the trigger. - Return All: on, n8n lists every attachment on the message; off, it stops at Limit.
- Fields: keeps only the properties the next step reads, instead of the full record of each attachment.
Need help automating Microsoft Outlook with n8n?
A person reads every message.
Microsoft Outlook and n8n: frequently asked questions
01Is the Microsoft Outlook integration free in n8n?
02What credentials or rights does the Microsoft Outlook node need?
03What are the limits of the Microsoft Outlook n8n integration?
04Does the Microsoft Outlook Trigger fire in real time?
05n8n or Make for Microsoft Outlook automation?
Get our weekly integration tips.
No spam. Unsubscribe anytime.



