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
- 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.
- Leave Who can trigger the flow on Anyone: Stoaken doesn't send a Microsoft sign-in token, and a token-protected trigger refuses it.
- Save, then copy the workflow's address. Current addresses look like
https://….environment.api.powerplatform.com/powerautomate/automations/direct/workflows/…/triggers/manual/paths/invoke?…. - 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-idbut no Stoaken signature. The address (itssig=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
- 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.
- In the webhook lab, choose Send a sample with Release submitted for review. A card marked [Test] appears.
- 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.comPower Automate address stopped working: Microsoft moved those flows topowerplatform.comaddresses. 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).