# Verify emails in Airtable with Spaw

Verify new Airtable records through Zapier, Make or an automation script that calls the Spaw API, write the verdict back, and bulk-clean the whole table.

Updated: 2026-09-03

Airtable bases collect addresses from forms, imports and interfaces, and a verdict column next to the email column is the simplest way to keep them honest. There are three ways to fill it: a Zap or Make scenario that reacts to new records, an Airtable automation that runs a short script, and a bulk run for the rows already there. All three write the same fields.

## Prepare the table

1. Add three fields: a single select or text field named Verdict, a text field named Reason, and a number field named Risk score. A fourth text field for the suggested correction is worth having.
2. Create a view that shows records whose Verdict is empty; the flows below use it as their trigger and their to-do list.
3. Create a secret API key on the API keys page of your Spaw dashboard.

## Verify new records through Zapier or Make

1. Start the flow with the Airtable trigger for a new record in the view from step 2.
2. Add the verification step: a Webhooks by Zapier POST or a Make HTTP request to `https://spaw.co/api/v1/email` with the header `Authorization: Bearer sk_live_…` and this body, mapping the record's email field:

```json
{
  "email": "mia@acme.com"
}
```

The [Zapier page](/integrations/zapier) and the [Make page](/integrations/make) show the step in full. When the Spaw apps for those platforms are listed, it becomes a Verify Email action with a saved connection.

3. Add the Airtable action that updates a record, match on the record id from the trigger, and map `data.deliverable`, `data.reason`, `data.risk_score` and `data.did_you_mean` into the four fields. Filling Verdict removes the record from the view, so it is not processed twice.

## Verify inside an Airtable automation

Airtable automations can run a script with network access, which removes the need for a third tool. Create an automation triggered when a record enters the empty-Verdict view, add a script action, pass the record id and email as input variables, and use this script:

```js
const { recordId, email } = input.config();
const table = base.getTable('Leads');

const response = await fetch('https://spaw.co/api/v1/email', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer sk_live_…', 'Content-Type': 'application/json' },
  body: JSON.stringify({ email }),
});
const result = await response.json();

if (result.success === false) {
  throw new Error(`Spaw: ${result.error.code} ${result.error.message}`);
}

await table.updateRecordAsync(recordId, {
  'Verdict': result.data.deliverable,
  'Reason': result.data.reason ?? '',
  'Risk score': result.data.risk_score,
  'Suggestion': result.data.did_you_mean ?? '',
});
```

The key sits in the script, so anyone who can edit the automation can read it; give the base its own key and revoke it from the API keys page if the base is shared widely. Test with `deliverable@spaw.test`, a free test address that answers a fixed result and is never logged.

## Clean a whole table

Export the table to CSV, run the email column through a bulk verification on the Spaw dashboard or with the [bulk endpoint](/docs/api/create-bulk-job), and import the result back with the verdict columns mapped to the four fields, matching on the primary field. The result keeps your original columns. For a spreadsheet rather than a base, the [Google Sheets page](/integrations/google-sheets) offers a custom function instead.

## What to do with the verdict

Filter views on Verdict. `deliverable` records are ready for outreach. `risky` records need the Reason: `catch_all` means an unconfirmed mailbox on a domain that accepts everything, `role` means a shared inbox, `disposable` means a throwaway address. `undeliverable` records should be kept out of sends, and a filled Suggestion field is usually a person worth one correction.

## Cost

Each record that answers deliverable or risky spends 1 credit; undeliverable answers and repeats within seven days are free. Zapier and Make bill their own tasks; Airtable automation runs count against your Airtable plan. Bulk runs bill per processed row and verify duplicates once.

Reference: https://spaw.co/integrations/airtable
