'Post a message' action in flow integration is broken
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
4 weeks ago
Hi all
The 'Post a message' action which sends messages to a specific MS teams channel is broken I see this error. I suspect this is because the integration works well with MS Teams 'connectors' and not with the newers MS Teams 'workflows'.
When I use the below cURL in postman (with the WEBHOOK_WORKFLOW_URL provided), I see no issues and postman is able to send a message to MS Teams channel.
curl --location '<WEBHOOK_WORKFLOW_URL>' \
--header 'Content-Type: application/json' \
--data '{
"type": "message",
"attachments": [
{
"contentType": "application/vnd.microsoft.card.adaptive",
"content": {
"type": "AdaptiveCard",
"body": [
{
"type": "TextBlock",
"size": "Medium",
"weight": "Bolder",
"text": "Workflow Alert Test"
},
{
"type": "TextBlock",
"text": "Whatsup!!.",
"wrap": true
}
],
"$schema": "http://adaptivecards.io",
"version": "1.4"
}
}
]
}'
Thanks,
Ravish
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
4 weeks ago
Hi @RavishShett
Try this:
Also share your Oauth profile screen shot. Try once with grant type = Client credential , if not tried yet.
Regards
Tanushree Maiti
ServiceNow Technical Architect
LinkedIn: https://www.linkedin.com/in/tanushreemaiti
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
4 weeks ago
This is likely related to the recent changes Microsoft made to Teams webhooks. The OOTB "Post a message" action in ServiceNow was originally designed to work with Microsoft Teams Incoming Connectors, whereas Microsoft is moving toward Power Automate Workflows for incoming webhooks.
Since your cURL request works in Postman using the Workflow Webhook URL, the webhook itself is valid. This suggests the issue is with how the ServiceNow action formats or sends the payload, rather than with the Teams endpoint.
A few things to check:
- Verify whether your ServiceNow version officially supports Teams Workflow webhooks or only the legacy Incoming Connectors.
- Compare the HTTP request generated by the ServiceNow action with the working Postman request (headers, payload structure, content type, etc.).
- Review the Flow execution logs and system logs to see the exact HTTP response (400/401/403, etc.) returned by Teams.
- If Workflow webhooks are not yet supported by the OOTB action, a practical workaround is to use the REST step in Flow Designer (or a REST Message) to send the same JSON payload that you've already confirmed works in Postman.
If you're on a recent ServiceNow release, it would also be worth checking the release notes and known issues, as Microsoft has deprecated Incoming Connectors in favor of Workflows, and ServiceNow may have updated guidance or patches for this integration.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
4 weeks ago
Hi @RavishShett,
Your own screenshot gives it away, look at the Webhook URL row under Configuration Details on that failed run:
Configured on the action (dead): https://yourtenant.webhook.office.com/webhookb2/e1c0@8a807b9b-02da-47f3-a... What your curl actually used (works): https://prod-XX.REGION.logic.azure.com:443/workflows/.../triggers/manual/paths/invoke?api-version=2016-06-01&sp=...&sig=...
Those are two different products. webhook.office.com/webhookb2 is the legacy Office 365 Connector incoming webhook format, and Microsoft has been retiring Connectors in Teams all year, with the shutdown window landing in May 2026. Any old connector URL still sitting in a config field just returns a hard error now, JSON payload or not, which lines up exactly with the empty-message 403 on your action. Your curl worked because you pointed it at the real Workflows webhook (WEBHOOK_WORKFLOW_URL), not because the payload shape was the fix.
So first move: replace the Webhook URL value on the Post a Message action with the actual Workflows URL and rerun it. If it still 403s after that, then you're into the payload/schema mismatch territory, since the action builds its own MessageCard-style body server-side and some Workflows triggers were captured against an Adaptive Card sample only.
Longer term, ServiceNow is steering people off this action entirely toward the Microsoft Teams Graph Spoke, and is tracking the Connector-based gap under KB1650148 if you want to follow it.
Thank you,
Vikram Karety
Octigo Solutions INC