Resources · n8n integration

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

Why automate

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.

Connect

How do you connect Microsoft Teams to n8n?

  1. 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.

  2. 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.

  3. 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.

Triggers

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.*5

    Configuration notes

    01Set Up the Microsoft Teams TriggerThe 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.

    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.
    When to use it
    start here for any workflow that should react to what people write, instead of running on a timer. The same Microsoft credential works on the action node, so there is nothing to set up again on the connection side.
    02New Channel Message and Channel EventsThree 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.

    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.
    When to use it
    onboarding messages on 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 MessageThe 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.

    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.
    When to use it
    a one to one assistant, where someone writes in a chat and the workflow answers with 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.
    Actions

    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.

    Resources × operations matrix
    ResourceCreateGetGet ManyUpdateDeleteDeleteSend and Wait for Response
    Channel
    Channel Message
    Chat Message
    Task

    Channel

    5 operations
    01

    Create channel

    channel.create

    What 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.
    Use cases
    a project kickoff workflow that creates the channel, sets a Description and posts the brief in it.
    02

    Delete channel

    channel.deleteChannel

    What 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 }}.
    Use cases
    a monthly cleanup that reads the channels of a team, keeps the active ones and deletes the rest. Put a filter before this node, it does not ask for confirmation.
    03

    Get channel

    channel.get

    What 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).
    Use cases
    a workflow that receives a channel identifier from a trigger and fetches the channel details before deciding whether to post, rename or skip. Also handy as a quick existence check in a branch.
    04

    Get many channels

    channel.getAll

    What 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.
    Use cases
    building an inventory of channels in a spreadsheet, or fanning out a message to every channel of a team by feeding this output into a posting node.
    05

    Update channel

    channel.update

    What 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.
    Use cases
    a naming convention enforced automatically, where a workflow renames channels that drifted from the pattern and updates their description in the same run.

    Channel Message

    2 operations
    06

    Create message

    channelMessage.create

    What 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.
    Use cases
    a daily digest posted every morning in an operations channel.
    07

    Get many messages

    channelMessage.getAll

    What 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.
    Use cases
    a weekly activity report, where the workflow pulls the messages of a channel, sends them to a model for a summary and posts the result back. Keep Limit low on the first runs, a busy channel returns a lot.

    Chat Message

    4 operations
    08

    Create chat message

    chatMessage.create

    What 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.
    Use cases
    a personal alert to the person on duty rather than a message the whole channel sees.
    09

    Get chat message

    chatMessage.get

    What 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 }}.
    Use cases
    checking the original text before a workflow acts on a decision recorded earlier, instead of trusting a copy stored elsewhere.
    10

    Get many chat messages

    chatMessage.getAll

    What 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.
    Use cases
    giving a model the last messages of a chat as context before it drafts an answer, or archiving a conversation elsewhere when a discussion is closed.
    11

    Send message and wait for response

    chatMessage.sendAndWait

    What 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.
    Use cases
    a manager approving a refund before the workflow issues it.

    Task

    5 operations
    12

    Create task

    task.create

    What 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.
    Use cases
    a form submission that becomes a task in the right bucket, assigned and dated, without anyone retyping it.
    13

    Delete task

    task.deleteTask

    What 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.
    Use cases
    cancelling the task that a workflow created earlier when the event behind it is cancelled, so the plan does not fill up with tasks nobody will ever close. There is no undo on this one, so branch carefully before it.
    14

    Get task

    task.get

    What 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.
    Use cases
    reading the current Percent Complete and due date before deciding whether to send a reminder, or fetching a task by ID when a support tool holds the reference and needs the details back.
    15

    Get many tasks

    task.getAll

    What 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.
    Use cases
    a Monday run that reads a plan, counts what is overdue and posts the figure in the team channel.
    16

    Update task

    task.update

    What 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.
    Use cases
    closing the task automatically once the automated part of the job has run.
    Need help

    Need help automating Microsoft Teams with n8n?

    A person reads every message.

    FAQ

    Microsoft Teams and n8n, the questions that come next

    01Is the Microsoft Teams integration free in n8n?
    Yes on the n8n side. Both the Microsoft Teams node and the Microsoft Teams Trigger ship with n8n, so there is nothing to install and no extra cost for the connector itself. This is true on n8n Cloud, the hosted offer run by n8n, and on a self-hosted instance installed with Docker or npm under the Community Edition and its Sustainable Use licence. A workflow behaves the same in both cases, which matters if you prototype on Cloud and later move in house. What you pay for Microsoft Teams itself depends on your Microsoft agreement and is a separate question.
    02What credentials and permissions do you need?
    OAuth2, through a Microsoft credential. You need a Microsoft Azure account, a user account with access to the service, and, if a corporate Microsoft Entra account manages that user, an administrator who has enabled the option letting users consent to apps accessing company data on their behalf. The node then offers three options under Authentication: Teams OAuth2, whose default scopes cover every resource on the node, Microsoft OAuth2 (Graph), the generic credential you can reuse across other Microsoft nodes once you grant it the right scopes, and Service Principal (App-Only), which uses a Microsoft Entra app registration with no signed-in user.
    03What are the limits of the Microsoft Teams n8n integration?
    Three worth knowing. First, scope: the node exposes 16 operations across channels, channel messages, chat messages and tasks, and anything else in the Microsoft Graph API goes through the HTTP Request node, which reuses the same credential via its predefined authentication. Second, pagination: list operations return up to Limit items unless Return All is enabled, in which case n8n walks through the pages for you. Third, app-only access: Service Principal has no signed-in user, so the operations that act as one are unavailable, their fields are hidden, and a workflow that still uses one fails before sending a request.
    04Does the Microsoft Teams trigger react in real time?
    Yes. The Microsoft Teams Trigger works by webhook, meaning n8n registers an URL with Microsoft when you activate the workflow, and Microsoft calls that URL as things happen. Events reach your workflow within seconds and nothing is checked on an interval, so there is no polling delay to tune and no wasted executions on quiet hours. The node covers 5 events: a new channel, a new channel message, a new chat, a new chat message and a new team member. Choose the one you need in Trigger On, then narrow the scope with the team, channel or chat fields.
    05n8n or Make for Microsoft Teams?
    It depends on where you want the data and how you want to pay. Make is a hosted platform with no self-hosting option and billing per operation, so a workflow that loops over many channels or messages costs more as volume grows. n8n runs on Cloud or on your own server with Docker or npm, which keeps message content inside your infrastructure when that matters for a Microsoft tenant under compliance rules. Make has the more guided visual editor; n8n gives you expressions and code when a step needs real logic. Both connect to Teams, so the decision rests on hosting, cost model and how far your workflows go.
    Hack'celeration Lab

    Get our weekly integration tips.

    No spam. Unsubscribe anytime.