If your organization runs on Microsoft Teams, your downtime alerts belong there. Most enterprise teams spend their day in Teams channels -- it is where conversations happen, decisions get made, and incidents get triaged. Sending uptime alerts to email when your team lives in Teams means adding delay between detection and response.

CronAlert sends Microsoft Teams alerts through incoming webhooks, delivered as Adaptive Cards with color-coded status, monitor details, and everything your team needs to start investigating. The setup takes about five minutes. Here is how to wire it up.

Plan requirement: Microsoft Teams alerts are available on the Pro plan and above ($5/month). The free plan includes email, Slack, Discord, and webhook alerts.

How it works

The integration uses Teams incoming webhooks, which let external services post messages to a channel via a simple URL. You create a webhook connector in your Teams channel, paste the URL into CronAlert, and you are done. When CronAlert detects that a monitor is down or has recovered, it sends a POST request to the webhook URL with a formatted Adaptive Card.

No Teams app to install, no admin approval flow, no OAuth. A webhook URL is all you need.

Step 1: Create an incoming webhook in Teams

First, set up the webhook on the Teams side. You will need permission to manage connectors in the channel where you want alerts.

1

Open the channel settings

Navigate to the Teams channel where you want downtime alerts to appear. A dedicated channel like Monitoring or Production Alerts works well. Click the three-dot menu next to the channel name and select Connectors (or Manage channel and then Connectors, depending on your Teams version).

2

Add an Incoming Webhook connector

In the connectors list, find Incoming Webhook and click Configure. Give the webhook a name -- something like "CronAlert" so you know what is posting to the channel. You can optionally upload a custom icon.

3

Copy the webhook URL

Click Create. Teams will generate a webhook URL that looks like this:

https://your-org.webhook.office.com/webhookb2/xxxx/IncomingWebhook/xxxx/xxxx

Copy it and click Done. Treat this URL like a secret -- anyone with it can post messages to your channel.

Step 2: Add the webhook URL to CronAlert

Now connect that webhook to your CronAlert account.

1

Open Alert Channels

Log in to CronAlert and navigate to Alert Channels in the sidebar. Click Add Alert Channel.

2

Select Microsoft Teams and paste the URL

Choose Microsoft Teams as the channel type. Give it a descriptive name -- something like "Production Teams" or "Ops Channel" so you can tell your alert channels apart later. Paste the webhook URL you copied from Teams.

3

Save and test

Click Save. Use the Send Test button to fire a test Adaptive Card to your Teams channel. If it arrives, you are all set. If not, double-check that the webhook URL is correct and that the connector is still active in your Teams channel settings.

Step 3: Assign to monitors

With the alert channel created, assign it to the monitors you want it to cover. Open any monitor's settings, scroll to the Alert Channels section, and check the Teams channel you just created. You can assign multiple alert channels to a single monitor -- for example, Teams for the ops team plus email for the on-call engineer.

From now on, when CronAlert detects downtime on that monitor, your Teams channel will light up with an Adaptive Card.

What the alerts look like

CronAlert does not send plain text to Teams. It sends Adaptive Cards -- the native rich content format for Teams -- with structured fields and color-coded themes. Here is the structure for each alert type.

DOWN alerts

When a monitor detects a failure, the Teams message includes:

  • Color theme -- a red accent indicating the alert is a failure
  • Title -- "DOWN: Monitor Name" in bold
  • URL -- the full URL that was checked
  • Status code -- the HTTP status code returned (e.g., 502, 503, 0 for connection timeouts)
  • Error message -- a human-readable description of what went wrong
  • Failing regions -- if you are on a plan with multi-region checks, the alert lists which regions detected the failure
  • Timestamp -- when the check was performed

The Adaptive Card payload looks like this under the hood:

