Microsoft Teams Webhook: How to Post Messages in 2026

To post into a Teams channel from your website or app today, open the channel's Workflows menu, pick a template such as Send webhook alerts to a channel, save it and copy the link it gives you. Then send an HTTP POST with a JSON body to that link. The old Office 365 Connector webhooks are retired.

Old connector webhooks and the Workflows replacement
Office 365 Connector webhookWorkflows webhook
StatusRetired: Microsoft said they stop working after a rollout set for May 18 to 22, 2026The method Microsoft documents now
Where you create itChannel connectors settingsChannel menu, then Workflows
Powered byMicrosoft 365 ConnectorsPower Automate
Card formatsMessage cardsAdaptive Cards and Message Card format (buttons not rendered)
Owned byThe channelThe user who made the workflow (add co-owners)

Updated

A webhook is a private web address that accepts a message from another system, here your shop, form or monitoring tool, and drops it into a Teams channel. Fill in the builder below to get a ready JSON body and a curl command. It runs only in your browser.

Payload builder

Message format: Plain text, Adaptive Card

Message: Order 1042 was paid. Ship by Friday.

JSON body

{
  "text": "Order 1042 was paid. Ship by Friday."
}

Webhook link (stays in your browser)

curl command

curl -X POST "<WEBHOOK_URL>" \
  -H "Content-Type: application/json" \
  -d '{
  "text": "Order 1042 was paid. Ship by Friday."
}'

Copyable examples

Both examples send to the link your workflow gave you. Keep the link in an environment variable on your server.

Adaptive Card body

This is the shape Microsoft's own samples use: a message with one attachment whose content is the card.

{
  "type": "message",
  "attachments": [
    {
      "contentType": "application/vnd.microsoft.card.adaptive",
      "content": {
        "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
        "type": "AdaptiveCard",
        "version": "1.2",
        "body": [
          { "type": "TextBlock", "text": "New order", "weight": "Bolder", "size": "Medium" },
          { "type": "TextBlock", "text": "Order 1042 was paid.", "wrap": true }
        ]
      }
    }
  ]
}

Send from Node.js with a retry on 429

A 429 status means too many requests. The loop waits longer after each refusal before trying again.

async function postToTeams(body, tries = 4) {
  const url = process.env.TEAMS_WEBHOOK_URL;
  for (let i = 0; i < tries; i++) {
    const res = await fetch(url, {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify(body),
    });
    if (res.status !== 429) return res.ok;
    await new Promise((r) => setTimeout(r, 500 * 2 ** i));
  }
  return false;
}

postToTeams({ text: "Backup finished" });

What changed in 2024 to 2026

Microsoft announced on July 3, 2024 that Office 365 Connectors in Teams would be retired, then moved the dates several times. Its latest update, dated April 14, 2026, set the final rollout for May 18 to May 22, 2026.

The replacement is the Workflows app inside Teams, which runs on Power Automate. A workflow starts with the trigger called When a Teams webhook request is received and then posts the message to a chat or channel.

Plain text or an Adaptive Card

The simplest body is one field called text. An Adaptive Card is a JSON layout that Teams draws as a tidy box with headings and facts, which suits order alerts or form entries. It is wrapped in an attachments list with the content type application/vnd.microsoft.card.adaptive.

How it works

  1. In Teams, go to the channel, select More options (...) and then Workflows.
  2. Search for the template Send webhook alerts to a channel, fill in its settings and select Save.
  3. Copy the webhook link the workflow shows. Treat it like a password, because anyone with it can post.
  4. Send an HTTP POST with Content-Type: application/json to that link, using a body from the builder.

Tips

Frequently asked questions

Do old Teams incoming webhook links still work?

Microsoft's April 14, 2026 update said the rollout would run from May 18 to May 22, 2026, and that after those dates Office 365 Connectors would no longer function. Move anything still pointing at an old connector link to a Workflows link.

Can a Workflows webhook post an Adaptive Card?

Yes. Microsoft lists Adaptive Cards and the older Message Card format as supported in Workflows, with one known gap: buttons in message cards are not rendered.

Can it post into a private channel?

Microsoft's page lists posting as the flow bot in private channels as still under development, while posting on behalf of a user works. Check the known issues on the official page before you rely on it.

Do I need to write code?

Not always. Many form tools, shop apps and uptime monitors have a webhook field: paste the Workflows link there. Code is only needed when you build the message yourself.

Is the webhook link secret?

Yes. Anyone who has it can post into your channel, so keep it in a server setting or environment variable, never in website code that visitors can read.

Related: Discord webhook guide, Webhook vs API, Add a contact form, Build an AI agent.

Start for free or see all free tools. We.Inc is free to start, with no card needed. AI building is on paid plans from $20 a month.

More in Guides

We.Inc is an AI-powered website builder you can resell under your own brand. Launch a branded client dashboard, bill on Stripe Connect, and deliver AI-generated websites in minutes. White-label plans start at $99 a month for 25 client sites, with a 7-day free trial and no per-site fees.

Product

Who It's For

Features

Resources

Company

View Sitemap