Send Microsoft Forms Responses to a SharePoint List Automatically
By Rahul A
By Rahul A
Power Automate can take every Microsoft Forms response and create a matching item in a SharePoint list, then notify whoever owns it. You build it from three actions: the Forms trigger, Get response details, and Create item. The step that trips most people up is that Forms returns choice and date answers as text, so a few fields need converting before SharePoint will accept them.
Microsoft Forms is a good way to collect answers and a bad way to keep them. The results page shows you responses in the order they arrived, and when you want to filter them, assign them, or report on them, the only route out is Export to Excel. So somebody exports on Monday, and by Wednesday the spreadsheet is out of date and there are two versions of it.
A SharePoint list fixes that, because it is a real list: sortable, filterable, permissioned, and connected to everything else in Microsoft 365. What is missing is the bridge between the two, and the bridge is three actions long.
Do this before touching Power Automate. It takes five minutes and it saves you twenty.
Create the SharePoint list and add one column per form question, choosing the column type deliberately:
New, In progress, Done — this one has no matching form question and exists so humans can work the listNow add one item by hand, filling every column the way a real response would. That row is your specification. When the flow runs, its output should be indistinguishable from what you just typed.
In Power Automate create an Automated cloud flow and choose When a new response is submitted (Microsoft Forms). Pick your form from the dropdown.
This trigger is deliberately thin. It gives you a response ID and almost nothing else, which surprises people who expect the answers here. The answers come next.
Add Get response details (Microsoft Forms). Choose the same form, and set Response Id to the Response Id token from the trigger.
This is the action that actually returns the answers, and it is the one people skip. Without it there is nothing to write into the list. Once it is in place, every question on your form becomes an available token named after the question text.
Add Create item (SharePoint), point it at your site and list, and map each column to the matching token.
Two of those mappings will not work first time, and it is always the same two.
Dates. Forms hands you a date as text. SharePoint wants a date. Wrap it:
formatDateTime(outputs('Get_response_details')?['body/rYourQuestionId'],'yyyy-MM-dd')
Choice columns. The text Forms returns has to match the SharePoint choice exactly, including capital letters and any trailing spaces. "In Progress" and "In progress" are two different answers as far as the list is concerned. If a choice column keeps failing, this is almost always why.
Everything else, text and numbers, maps straight across.
A list nobody looks at is a spreadsheet with extra steps. Add Post message in a chat or channel (Teams) or Send an email (V2) (Outlook), and write a line with the tokens in it:
New request from [Responder's Email]
Type: [Request type]
Open it: [Link to item]
Include the link to the item. That single field is the difference between a notification that gets acted on and one that gets scrolled past.
If the notification should go to different people depending on the answer, add a Condition before it and compare the relevant response, then put a different message in each branch.
Switch the flow on and submit the form as yourself. Compare the row the flow created against the row you typed by hand at the start. They should match field for field.
Then submit a second response that deliberately makes life difficult: leave an optional question blank, pick the choice you thought nobody would pick, and put an apostrophe in a text answer. Blank answers and unexpected choices are what break these flows in week three, not week one.
Once responses land in a list, the list becomes the trigger for everything else. The obvious next step is sign-off: point an approval at the new item and let the answer be recorded on the same row, which is exactly the shape covered in building a Power Automate approval flow.
If the requests arrive with documents attached rather than as form answers, the filing half of the problem is covered in auto-filing email attachments to SharePoint.
Open Power Automate, create an automated flow on the Forms trigger, and wire up just three actions: Get response details, Create item, and one Teams message. Map only the three or four fields you genuinely need, not every question on the form.
Submit one test response and check the row. Once it matches the row you typed by hand, add the rest of the columns, the routing and the approval — each one is a small addition to a flow that already works.
Build the SharePoint list first, with a column for every question the form asks, and add one row by hand. Then build the flow to reproduce exactly the row you just typed.
That’s the whole lesson. Try it on a real task while it is fresh, then come back for the next one.
If you are on Microsoft 365, use Power Automate with the built-in Forms trigger and a SharePoint list as the destination. It needs nothing installed, runs inside your tenant, and gives you a list you can filter, sort and report on, which the Forms results page cannot do. Reach for a different builder only when the form itself lives outside Microsoft.
The same corner of the library, one job further on.
Drafted with AI assistance from our own research and Search Console data, and reviewed by Rahul A before publishing. Tools and prices change; check the linked official source before you act.