Verifyre

How to clean a Brevo contact list before your next campaign

How to clean a Brevo contact list: connect with an API key, verify the list, write results to an attribute, move dead contacts to a suppression list or blocklist, and know when to re-run it.

To clean a Brevo contact list, export or connect the list, verify every address over SMTP, then write the verdict back as a contact attribute and move undeliverable contacts to a suppression list or Brevo's blocklist. On a 20,000 contact list the whole process takes under an hour, and it is the single most effective way to protect the shared sending IPs that most Brevo accounts send from.

Why does a Brevo list need cleaning?

Brevo (formerly Sendinblue) handles bounces for you: when an address hard bounces, Brevo blocklists it so it cannot be emailed again from your account. That is good hygiene after the fact, but the bounce has already happened, and bounces are the metric that matters most to the receiving providers.

On Brevo's free, Starter and most Business plans you send from shared IP pools. Your reputation is pooled with other senders, and Brevo's own deliverability team monitors accounts whose hard bounce rate climbs; a campaign that bounces heavily can be paused and your account reviewed. The typical line where receivers start throttling is around 2% hard bounces, and a list that has not been cleaned for a year will usually sit well above that on its first send, since lists decay at roughly 22% a year.

There is also the cost of a wasted send. Brevo prices by emails sent, not contacts stored, so every message to a dead address is a paid message that was never going to be opened.

What should you verify first?

Prioritise by what will be emailed soonest:

  • The list you are about to send a campaign to.
  • Contacts imported from a CSV, an event or a purchased source that have never been emailed.
  • Contacts with no open or click in the last 6 months.

A contact who clicked last week is proven; skip them this round.

How do you clean a Brevo list with the integration?

  1. Create a Brevo API key. In Brevo, click your account name > SMTP & API > API keys tab > Generate a new API key. Give it a name such as "Verifyre" and copy the v3 key. Keys are shown once.
  2. Create a contact attribute to hold the verdict. Contacts > Settings > Contact attributes > Add a new attribute. Name it VERIFYRE_STATUS, type Category, with the values deliverable, undeliverable, risky and unknown. Optionally add VERIFYRE_SCORE (Number) and VERIFYRE_CHECKED (Date).
  3. Create a suppression list. Contacts > Lists > Add a new list, named "Undeliverable (Verifyre)". You will exclude this list from every campaign.
  4. Connect Brevo in Verifyre. Open the Brevo integration, paste the API key, and pick the list to clean. Map the verdict to VERIFYRE_STATUS and, if you want it fully automatic, tick the option to move undeliverable contacts to the suppression list or add them to the blocklist.
  5. Run the verification. Verifyre pulls the contacts, checks each address with a real SMTP conversation (no message is ever sent) and writes the results back. One credit per unique address, and anything checked in the last 24 hours is free.
  6. Check the summary. A list that has been sent to regularly usually comes back 80% to 90% deliverable. A cold import can be 60% or worse. The undeliverable share is the figure that would have become your bounce rate.
  7. Exclude the suppression list from every campaign. When you create a campaign, under Recipients choose your list and add "Undeliverable (Verifyre)" to the exclusion. If you chose the blocklist option in step 4, Brevo already refuses to send to those addresses and no exclusion is needed.
  8. Segment the risky contacts. Create a segment where VERIFYRE_STATUS equals risky. Send to it separately, at lower frequency, and watch the bounce figure on that campaign alone.

How do you do it manually with CSV?

If you would rather not connect an API key, the export and import route works:

  1. In Brevo, open the list, select all contacts, Export, and include the EMAIL column plus any attributes you want to keep.
  2. Upload the file to the bulk email verifier. Jobs accept up to 50,000 addresses, and the results file returns every original column with status, score and reason added.
  3. Filter the results into two files: undeliverable addresses, and everything else.
  4. Import the undeliverable file into Brevo (Contacts > Import contacts) choosing the suppression list, or use Contacts > Blocklist > Import to blocklist them outright.
  5. Import the full results file against your original list, mapping the status column to VERIFYRE_STATUS, so segments can use it.

The manual route is fine for a quarterly clean. The integration earns its keep when contacts arrive continuously, because it can be scheduled and it never works from a stale export.

What should you do with each verdict?

VerdictScore bandBrevo action
Deliverable90 to 100Keep in the list, send normally
Risky (catch-all, full mailbox, role account)30 to 89Segment separately, low frequency, no cold campaigns
Unknown (server would not answer)30 to 89Re-verify after 48 hours; treat as risky if still unknown
Undeliverable0 to 29Move to the suppression list or blocklist; exclude from all campaigns

Blocklisting is stronger than suppression: a blocklisted address cannot be re-added by a later import without you unblocking it, which protects you from re-importing the same dead addresses next quarter. Suppression keeps the contact's history visible and is the better choice if you may want to re-confirm those contacts later.

When should you re-run it?

  • Before any campaign to contacts not emailed in the last 90 days. This is where most surprise bounces come from.
  • After every import. Imports are the single biggest source of dead addresses.
  • Quarterly for the whole account. At around 22% annual decay, a quarterly run catches roughly 5% of your list going bad each time, which is what email list decay looks like in practice.
  • Continuously at the form. If your signup forms feed Brevo, real-time verification on the form stops bad addresses entering the list at all.

Repeat verifications of unchanged addresses within 24 hours are free, and the bulk list cleaning page describes how scheduled runs work.

Key takeaways

  • Brevo blocklists an address after it bounces; verification removes it before the bounce counts against the shared IP.
  • Store the verdict in a VERIFYRE_STATUS attribute and drive segments and exclusions from it.
  • Undeliverable contacts go to a suppression list or the blocklist; risky ones get their own low-frequency segment.
  • The CSV route works for a quarterly clean; the integration suits accounts with daily imports.
  • Re-verify before any send to contacts untouched for 90 days.

Frequently asked questions

Will Verifyre delete contacts from my Brevo account?

No. It writes attributes and, if you choose, moves contacts to a list or the blocklist. Nothing is deleted, and the contact history stays intact.

Does verification send an email to my contacts?

No. The check is an SMTP conversation that stops before any message content is transmitted, so contacts see nothing and there is no unsubscribe to worry about.

What is the difference between Brevo's blocklist and a suppression list?

The blocklist is account-wide and permanent until you remove the address; Brevo refuses to send to it from any campaign or transactional flow. A suppression list is just a normal list you exclude from campaigns by hand.

How many credits does a clean use?

One credit per unique address, so a 20,000 contact list uses at most 20,000 credits. Duplicates and anything verified in the last 24 hours cost nothing.

Put it into practice.

100 free verifications on signup. Clean a list, add the widget, or call the API.

Start free See pricing