Incoming webhook to Microsoft Teams intermittently fails with 403 errors

Machado Danette 40 Reputation points
2025-12-17T11:40:46.91+00:00

When posting messages to a Microsoft Teams channel using an incoming webhook. The same payload occasionally succeeds but sometimes returns HTTP 403 without any changes to the request body or headers.

The webhook URL is valid, and the JSON payload conforms to the supported MessageCard format.

Microsoft Teams | Development
Microsoft Teams | Development

Building, integrating, or customizing apps and workflows within Microsoft Teams using developer tools and APIs


Answer accepted by question author
Steven-N 25,315 Reputation points Microsoft External Staff Moderator
2025-12-17T12:40:25.9633333+00:00

Hi Machado Danette

Thank you for reaching out to Microsoft Q&A forum

Based on your description, I understand that you are intermittently receiving HTTP 403 errors when posting to a Microsoft Teams channel using an Incoming Webhook, even though the webhook URL is valid and the MessageCard payload and headers have not changed.

As far as I know, the intermittent 403 responses from Microsoft Teams Incoming Webhooks commonly occur due to backend behaviors in the Teams connector service, where certain tenants or channels temporarily reject webhook submissions despite valid request formatting. This can also happen when webhook requests exceed hidden rate limits (more than four requests per second) or when message size approaches the 28 KB limit.

In this context, based on my knowledge, you can try the below approaches:

Validate basic limits and stabilize request patterns

  • Ensure payload size stays under the 28 KB MessageCard limit.
  • Keep requests below 4 per second for each webhook.
  • Implement retry logic with exponential backoff

Verify webhook configuration and permissions

Confirm that the Incoming Webhook connector is still active on the channel and that no tenant policies have disabled or restricted its use. If needed, generate a new webhook URL and test the same payload to rule out a corrupted or invalidated endpoint.

Link references:

https://learn.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/connectors-using?tabs=cURL%2Ctext1#rate-limiting-for-connectors

https://learn.microsoft.com/en-us/microsoftteams/limits-specifications-teams#teams-and-channels

https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/rate-limit

Hope my answer will help you.


If the answer is helpful, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".     

Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.

Was this answer helpful?


0 additional answers

Sort by: Most helpful

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.