Skip to content

Microsoft Teams Notifications

Reoclo posts to Microsoft Teams as Adaptive Cards via an Incoming Webhook. The card title shows the severity and event summary; the body shows the event details. Severity drives the title color: red (critical), yellow (warn), default (info).

  • A Microsoft Teams team and channel where you can configure connectors
  • Permission to add connectors (channel owner, or admin policy allows members to add)

Option A — Incoming Webhook connector (classic)

Section titled “Option A — Incoming Webhook connector (classic)”
  1. In Teams, open the destination channel.
  2. Click the menu next to the channel name → Connectors.
  3. Find Incoming Webhook and click Add (then Add again on the dialog).
  4. Give the webhook a name (e.g., Reoclo) and optionally upload an icon.
  5. Click Create.
  6. Copy the URL that appears — it looks like https://yourtenant.webhook.office.com/webhookb2/...@.../IncomingWebhook/.../....
  7. Click Done.
Section titled “Option B — Workflows (Power Automate, recommended for new setups)”
  1. In Teams, install the Workflows app from the app catalog if it isn’t already available.
  2. Open the destination channel, click Workflows.
  3. Pick the template Post to a channel when a webhook request is received.
  4. Sign in if prompted, confirm the team and channel, and click Create flow.
  5. Copy the HTTP POST URL that the workflow generates.

Reoclo’s Adaptive Card payload works with both webhook types without modification.

  1. Open Settings → Notification Channels.
  2. Click Add ChannelMicrosoft Teams.
  3. Give it a name (e.g., eng-team-alerts).
  4. Paste the webhook URL into Webhook URL.
  5. Click Send Test — an Adaptive Card titled INFO — [TEST] Reoclo notification channel test should appear in the Teams channel.
  6. Pick which events this channel receives.
  7. Save.
Terminal window
reoclo channels create microsoft_teams \
--name "eng-alerts" \
--secret "https://yourtenant.webhook.office.com/webhookb2/..." \
--events deploy_failed,monitoring_uptime_down,incident_created

Or via YAML:

kind: microsoft_teams
name: eng-alerts
config: {}
secret: ${env:TEAMS_WEBHOOK_URL}
events:
deploy_failed: true
monitoring_uptime_down: true
incident_created: true

Reoclo sends an Adaptive Card v1.4 with two text blocks: a bold title combining severity and subject, and a wrapped body block:

{
"type": "message",
"attachments": [{
"contentType": "application/vnd.microsoft.card.adaptive",
"content": {
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.4",
"body": [
{ "type": "TextBlock", "size": "Medium", "weight": "Bolder",
"text": "CRITICAL — Deployment failed", "color": "attention" },
{ "type": "TextBlock", "wrap": true,
"text": "Deployment of MyApp to prod-1 failed: exit code 137 (OOM)" }
]
}
}]
}
SeverityAdaptive Card color
criticalattention (red)
warnwarning (yellow)
infodefault

Reoclo treats HTTP 200 and 202 as success — Teams uses 202 for the Workflows webhook path.

SymptomCauseFix
400 Webhook message delivery failedChannel deleted the connector or the workflow was deactivatedRecreate the webhook/workflow and update the channel secret
404 Not FoundURL truncated when copyingRe-copy the full webhook URL (they’re long — make sure you got everything)
Card shows but title color is graySeverity is nullExpected for non-alert events; only alert-driven events carry severity
Cards arrive without formattingConnector/workflow expects message cardsThe format Reoclo sends is correct for both classic connectors and Workflows — if you see plain text, the receiving endpoint is something else entirely (e.g., a webhook trigger expecting a custom schema)
Test passes, real events silentEvent toggles disabledOpen the channel and enable the events you want
  • One channel per team. Don’t share a Teams channel between unrelated services — Adaptive Cards are visually dense and clutter quickly.
  • Pair with email or PagerDuty for off-hours. Teams notifications don’t page; use PagerDuty or OpsGenie for actual on-call.