← Al Davies, 250 High Street

Stop people filling in a Microsoft Form more than once

Turn on "One response per person" in the form settings. It works only when the form is set to "Only people in my organization can respond" or "Specific people in my organization can respond". It does not work for "Anyone can respond", because those answers are anonymous and Forms cannot tell who sent them (per a Microsoft Q&A answer). For outside people, ask for an ID in the form, copy each response into a SharePoint list with Power Automate, and flag any ID that shows up twice. The exact names of menus and buttons may differ from what is written here, because Microsoft changes its screens from time to time.

Why people fill in a form twice

Most repeats are not tricks. A person is not sure the first answer went through, so they send it again. Or they fill it in on the phone, then again on the laptop. Or two people from the same team both answer for the team.

The result is the same: your count is wrong. Ten sign-ups look like twelve, or one person gets two orders.

Before you pick a fix, decide who your respondents are. The right fix depends on that.

Fix 1. Use the built-in setting for signed-in people

Microsoft's page on choosing who can fill out a form gives three options: "Anyone can respond", "Only people in my organization can respond" and "Specific people in my organization can respond". The same page says: "Select One response per person if you don't want your recipients to submit a form or quiz more than once."

One way to start:

  1. Open your form in Microsoft Forms and open the settings.
  2. Under who can respond, choose "Only people in my organization can respond" or "Specific people in my organization can respond".
  3. Turn on "One response per person".
  4. Open the form link in a second browser profile, signed in as a different test person, and check that it works. Then try a second answer from the same account. It should be blocked.

Microsoft's page says: "If you limited Who can respond to this form to people from your organization, you can check the boxes below that setting to Record name and see who submitted each response, or limit responses to One response per person." You can clear Record name if you want answers to be anonymous. Exact names may differ.

Here is how the three audience options compare, from Microsoft's page on choosing who can fill out a form:

The same page says respondents must be from your organization for their names to be recorded, and that you can clear "Record name" if you want answers to be anonymous. The one-response column above follows the Microsoft Q&A answer, since the Support page does not spell it out for "Anyone can respond".

What this fix does not do:

Fix 2. For outside people, ask for an ID and flag repeats

If your form is open to anyone, Forms cannot tell people apart. So you give each person something that tells them apart, and you check it yourself. This method does not block the second answer. It marks it, so a person can review it. That is a different job, and for many teams it is enough.

What you build:

Step 1. Choose the ID

This is the most important choice. The ID must be something each person has, and nobody else can easily guess.

Make the ID question required in the form. Add a short line under it: "Use the code from your invite." Short instructions cut down on typing mistakes.

Step 2. Build the list

Create a SharePoint list named "Form responses". The Title column comes with every new list and is required by default. Use it for the ID. Rename it to "ID" so it is clear.

Add these columns:

The numbers in front of the choices keep your order. A Choice column sorts by its text, so the numbers are there to keep the order you want. Set the default value of Review to "1 First response".

Choose column types before you create the columns. Changing a type later can damage data already in the column. That is our advice, not a Microsoft rule.

Step 3. Start the flow

Go to Power Automate and create a cloud flow. Microsoft's connector page for Forms lists the trigger "When a new response is submitted". It asks for a Form Id, so pick your form. The same page says this trigger returns a Response Id, and you use it with the "Get response details" action to fetch the answers.

  1. Add the trigger "When a new response is submitted" and pick your form.
  2. Add the action "Get response details". Use the same form and the Response Id from the trigger.

The Forms connector page says the connector only works with organizational accounts. That means the person who builds the flow needs a work or school account. Your respondents can still be outside people if the form allows it.

Step 4. Look for the same ID in the list

Add the SharePoint action "Get items". Pick your site and the "Form responses" list.

Two settings matter:

Single quotes in an ID can break the filter. If your IDs can contain a single quote, avoid that kind of ID. That is our advice, not a Microsoft rule.

Step 5. Save the response with a flag

Add a Condition after "Get items". Check whether the list of items from "Get items" is empty.

You can save the repeat as a new row instead of dropping it. That way nobody loses an answer, and a person decides what to do. Maybe the second answer fixes a mistake in the first.

