- Valid. The mailbox exists and accepts mail.
- Risky. Deliverable, but worth a look: a role account (
info@,support@), a disposable address, or a catch-all domain that accepts everything. - Invalid. The address can’t receive mail. Don’t send to it.
reason and, where a typo looks likely, a didYouMean correction (gamil.com to gmail.com). The verdict is saved on the contact, so a list you validated stays validated.
Each checked address costs 2 credits, drawn from the same credit balance as AI email generation and charged only when the check completes.
From an Audience
The most credit-efficient way to validate. Open the audience, then click the three-dot menu in the top right corner of the audience view (next to Download CSV) and choose Validate contacts. Every contact in that audience is checked.On CSV Import
The CSV import has a validation checkbox. Tick it and every address in the file is deliverability-checked as it’s ingested, so bad addresses never enter your list unflagged.
When Adding a Contact Manually
The add-contact form has the same checkbox. Tick it and the address is checked as it’s saved.
From MCP
If Brew is connected to your AI client, the easiest flow is to ask for your audiences, pick one, and validate it:“List my audiences.”
“Validate the contacts in the newsletter audience.”The agent calls
list_audiences and then validate_contacts, and replies with the verdict counts and the addresses that came back risky or invalid. The create_contact and import_contacts_csv tools take the same opt-in validation as the UI checkboxes.

From the API
The same check is available on three endpoints:POST /v1/contacts/validatechecks up to 100 addresses at once and writes the verdict back onto matching contacts. Each result carriesrisk,isDisposable, andisRolesignals alongsidereasonanddidYouMean.POST /v1/contactsandPOST /v1/contacts/import-csvaccept an optionalvalidate: trueto check each address as it’s ingested. Up to 100 addresses validate inline; larger submissions upsert first and validate as a background job, returning avalidationJobId.
brew.contacts.validate(...), and the ingestion methods take the same validate flag. The contact’s verdict field is named validationStatus. If a check can’t complete, the call returns a retryable 503 and you are not billed.
What to Do with the Verdicts
- Valid contacts need nothing. Send as usual.
- Risky contacts deserve a look before a big send. Role accounts rarely engage, disposable addresses churn fast, and catch-all domains can’t be confirmed either way. Consider excluding them from your primary sending audience.
- Invalid contacts should leave your active audience. Sending to them produces hard bounces, and hard bounces hurt every future send. See Audience Hygiene for the wider cleanup routine.
Need help?
Our team is ready to support you at every step of your journey with Brew. Choose the option that works best for you:- Self-Service Tools
- Talk to Our Team
Search Documentation
Type in the “Ask any question” search bar at the top left to instantly find relevant documentation pages.
ChatGPT/Claude Integration
Click “Open in ChatGPT” at the top right of any page to analyze documentation with ChatGPT or Claude for deeper insights.