n8n + Microsoft Teams Integration: 5 Workflows to Automate Notifications
The n8n Microsoft Teams integration turns your team chat into an automated command center. Instead of manually copying updates between tools or checking dashboards, you can push the right information to the right channel at the right time — automatically. Whether you run DevOps, sales, or support, these five workflows eliminate the repetitive notification work that eats into your day.
Why Automate Microsoft Teams with n8n
Microsoft Teams is where most enterprise and mid-market teams spend their working hours. It's the default hub for conversations, meetings, and file sharing across organizations using Microsoft 365. But Teams itself doesn't have strong built-in workflow automation beyond basic Power Automate connectors.
n8n fills that gap. With the Microsoft Teams node, you get full API access to send messages, create channels, list team members, and react to incoming events — all wired into n8n's 400+ other integrations. The key advantages over Power Automate:
- No per-execution pricing — run unlimited workflows on your own instance
- Full data control — messages and payloads never pass through a third-party SaaS beyond Microsoft's own API
- Complex logic — use IF nodes, Switch nodes, Code nodes, and sub-workflows to build real business logic, not just linear triggers
- Cross-platform — connect Teams to tools Microsoft doesn't natively support, like Stripe, Linear, PagerDuty, or custom APIs
Connecting Microsoft Teams to n8n
Before building workflows, you need to authenticate n8n with your Microsoft 365 tenant. n8n uses OAuth 2.0 for the Teams connection.
Step 1: Register an app in Azure AD. Go to the Azure Portal → App registrations → New registration. Set the redirect URI to your n8n instance's OAuth callback URL (e.g., https://yourname.n8nautomation.cloud/rest/oauth2-credential/callback).
Step 2: Configure API permissions. Add the following Microsoft Graph permissions:
ChannelMessage.Send— to post messages to channelsChat.ReadWrite— to send direct messagesTeam.ReadBasic.All— to list teams and channelsChannel.Create— only if you need to create channels programmatically
Step 3: Add credentials in n8n. In your n8n instance, go to Credentials → New → Microsoft Teams OAuth2 API. Paste the Client ID and Client Secret from your Azure app registration. Click "Connect" to complete the OAuth flow.
Tip: If you're on n8nautomation.cloud, your instance already has a stable public URL with HTTPS — no need to configure tunnels or dynamic DNS for the OAuth callback.
Workflow 1: Deployment Alerts to a Teams Channel
Push deployment status updates from GitHub Actions (or any CI/CD tool) directly into a Teams channel so your engineering team sees them instantly.
Nodes used:
- Webhook node — receives the POST request from your CI/CD pipeline. Set the HTTP method to POST and the path to something like
/deploy-alert. - IF node — checks the
statusfield in the webhook payload. Routesuccessandfailureto different message templates. - Microsoft Teams node — configured with the "Send a Message" operation. Select your team and target channel (e.g., #deployments). Use expressions to build the message body:
🚀 Deployment {{ $json.status === 'success' ? 'succeeded' : 'FAILED' }}
Repo: {{ $json.repository }}
Branch: {{ $json.branch }}
Commit: {{ $json.commit_sha.substring(0, 7) }}
Triggered by: {{ $json.actor }}
For failed deployments, you can add a second Microsoft Teams node that sends a direct chat message to the on-call engineer using the "Send Chat Message" operation.
Workflow 2: Form Submission Notifications
Route incoming form submissions (from Typeform, Tally, or your own webhook) to a Teams channel so your sales or support team can respond fast.
Nodes used:
- Webhook node — catches the form submission payload.
- Set node — normalizes the data. Map fields like
name,email,company, andmessageinto consistent field names regardless of which form tool sent them. - Switch node — routes based on the form type or a specific field value. For example, route "pricing inquiry" to #sales and "bug report" to #support.
- Microsoft Teams node — posts a formatted message to the appropriate channel. Include all relevant fields so the team member can respond without switching to another tool.
This workflow replaces the typical pattern of checking a shared inbox or CRM for new submissions. The notification appears in Teams within seconds of submission.
Workflow 3: Daily Report Digest from Google Sheets
Pull key metrics from a Google Sheet every morning and post a summary to your Teams channel — a daily standup report that writes itself.
Nodes used:
- Schedule Trigger node — fires at 8:30 AM on weekdays using a cron expression:
0 30 8 * * 1-5. - Google Sheets node — reads the latest row from your metrics spreadsheet. Use the "Read Rows" operation with a range that targets the most recent data.
- Code node — formats the data into a clean summary. Calculate day-over-day changes, highlight anything that's above or below threshold:
const row = $input.first().json;
const message = [
`📊 Daily Metrics — ${new Date().toLocaleDateString()}`,
`Revenue: $${row.revenue.toLocaleString()} (${row.revenue_change > 0 ? '+' : ''}${row.revenue_change}%)`,
`New signups: ${row.signups}`,
`Active users: ${row.active_users}`,
row.churn_rate > 2 ? `⚠️ Churn rate: ${row.churn_rate}% (above threshold)` : `Churn rate: ${row.churn_rate}%`
].join('\n');
return [{ json: { message } }];
- Microsoft Teams node — posts the formatted message to your #metrics or #general channel.
Workflow 4: Approval Workflows with Adaptive Cards
This is where n8n's Microsoft Teams integration really shines. You can send Adaptive Cards — interactive message cards with buttons — to request approvals directly inside Teams.
Nodes used:
- Webhook node — receives an approval request (e.g., a new expense submission, a content publish request, or a deployment gate).
- HTTP Request node — sends an Adaptive Card to a Teams channel via the Microsoft Graph API. The card includes details about the request and "Approve" / "Reject" buttons that POST back to a second webhook in your n8n instance.
- Second Webhook node — catches the button click response from Teams.
- IF node — branches on the approval decision.
- Downstream nodes — on approval, trigger the next step (deploy, publish, process payment). On rejection, notify the requester via email or Teams DM.
This pattern is powerful for human-in-the-loop workflows, especially when combined with n8n's AI Agent node. You can have an AI agent draft a response, then require human approval in Teams before sending it to a customer.
ChannelMessage.Send permission with admin consent. If your org restricts this, work with your IT admin to approve the specific permission scope.Workflow 5: Incident Escalation Pipeline
Connect your monitoring tools to Teams through n8n to build an intelligent escalation pipeline that goes beyond basic alerting.
Nodes used:
- Webhook node — receives alerts from Grafana, Datadog, UptimeRobot, or any monitoring tool that supports webhook notifications.
- Switch node — categorizes the alert severity based on the payload (critical, warning, info).
- Microsoft Teams node (critical path) — posts to #incidents with full alert details and @mentions the on-call team member.
- Wait node — pauses for 10 minutes after the critical alert is posted.
- HTTP Request node — checks whether the incident has been acknowledged (by querying your incident management tool's API).
- IF node — if not acknowledged, escalate.
- Microsoft Teams node (escalation) — sends a DM to the engineering manager and posts an escalation notice to the channel.
For warning-level alerts, skip the escalation path and just post to #monitoring. For info-level, batch them and send a daily summary using the Schedule Trigger pattern from Workflow 3.
Tips for Running Microsoft Teams Automations in Production
Once your workflows are built and tested, keep these points in mind for long-term reliability:
- Rate limits matter. Microsoft Graph API enforces rate limits per app per tenant. If you're sending many messages in a short burst (e.g., notifying 50 channels), add a Wait node with a 1-second delay between batches to avoid 429 errors.
- Token refresh is automatic. n8n handles OAuth token refresh for you, but if your Azure AD app's client secret expires, your workflows will start failing. Set a calendar reminder to rotate secrets before expiry (Microsoft allows up to 24 months).
- Use error workflows. Attach an Error Trigger workflow to each of your Teams automations. If a workflow fails, the error workflow can post a notification to a dedicated #workflow-errors channel — using a separate, simpler Teams connection to avoid circular failures.
- Test with a dedicated team. Create a "Bot Testing" team in your Microsoft 365 tenant. Point your workflows there during development so you don't spam production channels.
- Keep your instance running. These workflows depend on webhooks being reachable 24/7. A managed n8n instance on n8nautomation.cloud handles uptime, SSL, and backups starting at $15/month — so your Teams automations never miss an alert because your server went down at 2 AM.
Tip: Combine the Approval workflow (Workflow 4) with n8n's AI Agent node to build a full human-in-the-loop AI pipeline. The agent processes incoming requests, drafts a response, and waits for a Teams approval before executing — giving you AI speed with human oversight.
Microsoft Teams is where your team already works. With n8n handling the automation layer, you stop context-switching between dashboards and start getting the information pushed to you. Pick one of these five workflows, build it in 20 minutes, and see the difference when your first automated message lands in the right channel at the right time.