- Home
- Resources
- Integrations
- Microsoft Teams
Microsoft Teams n8n integrationAutomate Microsoft Teams with n8n.
Your team already lives in Teams, so that is where the workflow should speak. The Microsoft Teams n8n integration covers 16 operations across 4 resources: channels, channel messages, chat messages and tasks. The trigger listens to 5 events, so a posted message can start a run. Written for whoever wires it today.
Verified Trustpilot reviews · AI, automation & growth agency
What does the Microsoft Teams n8n integration actually cover?
Two nodes ship with n8n. The Microsoft Teams node calls the Microsoft Graph API on your behalf and exposes 16 operations over 4 resources: channels, channel messages, chat messages and tasks. The Microsoft Teams Trigger node registers a webhook, an URL that Microsoft calls whenever something happens, and starts a workflow on any of its 5 events. Both sit behind the same Microsoft credential, so you authenticate once and reuse it.
The first pattern is notification that carries context. A workflow reads a row, a ticket or a payment somewhere else, formats a short summary, then runs channelMessage.create with Content Type set to HTML so the message has bold text and a link. Because the same credential works across Microsoft nodes, the data can come from anywhere: a Google Sheets row, a Gmail thread, a form.
The second pattern is a conversation loop. The trigger fires on newChannelMessage, the workflow decides what to do with the text, and the reply goes back into the same thread through the Reply to ID option. Teams becomes the interface, n8n does the work behind it. Teams that run the same loop on Slack or Discord will recognize the shape, with Microsoft identifiers instead.
The third pattern is task follow-up. task.create files a task in a plan and a bucket, task.getAll reads back what is open, and task.update pushes Percent Complete to 100 when the automated part is finished. A weekly run can pull the plan, count what is late and post the result in a channel, which is the same two operations used in a different order.
Where the node stops, HTTP Request continues. The node exposes channels, channel messages, chat messages and tasks; anything else in the Graph API needs the HTTP Request node, which reuses your Microsoft credential through its predefined authentication, so you do not build a second connection. Two other limits are worth knowing before you design: reading lists is paginated, and the Service Principal credential has no signed-in user, so the operations that act as one are not available with it.
The honest caveat: the node speaks the language of Microsoft identifiers. A team is a groupId, a channel is a threadId, a chat ID sits in the conversation URL. The resource locator lets you pick from a list instead of typing them, and that is what most people do in the editor. If you want a guided run through this and the rest of n8n, the n8n training covers it, and the n8n review compares n8n with the alternatives.
How do you connect Microsoft Teams to n8n?
- 01
Register an app with Microsoft
You need a Microsoft Azure account with access to Teams. In the Microsoft Application Registration Portal, select Register an application, name it, and in Supported account types pick any organizational directory plus personal Microsoft accounts. Copy the OAuth Callback URL from your n8n credential into Redirect URI, with the platform set to Web. Then copy the Application (client) ID into the n8n field Client ID.
- 02
Generate the client secret
On the application page, open Certificates and secrets, select New client secret, describe it, then add it. Copy the string in the Value column, not the secret ID, and paste it into Client Secret in n8n. Select Connect my account, sign in with your Microsoft account and allow the app to access your info. The credential is stored once under the Credentials menu and every Teams node in every workflow can pick it from its dropdown.
- 03
Pick the authentication option in the node
The node offers three choices under Authentication. Teams OAuth2 is the default and its scopes cover every resource on the node, including
Chat.ReadWrite. Microsoft OAuth2 (Graph) is the generic Graph credential you can reuse across other Microsoft nodes, and you grant it the scopes this node needs. Service Principal (App-Only) uses a Microsoft Entra app registration with no signed-in user.
What starts a workflow from Microsoft Teams ?
Microsoft Teams Trigger is the node that starts a workflow when something happens in Microsoft Teams. It listens to 5 events, listed below by family. Pick one or several, activate the workflow: n8n registers the webhook on your Microsoft Teams 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.
new.*5Configuration notes
01Set Up the Microsoft Teams Trigger
The trigger node picks what it listens to in Trigger On, then narrows the scope with the fields that match the event. Activating the workflow registers the webhook with Microsoft, so events arrive within seconds and nothing is polled on a schedule.
Key parameters
- Trigger On: the event the node waits for, one of the 5 available.
- Watch All Teams: on, the node reacts anywhere it can see; off, the Team field appears and you pick a single team from the list, by URL or by ID.
- Watch All Channels and Watch All Chats: same logic for the Channel and Chat fields.
02New Channel Message and Channel Events
Three of the 5 events live on the team side: a channel is created, a message is posted to a channel, a member joins a team. They carry the objects your workflow needs next, which is why they pair naturally with the channel operations of the node.
Key parameters
- New Channel Message (
newChannelMessage): fires when a message is posted to a channel; keep Watch All Channels off and set Channel when only one channel should wake the workflow. - New Channel (
newChannel): fires when a new channel is created in the watched team. - New Team Member (
newTeamMember): fires when a member is added to a team, scoped by Team.
newTeamMember, routing or summarizing on newChannelMessage. One trigger node listens to one event, so a second workflow covers the next event without touching the first, and both keep working off the same Microsoft credential.03New Chat and New Chat Message
The other two events sit in private conversations rather than in channels. Scope them with Watch All Chats and Chat, exactly as you would with channels, and remember the payload points at a chat, so the follow-up node is a chat operation rather than a channel one.
Key parameters
- New Chat Message (
newChatMessage): fires when a message is posted to a chat. - New Chat (
newChat): fires when a new chat is created. - Watch All Chats: off, the Chat field appears and accepts a pick from the list, an URL or an ID.
chatMessage.create. Nothing else changes compared with the channel events: the same Microsoft credential, the same webhook registered when you activate the workflow, and events that land within seconds. Pair it with chatMessage.getAll when the answer needs the earlier messages of the conversation as context.What can the Microsoft Teams node do?
The Microsoft Teams node exposes 16 operations across 4 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 | Delete | Send and Wait for Response |
|---|---|---|---|---|---|---|---|
| Channel | ✓ | ✓ | ✓ | ✓ | ✓ | ||
| Channel Message | ✓ | ✓ | |||||
| Chat Message | ✓ | ✓ | ✓ | ✓ | |||
| Task | ✓ | ✓ | ✓ | ✓ | ✓ |
Operations index
Channel
5 operationsCreate channel
channel.createWhat you see in n8n
Notes & use cases
Adds a channel to an existing team, so the next node has somewhere to post.
Key parameters
- Team: pick from the list, by URL, or by ID, where the ID is the groupId parameter in the URL you get from Get a link to the team.
- New Channel Name: the name of the channel to create.
- Type (in Options): Standard is accessible to everyone on the team, Private only to a specific group of people within it.
Delete channel
channel.deleteChannelWhat you see in n8n
Notes & use cases
Two pointers are enough to remove a channel: the team it belongs to, and the channel itself.
Key parameters
- Team: the team that owns the channel, selected from the list, by URL or by ID.
- Channel: the channel to delete, where the ID is the threadId in the channel URL. Coming from a previous node, this is usually an expression such as
{{ $json.id }}.
Get channel
channel.getWhat you see in n8n
Notes & use cases
Returns one channel, which is what you want before acting on it or to resolve a name into usable data.
Key parameters
- Team: the team the channel belongs to.
- Channel: the channel to read, from the list, by URL or by ID (the threadId in the URL).
Get many channels
channel.getAllWhat you see in n8n
Notes & use cases
Lists the channels of a team as separate items, one per channel, ready to loop over.
Key parameters
- Team: the only required field, since channels are always read inside one team.
- Return All: on, n8n walks through the pages of the API and brings back every channel; off, Limit caps how many come back.
Update channel
channel.updateWhat you see in n8n
Notes & use cases
Renames a channel or rewrites what it is for, without touching the messages inside it.
Key parameters
- Team and Channel: the channel to edit, both resolved from the list, an URL or an ID.
- Name: the new channel name, left empty if only the description changes.
- Description (in Options): the text that explains the channel to whoever joins it.
Channel Message
2 operationsCreate message
channelMessage.createWhat you see in n8n
Notes & use cases
Posts a message into a channel, which is how most workflows end.
Key parameters
- Content Type: Text for a plain line, HTML when the message needs bold text, a list or a link.
- Message: the content itself, usually assembled with an expression such as
{{ $json.summary }}. - Reply to ID (in Options): posts inside an existing thread; the message ID is the number before ?tenantId in the message URL, for example
1673348720590. - Include Link to Workflow (in Options): appends a link to the workflow, useful once many of them post.
Get many messages
channelMessage.getAllWhat you see in n8n
Notes & use cases
Reads messages from one channel so the workflow can count, filter or summarize them.
Key parameters
- Team and Channel: the channel to read from.
- Return All: on, every message comes back page after page; off, Limit stops at a fixed number, which is what you want while testing.
Chat Message
4 operationsCreate chat message
chatMessage.createWhat you see in n8n
Notes & use cases
Same idea as a channel post, aimed at a private conversation instead, so there is no team to select.
Key parameters
- Chat: the conversation, picked from the list, by URL, or by ID, which you find after conversations/ in the chat URL.
- Content Type: Text or HTML, same choice as in a channel.
- Message: the content to send.
- Include Link to Workflow (in Options): adds a link back to the workflow that sent it.
Get chat message
chatMessage.getWhat you see in n8n
Notes & use cases
One message, fetched by its identifier, with its content and metadata.
Key parameters
- Chat: the conversation that holds the message, the ID being what follows conversations/ in the URL.
- Message ID: the identifier of the message to retrieve, for example
1673355049064, often taken from an earlier node with{{ $json.id }}.
Get many chat messages
chatMessage.getAllWhat you see in n8n
Notes & use cases
When the whole conversation matters, this brings its messages back as items.
Key parameters
- Chat: the only required field, resolved from the list, an URL or an ID.
- Return All: on, the node pages through the full history; off, Limit caps the number of messages returned.
Send message and wait for response
chatMessage.sendAndWaitWhat you see in n8n
Notes & use cases
Execution pauses here. The node posts the message in a chat and the workflow resumes only once a human has answered, which is how you put a validation step inside an automation.
Key parameters
- Chat and Message: where to ask, and what to ask.
- Response Type: Approval for a decision taken from the message itself, Free Text for an answer through a form, Custom Form for a form you define.
- Type of Approval (in Approval Options): Approve Only, or Approve and Disapprove for two buttons.
- Limit Wait Time: caps how long the node waits before execution resumes.
Task
5 operationsCreate task
task.createWhat you see in n8n
Notes & use cases
A task needs a home before it needs a name: a team, a plan and a bucket, then a title.
Key parameters
- Team, Plan and Bucket: where the task lands, each picked from a list.
- Title: what the task says.
- Due Date Time (in Options): the deadline, in ISO 8601 format and always in UTC.
- Assigned To (in Options): who owns it.
Delete task
task.deleteTaskWhat you see in n8n
Notes & use cases
Removes a task outright, and the identifier is the only thing it asks for.
Key parameters
- Task ID: the identifier of the task to delete, most often
{{ $json.id }}from the node that listed or created it.
Get task
task.getWhat you see in n8n
Notes & use cases
Before changing anything, a workflow usually reads the task first. This returns it in full.
Key parameters
- Task ID: the identifier of the task to retrieve, taken from a list operation or from whatever system stored it.
Get many tasks
task.getAllWhat you see in n8n
Notes & use cases
Two angles on the same data, chosen in one field: what a person has on their plate, or what a plan contains.
Key parameters
- Tasks For: Group Member for the tasks assigned to a member, Plan for the tasks in a group plan.
- Team and Plan: the scope of the read.
- Return All: on, every task comes back; off, Limit caps the result.
Update task
task.updateWhat you see in n8n
Notes & use cases
Progress moves, the task follows. Only the fields you fill are changed, the rest stays as it is.
Key parameters
- Task ID: the task to update.
- Percent Complete (in Update Fields): set it to 100 and the task counts as completed.
- Bucket or Plan (in Update Fields): move the task to another stage or another plan.
- Assigned To (in Update Fields): hand it to someone else, after selecting Team in the options.
Need help automating Microsoft Teams with n8n?
A person reads every message.
Microsoft Teams and n8n, the questions that come next
01Is the Microsoft Teams integration free in n8n?
02What credentials and permissions do you need?
03What are the limits of the Microsoft Teams n8n integration?
04Does the Microsoft Teams trigger react in real time?
05n8n or Make for Microsoft Teams?
Get our weekly integration tips.
No spam. Unsubscribe anytime.