Map each field one to one. Make the Choice words in the flow match the Choice words in the list exactly, including the number at the front.

Step 6. Test it

  1. Submit the form once with a test ID. A row should appear with "1 First response".
  2. Submit again with the same ID. A second row should appear with "2 Repeat, review".
  3. Submit with a new ID. It should be "1 First response".
  4. If a row does not appear, open the flow in Power Automate and look at its run history. Select a run to see which step stopped.

Delete the test rows when you are done.

Step 7. Review the repeats

Make a view called "Repeats" that shows only rows where Review is "2 Repeat, review". Microsoft says filters that use [Today] or [Me] need the classic view editor (Edit current view, then Filters). I also use the classic view editor for blank and "is not equal to" filters, and that part is our advice, not a Microsoft rule. For this view, a plain filter on the Review column is enough.

Pick one person to check the view each day. Decide the rule in advance: keep the first, keep the latest, or ask the person.

Why not turn on Enforce unique values?

A SharePoint column has an "Enforce unique values" setting. It would refuse a second row with the same ID. That is an option if you want a hard block in the list. Know what it does before you use it.

An archived Microsoft page, written for SharePoint Foundation 2010, says:

Screens in Microsoft 365 may differ from that page, so test on a small copy of the list. Also note that with this setting on, the flow cannot save the repeat row. The "Create item" action fails, and the person who filled in the form sees nothing. That is why this guide saves the row with a flag. If you want the hard block, remove the Review choice and let the failed run tell you about the repeat.

Can I cap the number of responses?

Not with a built-in setting. A Microsoft Q&A answer says: "there is no setting or feature in the Microsoft Forms to restrict the form responses to only first 50 respondents." That answer suggests a custom flow that turns off Accept responses. But the Forms connector page lists only two actions, Get form details and Get response details, and neither one changes form settings. The safer plan is a flow that alerts you at your number, and then you close the form. For the full steps, see "Close a Microsoft Form after a set number of responses".

What to avoid

Honest limits

This method catches the same ID twice. It does not catch one person using two IDs, or one ID shared with a friend. It also does not stop the second answer from going to Forms. The row in Forms results still exists. The list is your clean copy.

The flow runs under the account that built it. If the account that owns the flow is closed, the repeat check stops. Our advice, not a Microsoft rule: add a co-owner while the builder is still on the team.

Microsoft lists a limit on the Forms connector of 300 calls per connection every 60 seconds. A small team will not reach it.

If you collect sensitive answers, check with your admin first about where that data can be stored.

For the base setup of copying Forms answers into a list, see "Save Microsoft Forms answers to a SharePoint list". For duplicate rows inside a spreadsheet, see "Stop duplicate entries in a shared spreadsheet".

When to get help

You can build all of this yourself in Microsoft 365. If you would rather have it built and tested for your team, I do that. A tracker like this is a fixed price: $5,000 for one, built in 2 weeks. See "What a SharePoint tracker costs to build". Bring one example of the problem to a free call.

Tell me what's still manual

I am Al Davies. I run 250 High Street LLC and build SharePoint trackers and Power Automate flows for operations teams. I work remotely. The first call is free, and I will not try to sell you anything.

See trackers I built: Tools I built

FAQ

Can Microsoft Forms limit one response per person?

Yes, for people in your organization. Choose "Only people in my organization can respond" or "Specific people in my organization can respond", then turn on "One response per person". Exact names may differ.

Why is "One response per person" missing or grayed out?

A Microsoft Q&A answer says it is not available when the form is set to "Anyone can respond". Change who can respond to your organization, then look again.

Can I stop outside people from answering twice?

Not with the built-in setting. One way to start is to ask for an ID in the form and flag repeat IDs in a SharePoint list.

Can a form with one response per person stay anonymous?

Microsoft's page says you can clear "Record name" for anonymous answers. A form open to anyone cannot limit one response per person.

Can I limit the number of responses to a form?

Not with a built-in setting, per a Microsoft Q&A answer. Use a Power Automate flow that alerts you at your number, then turn off "Accept responses" yourself.

Sources