Microsoft Teams webhook tester for Power Automate Workflows
Paste a Microsoft Teams Workflow webhook URL, pick a sample Adaptive Card, hit Send. See the exact HTTP status, latency, and response body — so you can tell whether your card actually delivered, or whether the Workflow swallowed it silently. Built after the March 2026 Office 365 Connector retirement, when every team had to migrate.
Targeting: microsoft teams webhook tester · Last updated 2026-05-02
Skip the manual setup
PullNotifier installs from Microsoft AppSource in 5 minutes — no YAML, no Power Automate flows.
Try the tester
Webhook URL
Paste the HTTP POST URL from your Power Automate Workflow (or your legacywebhook.office.comURL to verify it's really dead).
Card preset
Adaptive card announcing a freshly opened pull request.
Card JSON
Valid JSON
What the response codes usually mean
200 OK but nothing in Teams — the Workflow ran but the "Compose Adaptive Card" step dropped the message. Open the Workflow run history to see which step failed silently.
400 Bad Request — JSON schema is invalid, or the Workflow rejected the body shape. Use the Adaptive Card Designer to validate the v1.5 schema before sending.
404 Not Found — the URL is wrong or the underlying Power Automate Workflow has been deleted or disabled. Recreate the Workflow and copy the new URL.
401 / 403 Unauthorized — the URL has been rotated or the SAS token expired. Recreate the Workflow trigger to mint a fresh URL.
0 / Network error — the proxy couldn't reach Microsoft. Try again, or check the Microsoft 365 status page.
Recent sends (0/5)
No sends yet. Your last 5 sends will appear here, stored in your browser only.
When to use this tool
- You just created a new Power Automate Workflow webhook URL and want to verify it accepts traffic before you wire it up to GitHub Actions, an alerting system, or a custom script.
- You're debugging a silent failure — the upstream service says it sent the webhook, but nothing appeared in the Microsoft Teams channel. Was it the URL? The schema? The Workflow?
- You're testing whether your old
webhook.office.comURL is still alive (it isn't — the O365 Connector platform retired on March 31, 2026, but you can confirm the 404 with this tool). - You want to see how a specific Adaptive Card v1.5 payload renders in Teams without writing a one-off cURL command, finding a sample card, or building a script.
- You're demoing webhook plumbing to a teammate and want a clean, browser-based send-and-inspect loop instead of a terminal.
After the Office 365 Connector retirement
Office 365 Connectors — the legacy "incoming webhook" pattern with URLs of the form https://{tenant}.webhook.office.com/... — were retired on March 31, 2026. Microsoft's recommended replacement is a Power Automate Workflow URL, accessible from the Workflows app inside Microsoft Teams.
The new URLs look like:
https://prod-NN.westus.logic.azure.com/workflows/{guid}/triggers/manual/...This tester accepts both old (webhook.office.com) and new (logic.azure.com) hostnames so you can verify either case. If you get a 404 on a webhook.office.com URL, the Connector is dead — migrate to a Workflow URL or use a managed service like PullNotifier.
Common error codes explained
- 200 OK, but the card never appears in Teams — the Workflow accepted the HTTP request but the "Compose Adaptive Card" or "Post in chat or channel" step inside the Workflow failed silently. Open the Workflow in Power Automate, click Run history, and inspect the failed step. Most often the JSON shape doesn't match what the Compose step expects.
- 400 Bad Request — the JSON schema is invalid, or the Workflow trigger explicitly rejected the body shape. If you're sending a raw Adaptive Card, check it against the v1.5 schema using our Adaptive Card Designer.
- 404 Not Found — the URL is wrong (typo, truncated copy-paste) or the underlying Workflow has been deleted, disabled, or moved to a different Microsoft 365 tenant. Recreate the Workflow in the Workflows app inside Microsoft Teams and copy the new URL.
- 401 / 403 Unauthorized — the URL has been rotated. Power Automate Workflow URLs contain a SAS token; rotating the trigger mints a fresh URL and invalidates the old one. Recreate the trigger and update everywhere the URL is used.
- 429 Too Many Requests — Power Automate enforces per-flow throttling. If you're blasting many tests in a tight loop, slow down. (This tester also enforces 10 sends per minute per IP to keep the proxy honest.)
- 5xx Server Error — Microsoft-side outage or transient Power Automate issue. Check the Microsoft 365 status page and retry.
How the tester works under the hood
Microsoft Teams webhook URLs (both logic.azure.com and webhook.office.com) reject browser-origin requests because of CORS. That means a pure client-side tester would always fail — even when the URL is correct.
This tool gets around that with a thin server-side proxy at /api/tools/teams-webhook-test. The proxy:
- Validates that the destination hostname is one of the allowed Microsoft Teams webhook hostnames (
*.logic.azure.com,*.webhook.office.com,prod-*.azure.com) — not an arbitrary URL. - Rejects payloads larger than 10 KB and rate-limits to 10 requests per minute per IP to prevent abuse.
- POSTs your JSON to the destination URL with
Content-Type: application/json, captures the upstream status, latency, and (truncated) response body, and returns it. - Stores nothing. The proxy is stateless — your URL and payload are not logged or persisted on the server side.
Your last 5 sends are kept in your browser's localStorage so you can re-fire them quickly. Clear the history at any time with the Clear history button.
Frequently asked
Why can't I send a webhook from my browser directly?
Microsoft Teams webhook endpoints (both Power Automate logic.azure.com URLs and the legacy webhook.office.com URLs) reject browser-origin requests via CORS. That means a pure client-side fetch will always fail. This tester runs a thin server-side proxy on the same domain so the request can complete; the proxy adds the required server-to-server headers and forwards your payload unchanged.
Does this tool log my webhook URL?
No. The proxy is stateless — it does not persist your webhook URL, payload, or response body anywhere. Your last 5 sends are stored only in your own browser via localStorage so you can re-fire them; clear the history at any time. The server holds nothing.
What URL should I use here?
Use the HTTP POST URL generated by a Power Automate Workflow inside Microsoft Teams. To get one: open Microsoft Teams → Workflows app → New flow → choose a "When a webhook request is received" template → save the flow and copy the URL it surfaces. The URL starts with prod-NN.westus.logic.azure.com or similar.
My old webhook.office.com URL gives 404 — why?
Office 365 Connectors (the legacy "incoming webhook" feature) were retired on March 31, 2026. URLs of the form https://{tenant}.webhook.office.com/... no longer accept incoming requests. The 404 is expected. Migrate to a Power Automate Workflow URL, or skip the manual setup entirely with a managed service like PullNotifier.
Can I send Adaptive Cards or only MessageCards?
Both formats are accepted by Power Automate Workflows, but Adaptive Card v1.5 is the recommended (and actively supported) format. MessageCards still work for backwards compatibility, but new features and design tooling target Adaptive Cards. The presets in this tester all use Adaptive Card v1.5 wrapped in the standard Workflow message envelope.
What's the rate limit?
The proxy enforces a soft rate limit of 10 requests per minute per IP to keep things fair and prevent abuse. If you exceed this, the proxy returns a 429. Power Automate itself also throttles per-flow — if you blast many tests in a row you may see throttling on the Microsoft side too.
Why is my card not appearing in the channel even though I get 200?
A 200 from a Power Automate Workflow URL means the HTTP request was accepted, NOT that the card was successfully posted. The most common cause of a "200 but no card" is that the "Compose Adaptive Card" or "Post in chat or channel" step inside the Workflow failed silently — usually because the JSON shape your sender produced does not match what the Compose step is expecting. Open the Workflow in Power Automate and check Run history.
Can I save my test cards?
Your last 5 sends are saved automatically to your browser localStorage. Each entry shows the destination hostname, response status, and timestamp, with a Resend button that re-sends the original payload. Clear the history any time with the Clear history button. Nothing is stored server-side.
Keep reading
PullNotifier
© 2026 PullNotifier. All rights reserved
Microsoft Teams
Solutions