# Verify email addresses before you send.

Re-verify any address older than 90 days before every campaign. Invalid ones drop out, catch-all addresses get their own lane, team inboxes stay out – and your bounce rate stays under 2 percent.

https://listplus.ai/en/gtm-workflows/verify-email-addresses-before-sending

## Inputs and connections

A list or CSV with email addresses – and, if you have it, the date of the last check. The same call from Claude Code, n8n or ChatGPT.

An agent with a key or sign-in; the workspace's credits. Without a list it works straight from addresses in the file.

## Steps

1. **Pick the stale addresses** (Your agent · by call). Rows whose address was never checked or was checked more than 90 days ago. Email data decays by 20 to 30 percent a year.
2. **Check deliverability** (ListPlus · by call). verify_email answers valid, invalid, catch_all or unknown per address – up to 25 per call, at once. An address checked in the last 7 days costs nothing.
3. **Flag team inboxes and disposable addresses** (ListPlus · by call). The standard checks find info@, office@ and throwaway domains at no credit cost. A verified team inbox is deliverable – and still not a person.
4. **Set the lanes** (Your team · manual in ListPlus). valid → main sequence. catch_all → its own low-volume lane. invalid and disposable → do not send. If a campaign passes 2 percent hard bounces: stop and re-verify the list.

## Expected sample result

Of 25 addresses, 19 are valid, 3 catch_all, 2 invalid, 1 is a team inbox. 19 go into the main sequence, 3 into their own lane, 3 are not written to.

## Costs and boundaries

0.3 credits per address – 25 addresses cost 7.5 credits ($0.26 on Pro). An address checked in the last 7 days costs nothing. The checks for team inboxes and disposable domains are free of credits.

A check says whether the mailbox exists – not whether the person still works there. A hard bounce on a known contact hints at a job change (see that recipe).

## Agent prompt

Take the list “Q1 Outbound”. Find every row whose email was never checked or was checked more than 90 days ago. Verify them with verify_email in batches of 25. Set invalid to status “Do not send”, catch_all to “Own lane”. Leave team inboxes (info@, office@) out. Change nothing that is valid, and tell me what it cost.

## Tools

`describe_list`, `query_records`, `check_list`, `verify_email`, `mark_records`

MCP: https://listplus.ai/mcp
REST: https://listplus.ai/a/v1/{action}
API: https://listplus.ai/a

## Sample calls

These calls use fictional IDs. Use the IDs returned by your workspace.

```text
verify_email({
  "emails": [
    "lena.graf@nordwerk-muster.de",
    "info@kontur-muster.de",
    "t.lenz@helioworks-muster.de"
  ]
})
mark_records({
  "list_id": "<shared_list_id>",
  "record_ids": [
    "<invalid_row_id>"
  ],
  "status": "Do not send"
})
```
