All posts

How to Verify a Google Sheet of Emails Automatically With Make

··4 min read

To verify a Google Sheet of emails automatically with Make, import one blueprint that watches the sheet, posts each new row's email to the SimpleVerifier verify endpoint and writes the answer back to the same row. You end up with three new columns: status, action and reason. Anyone who collects leads or sign-ups in a sheet can use it.

The free template is make-google-sheets-verify-rows. If you want to check a whole existing sheet once, with no setup, you can also upload it as a CSV.

What the scenario contains

It has three modules in a row:

  1. Google Sheets, Watch New Rows. It picks up each row added to the sheet. The blueprint sets it to read up to 10 rows per run and treats the first row as headers.
  2. HTTP, Make a request. It sends a POST to https://simpleverifier.com/api/v1/verify with a JSON body holding the email.
  3. Google Sheets, Update a Row. It writes three values into the same row.

The HTTP module parses the JSON response and has a 40 second timeout, because a live mailbox check on a slow server can take about 30 seconds.

What you need

  • A Make account.
  • A Google Sheet with the email in column A.
  • A SimpleVerifier API key from the API keys page. It starts with sv_live_.

Step 1: prepare the sheet

Put a header in row 1. Put each email in column A. Leave columns B, C and D free. You can name them status, action and reason so the sheet reads well.

Step 2: import the blueprint

Download the blueprint. In Make, create a scenario, open the three dots menu at the bottom and choose Import Blueprint. Pick the file.

Step 3: connect Google and choose the sheet

Open the first module. Connect your Google account and choose your spreadsheet and sheet. Do the same in the last module. A blueprint never carries connections, so this step is always yours.

Step 4: paste the key

Open the HTTP module. In the Authorization header replace YOUR_SIMPLEVERIFIER_API_KEY with your key, keeping the word Bearer and a space in front of it. To keep the key out of the scenario export, store it in a Make data store or a custom variable and map it instead.

The body is {"email": "<column A of the new row>"}. The API docs list every field in the response.

Step 5: check the mapping

The update module writes these values:

Column Value from the response
B status
C action
D reason

If your layout differs, change the mapping in the first and last modules.

Step 6: test with a few rows

Add three or four addresses. Run the scenario once. Check that columns B, C and D fill in. Then switch the scenario on. Make polls on the schedule you set, so a new row may wait until the next run.

How to read the result

The action column is the one to filter on:

  • send: the mail server confirmed the mailbox. Use it.
  • send_with_care: a catch-all domain, a role inbox or a provider that hides mailbox status. Test a small batch before you send more.
  • retry_later: the check could not finish. Check it again later.
  • do_not_send: the address will bounce or is a throwaway. Remove it.

Catch-all addresses are never marked valid. In the catch-all study, 39.1% of 4,943 sampled business domains accepted a made-up address, and 52.3% of Google Workspace domains did, so a sheet of business emails often has a send_with_care group.

Limits to know

Each key can make 120 calls a minute. The scenario handles a few rows per run, so you are unlikely to reach that. For a big backfill of an old sheet, a CSV upload is faster than a scenario. Plan details for API access are on the pricing page.

Troubleshooting

If a row stays blank, open the scenario history in Make and read the HTTP module's output. The common answers are:

  • 401: the key was not accepted. Check it on the API keys page and make sure the header reads Bearer, a space, then the key.
  • 402: your plan does not include API access or is not active.
  • 429: you reached the rate limit. The next run carries on.

If the wrong cells fill in, the first column of your sheet is probably not the email. The body reads the first column of the watched row, so move the email to column A or change the mapping.

Using the results

Add a filter view on the action column that shows only send. Copy those rows to the tab you import into your sequencer, or point your sequencer at that view. Keep the other rows in the sheet rather than deleting them, so you can see later why they were held back.

Where your judgment still matters

Make updates its modules over time. If Make marks one as outdated, re-add it and copy the settings from this page. And treat risky rows as a decision for you. A column that says send_with_care is a label, not an instruction.

For weekly re-checks of the same sheet, see the Google Sheets weekly re-verify template. For a longer Make walkthrough, read verify emails with Make. If the next step is a sequencer, verify leads in n8n before Instantly shows the same gate in n8n.

Frequently asked questions

Does it import without edits? You connect your own Google account and choose your sheet. Nothing else needs changing for the default layout.

Where does the key go? In the Authorization header of the HTTP module, or in a Make data store you map into it.

Can I use a different column? Yes, change the mapping in the first and last modules.

Common questions

How do I verify a Google Sheet of emails automatically in Make?

Import the free blueprint, connect your Google account in the first and last modules, paste your SimpleVerifier key in the HTTP module and switch the scenario on. Each new row is checked and its status, action and reason are written to columns B, C and D.

Where should the API key live?

The blueprint holds the placeholder YOUR_SIMPLEVERIFIER_API_KEY in the Authorization header. Paste your key there, or map it from a Make data store or custom variable so the key is not in the scenario export.

Does the blueprint import without edits?

The file follows Make's blueprint format. You still connect your own Google account and choose your spreadsheet. If Make flags a module version as outdated, re-add the module and copy the settings.

What if my email is not in column A?

Change the mapping in the first and last modules. The HTTP body reads the first column of the watched row, and the update writes to the next three columns.

Check your list before you send

Real mailbox checks over SMTP, and nothing is sent to the address. Sign in with Google and your first 100 email checks are free, no card. Plans for bigger lists are on the pricing page.