SheetMagicSheetMagic

Verify Email Addresses in Google Sheets Before They Bounce

Check a whole email list with =VALIDATEEMAIL in Google Sheets and split it into send, review and remove piles before a campaign goes out. 1,000 addresses is 10 formulas and 6,400 scraping credits.

Phil Nguyen · 6 min read

To verify email addresses in Google Sheets, put the addresses in one column and type =VALIDATEEMAIL(A2:A101) in an empty cell. SheetMagic checks every address for format, deliverability and provider type and writes a verdict per address, so you drop the dead ones before they bounce instead of finding out after the campaign has gone out.

Think of a sales rep about to load 1,000 addresses from an old CRM export into a sequence. Some of those people have changed jobs, and every dead address that goes out is a bounce counted against the sending domain, plus a contact someone has to clean out by hand afterwards. Checking all 1,000 first is 10 formulas of 100 addresses each, at 640 scraping credits per formula, so 6,400 credits for the whole list. Each row comes back with Email, Result, Quality, Detail and Free Provider columns.

There is nothing to export and no separate verification tool to log into. The formula runs inside the sheet with the SheetMagic add-on installed.

Formula

=VALIDATEEMAIL(A2:A101)

One call checks up to 100 addresses. The cell shows a loading placeholder, then the verdicts land on their own results tab.

How does VALIDATEEMAIL work?

Give it a range or an array literal of addresses. A single column range, or an array literal such as =VALIDATEEMAIL({B2;B7;B12}) for a few scattered cells, is flattened into a plain list before it is checked.

Then:

  1. The cell shows ⏳ Scraping... while the check runs in the background.
  2. The verdicts are written to a new tab named Email Validator Results. The first column, Source, holds the address of the formula cell that asked for each row.
  3. With Keep Formula off, the formula cell changes to a status such as ✅ 100 results → Email Validator Results. With Keep Formula on, the formula stays in the cell.

Keep the formula in its own cell. It returns a placeholder and the real rows arrive later, so wrapping it inside another formula will not work.

What do Result, Quality and Detail mean?

Each address gets one row with five columns:

ColumnWhat it tells youExample values
EmailThe address that was checked
ResultThe overall verdictvalid, invalid, catch_all
QualityHow safe it is to send tohigh, risky, bad
DetailThe reason behind the verdictaccepted_email, dns_error, ok
Free ProviderTRUE for free mailbox providers such as Gmail or YahooTRUE, FALSE

A few example combinations:

  • valid / high / accepted_email is a mailbox that accepted the check.
  • invalid / bad / dns_error means the domain could not be resolved, so nothing will be delivered.
  • catch_all / risky means the domain accepts every address, so this particular mailbox cannot be confirmed.

The validator's own documentation lists catch-all, disposable and free among the possible reasons, so the Detail column is where a throwaway provider shows up.

Why is a format check not enough?

A format check only tells you an address is written correctly. An address at a domain that does not exist passes any format rule and still bounces.

VALIDATEEMAIL checks each address for format, deliverability and provider type, so it catches the cases a pattern cannot see: domains that do not resolve, catch-all domains and throwaway providers.

How much does validating a list cost?

VALIDATEEMAIL uses scraping credits: 40 credits per run plus 6 credits per address checked.

That per-run part is why one range call beats one call per row:

How you run itRunsCredits for 100 addresses
=VALIDATEEMAIL(A2:A101) once140 + 100 x 6 = 640
=VALIDATEEMAIL(A2) dragged down 100 rows100100 x (40 + 6) = 4,600

Each call returns up to 100 addresses. For a longer list, use one formula per block of 100 (A2:A101, A102:A201 and so on). Formulas of the same shape in the same column, run together, write to one shared results tab.

Credits are held when the job starts and settled to what was delivered. A run that returns nothing is not charged. If your balance is short, the run is cut to what you can afford and a row says Limited to N results to fit your remaining credits.

The AI tokens vs scraping credits guide explains how scraping credits differ from the AI balance.

What can you do with the verified list?

Treat the results tab as a sorting step before you send. Three piles, each with a payoff:

  1. Send only what will land. The high pile goes straight into your sequence, so your send count is spent on mailboxes that exist.
  2. Slow down on the risky ones. Catch-all addresses cannot be confirmed. Put them in a smaller, separate send so a bad batch does not drag down the main campaign.
  3. Clean the source. The bad pile is the list of contacts to delete or re-research in your CRM, so the next campaign does not pay to check or send to them again.

With the headers in row 1 of Email Validator Results, the Email column is B, Result is C and Quality is D.

Send list, only high quality addresses:

=FILTER('Email Validator Results'!B2:B, 'Email Validator Results'!D2:D="high")

Review list, anything risky, such as catch-all domains:

=FILTER('Email Validator Results'!B2:B, 'Email Validator Results'!D2:D="risky")

Remove list, anything marked bad:

=FILTER('Email Validator Results'!B2:B, 'Email Validator Results'!D2:D="bad")

If you only want business addresses, also check the Free Provider column (F), which is TRUE for free mailbox providers such as Gmail or Yahoo. For the full prospecting workflow around this step, see Enrich Lead Lists in Google Sheets and the sales lead generation guide.

FAQ

Does VALIDATEEMAIL send an email to the address?

No. It takes only the list of addresses and returns a verdict for each one. There is no option to compose or send a message.

Why pass a range instead of dragging the formula down?

Every run costs 40 credits before the 6 credits per address. One call on 100 addresses costs 640 credits. One hundred single-cell calls cost 4,600.

Does it work on the Free plan?

Yes. Free comes with 100 scraping credits, which covers one run of up to 10 addresses (40 + 10 x 6 = 100). If you ask for more, the run is cut to what your balance covers. Solo includes 10,000 scraping credits a month.

How many emails can I check in one call?

Up to 100. Split longer lists into blocks of 100 addresses, one formula per block.

How much does it cost to clean a 1,000-address list?

Ten formulas of 100 addresses each, at 40 credits per run plus 6 per address, is 10 x 640 = 6,400 scraping credits. Solo's 10,000 monthly credits cover that with room to spare. Dragging a single-cell formula down 1,000 rows instead would cost 46,000.

Text and scraping formulas run on the free allowance. Install from the Google Workspace Marketplace, no card, no expiry.

Install free for Google Sheets

About the author

Phil NguyenPhil builds SheetMagic, the Google Sheets add-on that brings AI and web scraping into the spreadsheet, used by 6,300+ people. He writes these guides from the formulas he runs on his own sheets.