Verifyre

Google Sheets integration

A spreadsheet formula that verifies email.

No add-on, no export. Paste one Apps Script function into your sheet and verify any column with =VERIFYRE(A2), with results cached so recalculation never re-spends a credit.

Google Sheets logo
Get an API key Setup guide

What it does

Verifyre and Google Sheets, together.

A custom function

=VERIFYRE(cell) works like any other formula and fills down. Pass a second argument for the reason, the score or a typo suggestion.

Cached for six hours

Each verdict is kept in the script cache, so edits elsewhere in the sheet do not trigger new API calls or new charges.

Whole ranges

=VERIFYRE(A2:A500) returns one verdict per row. For very large sheets, export the column and use a bulk job instead.

Setup guide

Set up Google Sheets in 3 steps.

You will need a Verifyre account (free, 100 credits) and an API key from Settings, then API keys.

  1. Add the script

    In your sheet open Extensions, Apps Script, delete the sample code and paste the function below. Save the project (any name).

    javascript
    /**
     * Verifies an email address with Verifyre.
     *
     * @param {string|Array} email An address, or a range of addresses.
     * @param {string} [field] "status" (default), "reason", "reason_text", "score", "did_you_mean" or "normalized".
     * @return The verdict for each address.
     * @customfunction
     */
    function VERIFYRE(email, field) {
      if (Array.isArray(email)) return email.map(function (row) { return row.map(function (cell) { return VERIFYRE(cell, field); }); });
      if (!email) return "";
      field = (field || "status").toLowerCase();
      var key = PropertiesService.getScriptProperties().getProperty("VERIFYRE_KEY");
      if (!key) return "Set VERIFYRE_KEY in Project settings > Script properties";
      var cache = CacheService.getScriptCache();
      var id = "vfy:" + String(email).trim().toLowerCase();
      var data = cache.get(id) ? JSON.parse(cache.get(id)) : null;
      if (!data) {
        var res = UrlFetchApp.fetch("https://verifyre.co/api/v1/verify?email=" + encodeURIComponent(String(email).trim()), {
          headers: { Authorization: "Bearer " + key },
          muteHttpExceptions: true,
        });
        if (res.getResponseCode() !== 200) return "error " + res.getResponseCode();
        data = JSON.parse(res.getContentText());
        cache.put(id, JSON.stringify(data), 21600); // 6 hours, so recalculation never re-spends a credit
      }
      var v = data[field];
      return v === null || v === undefined ? "" : v;
    }
  2. Store your API key

    In the Apps Script editor open Project Settings (the cog), scroll to Script Properties, add a property named VERIFYRE_KEY with your key from verifyre.co, and save. The key never sits in a cell.

  3. Use the formula

    Back in the sheet, type the formula next to an address and fill down. The first run asks for permission to connect to an external service; approve it once.

    text
    =VERIFYRE(A2)                      -> deliverable
    =VERIFYRE(A2, "score")             -> 99
    =VERIFYRE(A2, "reason_text")       -> The mail server confirmed this mailbox exists and accepts mail.
    =VERIFYRE(A2:A500)                 -> one verdict per row, in one call per cell
    =IF(VERIFYRE(A2)="undeliverable", "remove", "keep")

Write-back

What gets written back to your stack.

Verification only reads. Writing results back is a separate step you trigger after reviewing the counts, and nothing is ever deleted without your say-so.

  • Values in your sheet, nothing else: status, reason, reason_text, score, did_you_mean or normalized per cell, depending on the second argument.
  • Combine with conditional formatting (undeliverable in red) or FILTER() to build a clean export in one more column.

Google Sheets FAQ

Google Sheets questions

Visit the help centre
Why does the cell say Loading for a while?
Each address is a live SMTP conversation, about a second. Sheets runs custom functions in parallel, so a few hundred rows finish in a minute or two. Thousands of rows are faster through a bulk job.
Is my key visible to people I share the sheet with?
It lives in Script Properties, not in a cell, but anyone who can edit the script can read it. Use a dedicated key for the sheet and revoke it when the project is done.
Can I avoid re-verifying when the sheet recalculates?
The script caches each verdict for six hours. For a permanent record, copy the result column and Paste values only.

Connect Google Sheets in two minutes.

100 free verifications on signup, no card. Keep them for your first sync.

Get an API key See pricing