For growth marketers, outbound agencies, and indie founders, Google Sheets is often the central staging ground for scraped B2B prospects, webinar registrations, and CRM exports. Yet exporting CSVs, uploading them to a separate tool, and re-importing filtered columns every day creates version-control chaos—while third-party Google Workspace Marketplace add-ons routinely charge $0.005 to $0.01 per row ($500 to $1,000 for 100,000 emails).
In this step-by-step guide, we show you how to verify emails directly inside Google Sheets at $0.0002 to $0.00059 per email ($59 per 100,000 credits) using two zero-markup methods:
- Method 1 (Native Google Apps Script): Paste a 30-line script into your spreadsheet to unlock the custom
=MAILVERI_VERIFY(A2)formula with automatic 6-hour cell caching. - Method 2 (Make.com Watch Rows Automation): Automatically verify every new row added to Google Sheets via Make.com’s
HTTP - Make a requestmodule and routeVALIDleads into Instantly, Smartlead, or HubSpot.
1. Cost Comparison: Google Workspace Marketplace Add-Ons vs. Direct API
Most “1-click” email verifier extensions in the Google Workspace Marketplace act as middlemen that mark up verification credits by 5x to 15x and expire unused monthly quotas:
| Google Sheets Verification Method | Cost for 10,000 Rows | Cost for 100,000 Rows | Credit Expiration & Unknown Policy |
|---|---|---|---|
| Typical Marketplace Add-Ons (ZeroBounce / Hunter Sheets) | $80 – $149 | $400 – $649 | Monthly subscription quotas expire; add-on rate limits stall large sheets |
| MailVeri + Free Apps Script / Make.com | $9 ($0.0009/row) | $59 ($0.00059/row) | Credits never expire • 100% auto-refund on UNKNOWN |
2. Method 1: Verify Emails in Google Sheets with Apps Script (Zero Add-On Fees)
You can add a native =MAILVERI_VERIFY(A2) formula to any Google Sheet in under two minutes:
- Open your Google Sheet and click Extensions → Apps Script.
- Click the gear icon (Project Settings) on the left sidebar, scroll to Script Properties, and add a property named
MAILVERI_API_KEYwith your key from the MailVeri Dashboard (1,000 free credits included). - Paste the following script into
Code.gs(or download our full menu-driven script from the Google Sheets Integration Page):
1/**2 * MailVeri Google Sheets Custom Function & Bulk Verifier3 * Usage in any cell: =MAILVERI_VERIFY(A2)4 * Set your API key in Project Settings -> Script Properties -> MAILVERI_API_KEY5 */6function MAILVERI_VERIFY(email) {7 if (!email || typeof email !== 'string' || email.indexOf('@') === -1) {8 return 'EMPTY_OR_INVALID';9 }10 11 var cache = CacheService.getScriptCache();12 var cacheKey = 'mv_' + email.trim().toLowerCase();13 var cached = cache.get(cacheKey);14 if (cached) return cached;15 16 var apiKey = PropertiesService.getScriptProperties().getProperty('MAILVERI_API_KEY');17 if (!apiKey) {18 return 'ERROR: Set MAILVERI_API_KEY in Script Properties';19 }20 21 var response = UrlFetchApp.fetch('https://api.mailveri.com/v1/verify-mail/', {22 method: 'post',23 contentType: 'application/json',24 headers: { Authorization: 'Bearer ' + apiKey },25 payload: JSON.stringify({ email: email.trim() }),26 muteHttpExceptions: true27 });28 29 var data = JSON.parse(response.getContentText());30 var status = data.status || 'UNKNOWN';31 cache.put(cacheKey, status, 21600); // Cache verdict for 6 hours32 return status;33}Because Google Sheets recalculates custom formulas when a sheet is reopened, the script uses CacheService.getScriptCache() to cache each email’s verification status. For sheets larger than 2,000 rows, use the MailVeri → Verify Selected Rows menu button in our downloadable google-sheets-mailveri.js template, which writes static values directly into Column B so formulas never re-trigger.
3. Method 2: Automate Google Sheets + Make.com Email Verification
If new leads flow into your Google Sheet continuously from Facebook Lead Ads, Typeform, Tally, or Apollo scrapers, connect Make.com to verify each row in real time before it reaches your CRM or cold outreach sequencer:
- Module 1 (Google Sheets — Watch New Rows): Trigger when a new prospect row is appended.
- Module 2 (HTTP — Make a request): Send a
POSTrequest tohttps://api.mailveri.com/v1/verify-mail/withParse response: Yes:
POST https://api.mailveri.com/v1/verify-mail/
Authorization: Bearer YOUR_MAILVERI_API_KEY
Content-Type: application/json
{
"email": "{{1.email}}"
}- Module 3 (Google Sheets — Update a Row): Write
{{2.data.status}}and the normalized address{{2.data.mail}}back to your spreadsheet. - Module 4 (Router): Route rows where
status == "VALID"into Instantly, Smartlead, or HubSpot, while suppressingINVALID,DISPOSABLE, andFULL_INBOXcontacts so your hard bounce rate stays strictly below 2%.
4. Frequently Asked Questions
What is Google Apps Script’s daily UrlFetchApp quota for Google Sheets?
Standard Gmail accounts can make up to 20,000 UrlFetchApp calls per day, and Google Workspace business accounts can make up to 100,000 calls per day. For lists above 50,000 rows, we recommend uploading the CSV directly to the MailVeri Bulk Dashboard (which processes up to 1,000,000 rows per batch asynchronously).
