Microsoft Teams is the communication hub for many enterprises. Integrating uptime monitoring with Teams ensures your operations team sees alerts where they already work. Here's how to set it up.
Why Microsoft Teams?
- Enterprise standard - Already deployed in many organizations
- Rich integrations - Power Automate, connectors, apps
- Adaptive cards - Beautiful formatted alerts
- Channel organization - Route alerts appropriately
- Mobile app - Get push notifications
Setting Up Incoming Webhooks
Step 1: Create Webhook
- Open Microsoft Teams
- Navigate to the target channel
- Click "..." menu β "Connectors"
- Find "Incoming Webhook"
- Click "Configure"
- Name it (e.g., "Uptime Alerts")
- Optionally upload an icon
- Click "Create"
- Copy the webhook URL
Step 2: Add to Monitoring
In your monitoring service:
- Go to notification settings
- Add Microsoft Teams webhook
- Paste the webhook URL
- Test the connection
Message Formatting
Simple Message
{
"text": "π΄ Production API is DOWN"
}
Adaptive Card (Recommended)
{
"@type": "MessageCard",
"@context": "http://schema.org/extensions",
"themeColor": "FF0000",
"summary": "Production API is DOWN",
"sections": [{
"activityTitle": "π΄ CRITICAL: Service Down",
"facts": [
{"name": "Monitor", "value": "Production API"},
{"name": "URL", "value": "https://api.example.com"},
{"name": "Status", "value": "HTTP 500"},
{"name": "Duration", "value": "5 minutes"},
{"name": "Location", "value": "US-East"}
],
"markdown": true
}],
"potentialAction": [{
"@type": "OpenUri",
"name": "View Dashboard",
"targets": [{
"os": "default",
"uri": "https://dashboard.example.com"
}]
}]
}
Color Coding
Use themeColor for visual indicators:
| Status | Color |
|---|---|
| Critical/Down | FF0000 (Red) |
| Warning | FFA500 (Orange) |
| Recovered | 00FF00 (Green) |
| Info | 0078D7 (Blue) |
Channel Organization
Recommended Structure
General Team
βββ π’ Announcements
βββ π¬ General
βββ π§ Operations
βββ Alerts - Production
βββ Alerts - Staging
βββ Incident Management
Webhook Per Channel
Create separate webhooks for:
- Production critical alerts
- Staging alerts
- Different services
Power Automate Integration
For advanced workflows, use Power Automate:
Example: Create Incident Task
- Trigger: When webhook receives alert
- Parse JSON from body
- Create task in Planner
- Assign to on-call person
- Post to Teams channel
Example: Escalation Flow
- Trigger: Alert received
- Wait 10 minutes
- Check if acknowledged
- If not, send to manager channel
- Create phone call alert
Actionable Messages
Add buttons for quick actions:
{
"@type": "MessageCard",
"sections": [...],
"potentialAction": [
{
"@type": "OpenUri",
"name": "View Dashboard",
"targets": [{"os": "default", "uri": "https://..."}]
},
{
"@type": "OpenUri",
"name": "View Runbook",
"targets": [{"os": "default", "uri": "https://..."}]
},
{
"@type": "HttpPOST",
"name": "Acknowledge",
"target": "https://your-api/acknowledge"
}
]
}
Best Practices
Do
- Use dedicated alerts channels
- Color-code by severity
- Include actionable links
- Test webhooks regularly
- Document channel purposes
Don't
- Alert to general channels
- Use unclear monitor names
- Skip severity indicators
- Ignore Teams notification settings
Testing Webhook
Using PowerShell
$uri = "YOUR_WEBHOOK_URL"
$body = @{
text = "Test alert from monitoring"
} | ConvertTo-Json
Invoke-RestMethod -Uri $uri -Method Post -Body $body -ContentType "application/json"
Using curl
curl -H "Content-Type: application/json" \
-d '{"text":"Test alert"}' \
YOUR_WEBHOOK_URL
Notification Management
Channel Notification Settings
Configure per user:
- Click channel name β "Channel notifications"
- Set banner/feed preferences
- Configure mobile push settings
@Mentions in Alerts
To mention users, use the connector's mention feature or send user IDs:
{
"text": "<at>John</at> Production is down!",
"entities": [{
"type": "mention",
"mentioned": {
"id": "user-id",
"name": "John"
},
"text": "<at>John</at>"
}]
}
Troubleshooting
Webhook Errors
400 Bad Request:
- Validate JSON format
- Check required fields
- Verify URL encoding
404 Not Found:
- Webhook may be deleted
- Check URL is complete
- Recreate connector
Throttling:
- Teams has rate limits
- Implement retry logic
- Consider batching
Messages Not Appearing
- Verify webhook URL is correct
- Check channel still exists
- Confirm connector is active
- Review JSON format
Integration Checklist
- Webhook created in target channel
- URL added to monitoring service
- Message format configured
- Test message received
- Color coding verified
- Action buttons working
- Channel notifications configured
- Team informed of new alerts
Integrate WizStatus with Microsoft Teams for enterprise-ready uptime alerts. Rich formatted cards, action buttons, and reliable delivery.