{
  "type": "message",
  "attachments": [{
    "contentType": "application/vnd.microsoft.card.adaptive",
    "content": {
      "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
      "type": "AdaptiveCard",
      "version": "1.4",
      "msteams": { "width": "Full" },
      "body": [
        {
          "type": "TextBlock",
          "size": "Large",
          "weight": "Bolder",
          "color": "Attention",
          "text": "DOWN: Production API"
        },
        {
          "type": "FactSet",
          "facts": [
            { "title": "URL", "value": "https://api.example.com/health" },
            { "title": "Status", "value": "502" },
            { "title": "Error", "value": "Bad Gateway" },
            { "title": "Regions", "value": "us-east, eu-west" }
          ]
        }
      ]
    }
  }]
}

RECOVERED alerts

When the monitor detects that the site is back up, you get a recovery card. The title swaps to "RECOVERED" with a green accent, and instead of error details, it shows the total downtime duration:

  • Color theme -- green accent indicating recovery
  • Title -- "RECOVERED: Monitor Name"
  • URL -- the URL that recovered
  • Downtime -- how long the outage lasted (e.g., "4m 32s" or "1h 15m")
  • Timestamp -- when recovery was detected

The red/green distinction makes it easy to scan a busy Teams channel and immediately tell whether something is still broken or has been resolved.

Tips for getting the most out of Teams alerts

Use separate channels for different environments

Create one webhook in a Production Alerts channel and another in a Staging Alerts channel. In CronAlert, add both as separate alert channels, then assign your production monitors to the production channel and staging monitors to the staging channel. This keeps noise out of the channels that matter most.

Combine with other alert channels

Teams alerts do not have to be your only notification method. Assign multiple alert channels to a single monitor -- for example, Teams for the broader ops team, email for the on-call engineer, and a webhook that triggers a PagerDuty incident. CronAlert sends to all assigned channels simultaneously when downtime is detected. See our guides on Slack alerts and Discord alerts for setting up additional channels.

Configure channel notifications

In Teams, you can set notification preferences per channel. For your alerts channel, consider setting it to All activity so every alert triggers a desktop and mobile notification, even if other channels are set to a quieter mode. Right-click the channel, select Channel notifications, and set it to show all new posts.

Pair with maintenance windows to reduce noise

If you have a scheduled deploy or maintenance window, use CronAlert's maintenance windows (available on Pro and above) to pause alerting during that period. This prevents your team from getting paged for expected downtime and keeps the signal-to-noise ratio high. For more on setting up monitors effectively, see our uptime monitoring setup guide.

Frequently asked questions

Are Microsoft Teams alerts available on the free plan?

No. Microsoft Teams alerts require a Pro plan or above, starting at $5/month ($4/month billed annually). The free plan includes email, Slack, Discord, and webhook alerts. Upgrading to Pro also unlocks Telegram, PagerDuty, 1-minute check intervals, and 100 monitors.

Can I send alerts to multiple Teams channels?

Yes. Create a separate incoming webhook in each Teams channel you want alerts in, then add each one as its own alert channel in CronAlert. You can assign different monitors to different alert channels -- for example, production monitors to a Production Alerts channel and staging monitors to a Staging Alerts channel.

What information is included in a downtime alert?

DOWN alerts include the monitor name, the checked URL, the HTTP status code, an error message, and the failing regions if you are using multi-region checks. RECOVERED alerts include the monitor name, URL, and total downtime duration. Both use Adaptive Cards with color-coded themes so you can tell the status at a glance.

Do I need to install a CronAlert app from the Teams app store?

No. CronAlert uses standard Teams incoming webhooks, not an installable app. You create the webhook URL yourself in your Teams channel settings, which means there is nothing to approve through your Teams admin and no third-party app with access to your Teams data.

Wrapping up

Getting downtime alerts into Microsoft Teams puts critical information where your organization is already communicating. Create a webhook in Teams, paste it into CronAlert, and the next time something goes down, your team will know about it in seconds -- with a clean Adaptive Card containing all the context they need to start investigating.

If you do not have a CronAlert account yet, sign up for free and upgrade to Pro to unlock Teams alerts -- 100 monitors, 1-minute checks, and Adaptive Card notifications starting at $5/month. Already monitoring with another tool? Our setup guide walks through the whole process.