← Docs

Microsoft Teams webhook: post form responses to a channel

Post every response into a Teams channel as an Adaptive Card, each answer labelled by the question that was asked. Setup is one URL from Workflows — the replacement for the Incoming Webhook connector Microsoft retired.

The old Incoming Webhook connector no longer delivers

Microsoft retired Office 365 connectors inside Teams, with the rollout beginning 18 May 2026. A webhook.office.com URL does not fail loudly — it simply stops posting.

Use Workflows instead, as below. Paste a connector URL here and the connection check says so rather than calling it invalid, because that URL is not wrong — it is switched off.

Create the Workflows webhook

  1. In Teams, hover the channel and open its menu → Workflows.
  2. Choose Post to a channel when a webhook request is received.
  3. Confirm the team and the channel, then finish.
  4. Copy the URL it shows at the end. It looks like https://prod-00.westus.logic.azure.com/workflows/…&sig=….

If Workflows is missing from the menu, your tenant restricts who may create flows. An administrator can make the workflow and send you the URL; nothing else about the setup changes.

Copy the whole URL

The sig= value at the end is the signature that authorises the request, and the URL is long enough that a partial copy is easy. A truncated URL fails as a 401, which reads as a permissions problem and sends people to check the flow rather than the paste.

Anyone holding the whole URL can post into that channel. Treat it like a password; delete the workflow to revoke it.

Adding the destination to your form

  1. Open your form, then Settings → Storage.
  2. Choose Microsoft Teams.
  3. Paste the workflow URL.
  4. Press Send test message, then look at the channel.
  5. Save.

Every submission then arrives as an Adaptive Card: the form’s name as the heading, then one fact per question. An unanswered optional question shows as rather than being left out, because a skipped question is worth seeing.

Why does the test say “accepted”?

Because a Workflows webhook is asynchronous. Power Automate answers 202 Accepted the moment it takes the request, and runs the flow afterwards. The status confirms the request was received; it never confirms that a card appeared.

This is Teams’ version of the trap Slack has with its HTTP 200: a card the client cannot render is accepted and posts nothing. It is why the message envelope and the card version are fixed rather than left to taste — and why, if a card does not show up, the honest place to look is the workflow’s run history in Power Automate rather than anything on this side.

Why is my Teams webhook not working?

SymptomWhat to do
Nothing arrives, no error anywhereThe URL is almost certainly a retired connector (webhook.office.com). Create a Workflows webhook and paste that instead.
401 or 403The signature was rejected — usually a URL copied short. Copy the whole thing again from the workflow trigger.
404The workflow was deleted or turned off. Check it in Power Automate, or make a new one.
429Throttled, and that card was not delivered. A very busy form may need its own workflow. The response is still stored.
Accepted, but no card in the channelThe flow ran and failed. Open it in Power Automate and read the run history — it names the step that failed.
Workflows missing from the ⋯ menuYour tenant restricts flow creation. An administrator can create it and send you the URL.

Coming from Google Forms?

Google Forms has no Teams integration. The usual routes are an Apps Script you write and maintain, or a paid connector with a task quota — both of which sit between the form and the channel as one more thing to break.

Here it is one field in the form’s own settings. Most fields map across one for one; see the full comparison for what does not, including quiz scoring. If a Teams card is all you are after, a webhook into your own flow is free on every plan.

Common questions

Are Microsoft Teams incoming webhooks deprecated?
Yes. Microsoft retired Office 365 connectors inside Teams, and the retirement rollout began on 18 May 2026. A webhook.office.com URL created under the old Incoming Webhook connector stops delivering — it does not error in your form, it simply posts nothing. The replacement is a Workflows webhook, built on Power Automate, whose URL is on logic.azure.com. Seagit Forms accepts only the Workflows URL, and tells you plainly if you paste a connector one.
How do I get a Teams webhook URL?
In Teams, open the channel’s ⋯ menu → Workflows, choose "Post to a channel when a webhook request is received", confirm the team and channel, and copy the URL it gives you at the end. It is long and contains a sig= value at the end — copy the whole thing, because a truncated URL fails as a 401 that looks like a permissions problem.
Do I need a Power Automate licence?
The webhook template is included with the Microsoft 365 licences that include Teams; it uses a standard connector rather than a premium one. Your tenant administrator can restrict who may create flows, in which case the Workflows menu item is missing and an admin has to create the workflow for you — they only need to send you the resulting URL.
Why does the test say "accepted" instead of "sent"?
Because that is what actually happened. A Workflows webhook is asynchronous: Power Automate answers 202 Accepted the moment it takes the request, then runs the flow afterwards. A card it cannot render is accepted and posts nothing, so claiming "sent" would be a guess. If the card does not appear, open the workflow in Power Automate and read its run history — that is where the real outcome is.
Is the webhook URL a secret?
Yes. The sig= value at the end is a shared access signature, and anyone holding the whole URL can post into that channel — no account and no membership required. Treat it like a password. If it leaks, delete the workflow in Power Automate and create a new one; the old URL stops working immediately.
What happens to a very long answer?
It is shortened and marked with an ellipsis rather than the whole card being dropped. Only the first 25 answers are shown as facts, with a line counting the rest. The complete response is always in your dashboard and CSV export — the Teams card is a notification, not the record.
Can I post into a private channel or a chat?
A Workflows webhook posts into the channel it was created in, including a private channel you are a member of. There is no webhook for a one-to-one chat; post into a channel, or use Telegram if you want submissions in a direct message.
Is Teams delivery on the free plan?
No. Teams, Google Chat, Slack, Discord, Airtable, Notion and Google Sheets are all on the paid plans — Basic at $20 a month and above. Webhooks and Telegram are free, and a webhook can reach Teams through your own Power Automate flow if you would rather not pay for the built-in one.

Keep reading