I often get a request how to collect data from external users using PowerPlatform. Of course, MS Forms immediately comes to mind. Sure, this makes it easy to create an impersonal & undynamic form and the user has to fill in all the information.
However, the problem is not with MS Forms per se, but with the fact that all access is anonymous. (only company internal users can be authenticated via login) furthermore only authenticated users can upload and submit files.
What can my proposed solution and what does it look like?
– This can display dynamic content
– Can identify & associate each form user and their input
– any user can upload files
Solution: We use HTTP requests and HTML forms
(Note: this requires a PowerAutomate Premium license – but I think the customer experience should be worth it)
What do we need?
- a flow which creates and sends the dynamic link to the form
- a flow which dynamically fills in an html form and displays it to the user
- a flow which processes the user input
1. The trigger flow
First we have to create the form flow because only after saving it we get the link to start this flow via link. We will then add a dynamic parameter to this link so that we can track it. Here i used MAIL=triggerinput()?[‘text’]
2. The form flow
Here is our html-form deposited. We can either save this as a file on SharePoint / OneDrive or another source and retrieve it or save it directly (as in this example) as html text in the flow.
for this we use a html-form template, which we can easily find on the internet and adapt some things. (i got my form from www.w3docs.com)
1. Here I have displayed the key as an example, which we had sent with flow 1
2. Simply insert the trigger link from the following flow as with the flow 3
3. Here I have simply inserted the correctly formatted dynamic content as an example
4. this is the html form template from here: 5K & 10K Registration Form
Important: we need to send a hidden input so that we can access the tracking again after the submit. however, we could also send this again via the deeplink as in flow 1 – both are possible here
3. The processes flow
here we simply process the input of the user from the html-form incl. the parameter so that we can assign the user directly.
here we see what the user has filled in the form and can now process it