All integrations
Microsoft Teamsintegrations.teams

Chat & workflow

Microsoft Teams

Post an Adaptive Card in a Teams channel or chat when a release needs review, goes live or is rejected.

  • review needed
  • release live

Vendor docs

What it does

  • A Stoaken webhook sent as a Microsoft Teams card calls a Teams workflow that posts an Adaptive Card to a channel or chat.
  • The card reads "Release v1.4.0 of Brand · Theme needs review" (or "is live", or "was rejected" with the reason), with the number of changes and an Open in Stoaken button.
  • It uses Workflows (Power Automate), because Microsoft retired Office 365 connectors: they stopped working between 18 and 22 May 2026 (Microsoft).

Before you start

  • Brand Admin on the Brand (webhooks are part of the Team plan).
  • Teams with the Workflows app, and permission to create a workflow in the team.
  • Someone to own the workflow. Workflows belong to people, not channels; add a co-owner so it keeps running if the owner leaves (Microsoft).

Setup

  1. In Teams, open the channel's More options (…) > Workflows and pick the template Send webhook alerts to a channel (it starts with When a Teams webhook request is received). Or build one from that trigger with a Post card in a chat or channel step that posts the request's card.
  2. Leave Who can trigger the flow on Anyone: Stoaken doesn't send a Microsoft sign-in token, and a token-protected trigger refuses it.
  3. Save, then copy the workflow's address. Current addresses look like https://….environment.api.powerplatform.com/powerautomate/automations/direct/workflows/…/triggers/manual/paths/invoke?….
  4. In Stoaken, go to Settings > Webhooks and choose Add a webhook:
    • Send as: Microsoft Teams card
    • Address: the workflow address
    • Events: any of the three.

Configuration

  • The body is the envelope the trigger documents: { "type": "message", "attachments": [{ "contentType": "application/vnd.microsoft.card.adaptive", "contentUrl": null, "content": <card> }] } (Microsoft).
  • The card is Adaptive Card 1.4 with TextBlocks and one Action.OpenUrl. Incoming webhooks support Action.OpenUrl, and Teams renders cards up to 1.6.
  • Requests carry webhook-id but no Stoaken signature. The address (its sig= part) is the secret.
  • Stoaken accepts Power Automate addresses (*.environment.api.powerplatform.com) and Azure Logic Apps ones (*.logic.azure.com/workflows/…/paths/invoke?…). Office 365 connector addresses (*.webhook.office.com) are refused with an explanation. More on formats: /docs/webhooks.

Try it

  1. On the webhook, choose Send test. A card saying "Stoaken test: this channel will hear about releases of Brand." appears. The workflow accepts the request at once (a 2xx answer) and posts a few seconds later.
  2. In the webhook lab, choose Send a sample with Release submitted for review. A card marked [Test] appears.
  3. In the workflow's run history, each request shows as a run.

Troubleshooting

  • 401 or 403: the trigger is set to "Any user in my tenant" or "Specific users". Set it to Anyone.
  • 404: the workflow was deleted or its address changed. Copy it again from the trigger.
  • The request succeeds but nothing appears: open the workflow's run history; the post step may be pointed at the wrong team or channel, or the workflow's owner lost access.
  • An old logic.azure.com Power Automate address stopped working: Microsoft moved those flows to powerplatform.com addresses. Copy the new one from the trigger.
  • More than four requests a second are throttled by Teams; Stoaken retries failed deliveries.

Limits

  • Posting is done by the workflow: it posts as the Flow bot or its owner, and private channels may not be supported yet.
  • Anyone with the address can post. If it leaks, delete the workflow and make a new one.
  • Cards are capped at 28 KB by Teams; Stoaken's are far smaller.
  • Failed deliveries retry for about a day (/docs/webhooks).

Product names and logos are trademarks of their owners, shown only to say Stoaken works with their products; it doesn’t mean they endorse Stoaken.