Google Sheets is where most teams manage their prospect lists before loading them into a cold email sequencer. Verifying emails directly inside Sheets - without exporting, uploading to another tool, and re-importing - saves significant time. This guide covers three methods: the Apps Script approach (best for real-time verification), the bulk export/import workflow (best for large lists), and what not to use (formula-based checks that only validate format, not deliverability).
⚠ This is the most common mistake
Google Sheets has an ISEMAIL() function. It returns TRUE if a string looks like a valid email address format (has an @ symbol, a domain, a TLD). It does NOT check whether the mailbox exists, whether the domain has working MX records, or whether the email will deliver. ISEMAIL("[email protected]") returns TRUE. Real email verification requires an SMTP-level check, which requires making an API call to an external service.
This method calls the BounceZero real-time API for each email in your list and writes the result back to a column next to it. Setup takes about 5 minutes. Once the script is in place, verification runs on demand with a single menu click.
Go to app.bouncezero.io > Settings > API. Copy your API key. You get 100 free credits on a new account - enough to verify 100 email addresses at no cost.
In Google Sheets, click Extensions > Apps Script. This opens the Apps Script editor. Delete any existing code in the editor.
Copy and paste the script below into the editor. Replace YOUR_API_KEY_HERE with your actual BounceZero API key. Click Save (⌘S or Ctrl+S).
Back in your Sheet, refresh the page. A new “BounceZero” menu will appear in the top menu bar. Click BounceZero > Verify Emails. The script will read all emails in column A and write results to column B.
Valid = safe to send. Invalid = remove from list. Risky = inspect individually. Catch-all = check the score column for deliverability estimate (0-100). Unknown = could not determine; retry or exclude.
// BounceZero Email Verifier for Google Sheets
// Paste this in Extensions > Apps Script
const BOUNCEZERO_API_KEY = 'YOUR_API_KEY_HERE'; // Replace with your key
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('BounceZero')
.addItem('Verify Emails', 'verifyEmails')
.addToUi();
}
function verifyEmails() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const emails = sheet.getRange('A2:A' + sheet.getLastRow()).getValues();
// Write header
sheet.getRange('B1').setValue('Verification Result');
sheet.getRange('C1').setValue('Catch-All Score');
for (let i = 0; i < emails.length; i++) {
const email = emails[i][0];
if (!email) continue;
try {
const url = 'https://api.bouncezero.io/v1/verify?email=' + encodeURIComponent(email);
const options = {
method: 'get',
headers: { 'Authorization': 'Bearer ' + BOUNCEZERO_API_KEY },
muteHttpExceptions: true
};
const response = UrlFetchApp.fetch(url, options);
const data = JSON.parse(response.getContentText());
sheet.getRange(i + 2, 2).setValue(data.result || 'unknown');
sheet.getRange(i + 2, 3).setValue(data.catch_all_score ?? '');
// Rate limit: 2 requests/second
Utilities.sleep(500);
} catch (e) {
sheet.getRange(i + 2, 2).setValue('error');
}
}
SpreadsheetApp.getUi().alert('Verification complete!');
}
For large lists, the Apps Script approach runs into Google’s 6-minute execution limit (free accounts). The bulk export/import workflow is faster for large volumes because BounceZero processes the entire list in parallel rather than sequentially.
In Google Sheets, select the email column. File > Download > CSV. Or use File > Download > Microsoft Excel if you want to keep multiple columns. The email column can be in any position - BounceZero auto-detects it.
Go to app.bouncezero.io > Bulk Verify. Upload the CSV file. BounceZero will detect the email column and process the list. Processing time depends on volume: 10,000 emails typically takes 5-15 minutes.
When processing completes, download the results CSV. It contains the original email plus new columns: result, classification, catch_all_score, and reason.
Open the results CSV. Copy the result columns. Paste them into your original Sheets document next to the email column using Paste Special > Values only (to avoid formatting issues). Use VLOOKUP or INDEX/MATCH to align on the email address if row order changed.
In Sheets, filter column B (result) = “valid”. For cold email, also include catch-all addresses with score above 60. Export the filtered list and load into your sequencer.
| Criteria | Apps Script Method | Bulk Export/Import |
|---|---|---|
| Best for | Up to 500 emails | 500+ emails |
| Setup time | 5 minutes (one-time) | None (manual each time) |
| Stays inside Sheets | Yes | No (separate upload step) |
| Speed | Sequential (1 per 0.5s) | Parallel (entire list at once) |
| Technical skill needed | Basic (paste a script) | None |
| API credits used | 1 per email | 1 per email |
| Automation possible | Yes (trigger on edit/time) | No |
New to verification? Start with the complete email verification guide.
Yes. The most reliable method is using Google Apps Script to call the BounceZero API for each email address. This gives you real-time verification results (valid, invalid, risky, catch-all score) directly in a new column in your spreadsheet. A simpler alternative for small lists is the bulk export/import method: download the column as a CSV, upload to BounceZero, and paste the results back.
There is no native Google Sheets formula for email verification. Formulas like ISEMAIL() only check email format (does it look like an email?) - they do not check whether the mailbox actually exists or delivers. Real email verification requires an SMTP-level check, which requires an API call via Apps Script or an external tool.
With the Apps Script method, Google limits script execution to 6 minutes per run for free accounts (30 minutes for Workspace accounts). This limits single-run verification to roughly 100-500 emails depending on API response time. For larger lists (1,000+), use the bulk export/import workflow: download the column as CSV, upload to BounceZero for bulk processing, and paste results back.
Export your list, upload to BounceZero, and get results in minutes. Or use our API key in Apps Script for real-time verification inside Sheets. 100 free credits, no card required.
Single-email checks, no signup required
Verify a single address instantly
Verify a whole list up to your free monthly credits
Check if any email address is real
Validate email before you send
See exactly what an MX server says
Find which domains accept anything
Explore other topics