Email verification in Google Sheets means checking every address in a column to see whether it can actually receive mail, then writing a status back next to each row, all without leaving the spreadsheet. The fastest way to do it is a sidebar add-on: you select the column of emails, click run, and each address is checked against its mail server and returned as deliverable, undeliverable, risky, or unknown. ReplyLabs does this from inside Sheets, prices the run before it starts at $0.01 per email, and only charges for addresses that return a result. This guide covers why verification matters, how it works, how catch-all and disposable addresses are handled, the bounce-rate impact, what it costs, and the exact steps.
Why verify an email list at all
Every invalid address you send to is a bounce, and bounces are the single fastest way to wreck a sending domain. A bounce occurs when a mail server refuses your message, usually because the mailbox does not exist. Mailbox providers read a high bounce rate as a signal that you are not maintaining your list, and they respond by routing more of your mail to spam, even the mail going to valid recipients.
The benchmarks are tight. A healthy bounce rate sits below 2 percent, and most deliverability guidance treats anything above 5 percent as dangerous. On cold outbound the stakes are higher still, because a single campaign sent to a list with a 10 percent bounce rate can damage a mailbox for weeks, and two bad campaigns in a row can flag it permanently. Verifying the list before you send is how you stay in the safe range.
There is a second reason that matters if you run AI or scraping over the same list. Cleaning out dead addresses before the expensive steps means you do not spend model tokens or scrape credits on rows you will never email. Verify is the cheap filter that protects the costly work downstream, which is why it sits early in most cold email workflows built from Google Sheets.
How email verification works
Verification is not a single check. A good verifier runs several layers and returns the combined verdict:
- Syntax. Is the address even shaped like an email? This catches typos like a missing
@or a stray space. Google Sheets can do this part alone with the built-inISEMAILfunction, but syntax is the weakest signal: a perfectly formatted address can still be dead. - Domain and MX records. Does the domain exist, and does it publish mail-exchange records that say where to deliver mail? A domain with no MX records cannot receive email at all.
- Mailbox check. The verifier opens an SMTP conversation with the receiving server and asks whether the specific mailbox exists, without actually sending a message. This is the layer that separates a real inbox from a typo on a valid domain.
- Risk flags. Is the address disposable, a role account, or on a catch-all domain? These do not make an address invalid, but they change how much you should trust it.
ReplyLabs runs these layers through established verification providers, including No2Bounce, Bouncer, and Kickbox, and normalises the result into a single status column you can sort and filter. You do not manage the provider connection or the SMTP plumbing; you select a column and read the verdicts back.
What the verdicts mean
The status written next to each row falls into a small set:
- Deliverable. The mailbox exists and accepts mail. Safe to send.
- Undeliverable. The mailbox does not exist or the domain cannot receive mail. Do not send; these are your would-be hard bounces.
- Risky or accept-all. The domain accepts everything, so the verifier cannot confirm the specific mailbox. Covered below.
- Unknown. The server did not give a clear answer in time, often a temporary timeout. Re-running later sometimes resolves these.
The point of the column is triage. You keep the deliverable rows, drop the undeliverable rows, and make a deliberate call on the risky ones rather than discovering the answer when your bounce rate spikes.
How catch-all (accept-all) addresses are handled
A catch-all domain is configured to accept mail for every possible address, even mailboxes that do not exist, so that nothing is ever lost. The problem for verification is that an SMTP check always comes back positive on these domains, whether the mailbox is real or not. You cannot tell veronika@company.com apart from random-gibberish@company.com because the server accepts both.
Catch-all addresses are common: industry data puts them at roughly 9 to 15 percent of an average list, and B2B lists often run higher. A verifier that simply marked them all deliverable would be lying to you, and one that marked them all undeliverable would throw away a large share of reachable prospects. The honest answer is a separate status, and that is what ReplyLabs returns: catch-all rows are flagged as risky rather than guessed. You decide whether to send, and the catch-all email definition explains the trade-off in more depth. A common middle path is to send to catch-all rows on a separate, warmed sending identity so any bounces do not touch your primary domain.
How disposable and role addresses are handled
Two more flags change how much you trust an otherwise valid address:
- Disposable addresses use throwaway domains that expire in minutes or hours. They are technically deliverable today and gone tomorrow, so they are noise in any list you intend to email more than once.
- Role addresses like
info@,sales@, orsupport@reach a shared inbox rather than a person. They are real, but they convert poorly on outbound and some providers treat heavy role-address sending as a spam signal.
ReplyLabs surfaces both as flags alongside the deliverability verdict, so you can filter them out before a send without losing the underlying status.
The bounce-rate impact, in numbers
The reason teams verify is that the cost of not verifying is non-linear. A clean list keeps you under the 2 percent bounce threshold that mailbox providers treat as normal. Cross it, and the effects compound: ISPs flag your domain, spam filters tighten, and a list with a 6 percent bounce rate can drag open rates from 25 percent down into single digits within weeks. Once reputation is damaged it takes weeks of careful sending to recover, and some damage does not fully reverse. Verification is cheap insurance against a problem that is expensive and slow to undo. The mechanics of that reputation loss are covered in the email deliverability definition.
What email verification costs
ReplyLabs charges $0.01 per email verified, and only addresses that return a result are billed. Syntactically broken rows that never reach a server, and rows you exclude before running, cost nothing. New accounts start with $20 of free credit, which is enough to verify 2,000 addresses before you pay anything.
Two things keep the bill predictable. First, you see the price for your exact row count in the cost preview before anything runs, so a 5,000-address list shows you its cost up front. Second, because billing is per result, a list that turns out to be half junk only bills you for the addresses that were actually checked. There is no subscription tier to clear and no per-seat verification minimum.
How to verify an email list in Google Sheets, step by step
The flow takes under a minute to set up:
- Install ReplyLabs from Extensions, Get add-ons, then open it with Extensions, ReplyLabs, Open sidebar.
- Put your email addresses in a single column with a clear header such as
Email. - In the Verify tab, select the column range you want to check.
- Review the cost preview. It shows the exact total for your row count at $0.01 each.
- Click Run. A status column fills in row by row: deliverable, undeliverable, risky, or unknown.
- Filter the sheet on the status column. Keep the deliverable rows, drop the undeliverable rows, and decide what to do with the risky ones.
Because each address is its own check, a slow or unreachable server on one row never blocks the rest, and you can keep working in the sheet while results stream in. For provider-level detail and edge cases, see the email verification help page.
Where verification fits in a wider workflow
Verification is rarely the only step. In a typical outbound sequence built in one sheet it sits in the middle:
- Scrape or import your prospect list into the sheet.
- Verify the addresses so you do not waste sends, AI spend, or scrape credits on dead rows.
- Filter to the deliverable rows worth contacting.
- Run AI to write a personalised opener for each remaining prospect.
Putting verify before the AI and scrape steps is deliberate. It is the cheapest operation in the chain, so spending it first to remove the rows that will never pay you back keeps the expensive steps focused on real prospects. Everything happens in the same spreadsheet, so there is no export to a separate verification tool and re-import afterwards.
Common mistakes to avoid
- Sending before verifying. The whole point is to catch bounces before the mailbox provider does. Verify first, every time you build a new list.
- Treating catch-all as deliverable. Accept-all domains are not a green light. Decide deliberately whether to send, ideally on a separate identity.
- Verifying once and trusting it forever. Addresses decay. People leave companies and mailboxes are deactivated, so re-verify a list that has been sitting for months before you send to it again.
- Keeping role and disposable addresses in a personal-outbound list. They convert poorly and can hurt reputation. Filter them out using the flags.
Common questions
Can Google Sheets verify emails on its own?
Only the syntax. The built-in ISEMAIL function checks whether a string looks like a valid address, but it cannot tell you whether the mailbox exists or accepts mail. For real deliverability you need an add-on that checks the domain and mailbox, which is what ReplyLabs does from the sidebar.
How much does it cost to verify a list?
$0.01 per email, and only addresses that return a result are charged. New accounts get $20 of free credit, enough for 2,000 verifications. The cost preview shows the exact total for your row count before you run.
What does a catch-all or risky status mean?
The domain accepts mail for every address, so the verifier cannot confirm whether the specific mailbox exists. The address is not invalid, but it is unconfirmed. See the catch-all email definition for how to handle these rows.
What bounce rate should I aim for?
Below 2 percent is healthy, and above 5 percent is dangerous for your sending reputation. Verifying the list before you send is the most reliable way to stay in the safe range.
Is my data sent anywhere I should know about?
Each address is passed to the verification provider used for the check, then the row content is retained only briefly before purge. Metadata about the run persists so you can see your history. ReplyLabs is operated by Empra Consultancy LTD and is not affiliated with reply.io.