To send Microsoft Forms responses to Teams, build an automated cloud flow in Power Automate with the Forms trigger When a new response is submitted, add Get response details to fetch the answers, and finish with the Teams action Post message in a chat or channel. The whole flow uses standard connectors, so it runs under a Microsoft 365 licence. This guide covers each step, the two Forms-specific quirks that surprise people, and the limits and errors to expect.
Who this is for and what you will have
This is for teams that collect requests, feedback or incident reports with Microsoft Forms and want the right people notified in Teams immediately. By the end you will have a working flow that posts a readable summary of each response to a channel, with checks for formatting, permissions and message size.
Prerequisites
- A Microsoft Forms form owned by a work or school account. The Forms connector works only with organizational accounts.
- Access to the target Teams team and a standard channel. Posting to private channels is not supported.
- The Workflows app allowed in the Teams admin center. Microsoft states the Teams post actions require the Workflows app to be available and set to the allow state.
- Access to the Power Automate portal. The Microsoft Forms connector is listed as Standard for Power Automate; confirm the class of the Teams connector on its Learn page before you roll the flow out.
Step 1: Create the flow with the Forms trigger
- Sign in to the Power Automate portal and select Create, then Automated cloud flow.
- Name the flow and search for the trigger When a new response is submitted from Microsoft Forms.
- Select Create.
- In Form Id, pick your form from the list.
Group forms
Group forms do not appear in the dropdown. Open the form for editing, copy the Form Id from the address bar, and paste only the part after FormId= into the Form Id field.
Step 2: Get the response details
The trigger returns a notification payload that contains the response ID, not the answers. Microsoft describes the response ID as the value to use with the Get response details action.
- Select New step and add Get response details from Microsoft Forms.
- Set Form Id to the same form. For a group form, paste the same Form Id.
- Set Response Id to the Response Id dynamic content from the trigger.
The outputs of this action are dynamic. They include one field per question, so what you see in the dynamic content panel depends on the questions in your form. Run the flow once, or submit a test response, if the fields do not show up while you build.
Step 3: Post to Teams
- Add a new step and search for Microsoft Teams.
- Select Post message in a chat or channel.
- Set Post as. The options include Flow bot and User. The Flow bot option is available only in commercial tenants; in Government Cloud tenants it fails with BotNotInConversationRoster and you must use User.
- Set Post in to Channel, and then select the Team and the Channel.
- In Message, write a short template and insert dynamic content from Get response details.
A sample message layout:
New response to the IT request form
Submitted by: <responder from Get response details>
Request type: <answer to question 1>
Details: <answer to question 2>Replace the angle-bracket placeholders with dynamic content tokens from the panel. If the form records names, the responder's details appear among the outputs.
Mention someone
A single message can mention up to 20 users and 20 tags. Use the Teams connector's mention features for the people who handle requests, and keep the list short.
Post as the flow bot or as a user
Posting as Flow bot posts from the bot rather than from a person. Posting as User posts under the connection owner's identity and ties the flow to that person's access. For notifications that the business depends on, consider the Flow bot where it is available and keep a co-owner on the flow.
Step 4: Save and test
- Select Save.
- Open the form and submit a test response.
- In the flow's details page, check the run history. A successful run shows green steps.
- Confirm that the message appears in the channel with the expected values.
If the run does not start, give it a minute and refresh the run history, then check the form ID and that the form belongs to an organizational account.
Limits and known issues
| Item | Value |
|---|---|
| Forms connector accounts | Organizational accounts only |
| Forms API calls | 300 per connection per 60 seconds |
| Teams message size | About 28 KB including HTML elements |
| Mentions per message | Up to 20 users and 20 tags |
| Private channels | Posting not supported |
| Group forms | Form Id entered manually |
Teams posts above about 28 KB fail with Request Entity too large. Long free-text answers, tables and images count toward that size, so truncate long answers with an expression such as substring(variables('answer'), 0, 500) after checking that the string is at least 500 characters long, or link to the response instead of embedding it.
Troubleshooting
The flow never triggers
Confirm that the flow is turned on, the Form Id is correct and the connection account can access the form. For group forms, use the manually copied Form Id.
CannotDisableTriggerConcurrency error
Microsoft notes this error when the Forms trigger's concurrency control has been turned on and then off, because that cannot be undone in the designer. The workaround is to export the flow, remove the concurrency control section from the JSON and import it again.
Post fails with a Teams error
Check that the Workflows app is allowed in the Teams admin center, that the connection account can post in the team, that the channel is not private, and that the message is under the size limit. For Flow bot errors in Government Cloud tenants, switch Post as to User.
Authentication errors
Errors that say Unauthorized, 401 or 403 mean the connection needs repair. Open the failed step, use Fix connection, and Resubmit. If the flow works in the portal but fails when it is run from Teams or SharePoint, review Conditional Access as described in Power Automate flow failed: read run history and fix common errors.
Answers appear as blank
If a question was optional and the respondent skipped it, the dynamic content is empty. Add a Condition or use the coalesce() expression to supply default text.
Improve the flow
- Add an Approval or a follow-up task if the notification should result in action; see Power Automate approval workflow with SharePoint.
- Store each response in a SharePoint list for reporting before posting to Teams.
- Wrap the Teams action in a Scope with a Catch branch so a failed post alerts you, as in Power Automate error handling with try-catch scopes.
- Use a shared service account or the Flow bot, and name a co-owner.
Closing checklist
- Form owned by an organizational account.
- Workflows app allowed in the Teams admin center.
- Trigger set with the correct Form Id, entered manually for group forms.
- Get response details uses the trigger's Response Id.
- Teams post targets a standard channel and stays under the size limit.
- Test response submitted and message verified.
- Failure alert and co-owner in place.
References
- Microsoft Forms connector reference: https://learn.microsoft.com/en-us/connectors/microsoftforms/
- Microsoft Teams connector reference: https://learn.microsoft.com/en-us/connectors/teams/
- Troubleshoot a cloud flow: https://learn.microsoft.com/en-us/power-automate/fix-flow-failures
- Limits of automated, scheduled, and instant flows: https://learn.microsoft.com/en-us/power-automate/limits-and-config
Comments
Questions and tips are welcome. Comments are checked by the EpiFive team before they appear; please do not share passwords, phone numbers or other private details.