> ## Documentation Index
> Fetch the complete documentation index at: https://docs.surveyowl.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Prevent duplicate submissions

> Allow one response per person, identified by browser, IP address or an answer.

Turn on **Prevent duplicate submissions** in a form's **Settings** to accept one response per respondent. A second attempt isn't saved. On a Hosted form the person sees "Response already recorded". Only responses received after you turn it on are counted.

Under **Identify respondents by**, choose how SurveyOwl recognizes the same person:

| Option | How it works | Weak spot |
| - | - | - |
| **Respondent ID** | A random ID kept in the browser. | Another browser, another device or a private window gets around it. |
| **IP address** | One response per IP address. | Everyone sharing a network, like an office or a school, is blocked after the first response. |
| **Form field** | One response per value of an answer, such as an email address. | People can type a fake value. Pair it with email verification if that matters. |

For **Form field** on a Hosted form, pick the question that identifies people. It has to be a Short Text, Email, Phone Number, Website or Number question. Choice questions can't be used, because many people pick the same option.

## Endpoint forms

On an Endpoint form there are no questions to pick from, so for **Form field** you type the field's name, for example `email`, exactly as it appears in your submission.

For **Respondent ID**, your code has to send a UUID in an `X-Respondent-Id` header. Submissions without the header are still accepted. That makes this option easy to bypass, so IP address or Form field is usually a better fit for Endpoint forms.

A rejected duplicate comes back with the error code `duplicate_submission`. Show your visitor a friendly message when you see it.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.