# Google Forms Integration for Email Validation

URL: https://email-validation.org/integrations/google-forms/
Updated: 2026-11-06

> Documentation index: https://email-validation.org/llms.txt

A ready-made Apps Script checks the email address of each new Google Forms response a few seconds after it arrives, and writes the result next to it in the response sheet. It can also mail you a daily digest of the bad ones, and a menu item checks every response already there.

[Read the full setup guide](https://email-validation.org/docs/guides/google-forms/) [Get an API key](https://email-validation.org/signin/)

- Status: Setup guide
- One script, added to your form

**Email validation menu** In the form editor

Menu items

```text
Set API key
Choose the email question
Check new responses: turn on
Daily digest of bad addresses: turn on
Check all responses
Status

Columns in the response sheet:
Validation status  Validation reason  Validation action  Did you mean
```

## At a glance.

- **Status**: **Setup guide.** Not listed on a marketplace yet: you set it up yourself in a few steps, below and in the full guide.
- **For**: Anyone who collects addresses with a Google Form, such as event registrations, sign-ups or lead forms, and wants to know which responses will bounce before mailing them.
- **You need**: A Google Form that collects email addresses or asks for one in a short-answer question, best linked to a response sheet, and an [API key](https://email-validation.org/app/api-keys/) made for it, with a [daily credit cap](https://email-validation.org/docs/authentication/#limits). To check more than 50 responses at once, the key also needs the bulk scope.
- **Costs**: 1 credit = 1 validated address, as with any API request. Free: unknown results, API errors, malformed addresses and test addresses on sandbox.email-validation.org.
- **Full guide**: [Read the full setup guide](https://email-validation.org/docs/guides/google-forms/)

## Typical uses.

- **Check each new response**: One trigger checks each new response a few seconds after it is saved, and writes the status, reason, action and a suggestion to its row in the response sheet.
- **A daily digest**: Once a day, around 8:00 in the script’s time zone, one mail to you lists up to 50 responses that were invalid, disposable or could not be checked, by time, status and reason, never by address.
- **Check older responses**: Check all responses checks every row without a status: up to 50 addresses as single checks, more as one bulk list, which it asks you about first, naming the most credits it can use.

## Set it up. 5 steps.

The short version of the [full setup guide](https://email-validation.org/docs/guides/google-forms/), which stays the reference when a step does not match what you see.

1. **Create a key**: Create an API key for the form with a daily credit cap, and with the bulk scope too if you will check many responses at once.
2. **Paste the script**: In the form editor, open ⋮, Apps Script. In a new project, replace everything in Code.gs with the script from the guide; if the project holds code of yours, add a new script file for it instead. Save.
3. **Set your key**: Reload the form editor and choose Email validation, Set API key. The first time, Google asks you to allow the permissions the script needs. For EU data residency, also choose Set region and type eu.
4. **Choose the question**: Choose Email validation, Choose the email question: 0 for the address the form collects, or the number of the short-answer question that asks for it. When it can, the script picks it by itself.
5. **Turn checks on**: Choose Email validation, Check new responses: turn on. Link the form to a sheet under Responses, Link to Sheets, to see four result columns next to each response.

## Good to know.

- It cannot block a bad address at submit time: Google Forms always saves a response first. Turn on the question’s own Response validation, Text, Email to catch malformed addresses before the form is sent.
- Each person who uses the menu saves their own key, in their own user properties of the script, which other editors cannot read. A form has one trigger for new responses, running on the key of the person who turned it on.
- An address that already has a result in the sheet, in any mix of case, is copied instead of checked again. A bulk list still running when Apps Script ends a run is collected by the next Check all responses, never sent twice.
- Google may say it has not verified the script, because it is your own script and not a published app: choose Advanced and continue to your project.
- Try it first with `accepted@sandbox.email-validation.org` and the other [test addresses](https://email-validation.org/docs/test-addresses/): each returns the result its name says and costs nothing.

## Related

- [The full Google Forms setup guide](https://email-validation.org/docs/guides/google-forms/)
- [The permissions it asks for, and why](https://email-validation.org/docs/guides/google-forms/#permissions)
- [The daily digest](https://email-validation.org/docs/guides/google-forms/#digest)
- [Google Sheets template, for a sheet of addresses](https://email-validation.org/integrations/google-sheets/)
- [Statuses and reasons: what each result column means](https://email-validation.org/docs/statuses/)
- [All integrations](https://email-validation.org/integrations/)
