All posts

How to Clean an ActiveCampaign List Without Losing Good Contacts

··6 min read

To clean an ActiveCampaign list, let its bounce handling deal with addresses you have already mailed, export and verify the contacts it has never mailed or not mailed recently, re-import the invalid ones with the Import as Unsubscribed Contact option, and unsubscribe contacts who have stopped engaging. Before deleting anything, check which contact-limit rules your account is on, because that changed in November 2025.

Everything here comes from ActiveCampaign's help centre, read in October 2026.

What ActiveCampaign already does for you

ActiveCampaign marks a contact as Bounced straight after a hard bounce, and after three soft bounces in a row. From its bounce codes article:

  • Hard bounce: "Once we receive a hard bounce, we mark the contact immediately as 'Bounced.' We will no longer send any direct or automated campaigns to that contact."
  • Soft bounce: "we don't mark the contact as bounced until this happens three times in a row (3 separate campaigns)."

Find them per campaign under Reports (open the campaign, then Bounces report under Deliverability), or account-wide by filtering Contacts Overview on Status: Bounced, per contact list statuses explained.

Two bounce rules worth knowing

ActiveCampaign classifies some policy rejections as hard bounces. Its bounce code table lists 5.7.1, "Delivery not authorized, message refused", as Hard. A 550 5.7.1 is often a policy block against the sender, not proof the mailbox is gone, so a contact can land in Bounced while the address itself is fine.

A hard bounce is sticky. The article states that "a hard bounce can only be adjusted by contacting our Customer Experience Team. Resubscribing a hard bounced contact to a list manually within your account will not successfully update the address as valid." If an important contact bounced with a 5.7.x code, verify the address, and if it is valid, take it to support.

What ActiveCampaign cannot do

ActiveCampaign only learns an address is dead when a send bounces, so new imports and long-dormant contacts are unchecked. Its own article on why you might have a high bounce rate names the two leading causes: "Collecting invalid email addresses" and "Long breaks between email intervals". Its fixes (CAPTCHA, double opt-in, regular sending) protect future signups, not the list you hold. Its list cleaning guide says "Email marketers should expect to lose about 30% of their contact list over a year", counting bounces, unsubscribes and contacts who go stale.

Check your contact limit rules first

Whether cleaning saves you money depends on when your account was created. ActiveCampaign's contact limit article splits accounts in two:

Account created What counts toward the contact limit
On or after 3 November 2025 "All contacts, regardless of their list status"
On or before 2 November 2025 Only active contacts

On an older account, bounced and unsubscribed contacts are free to keep, as the archiving guidance confirms. On a newer one, every such record is billable, so archiving them after cleanup saves money. That article says archived data is retained for one year and can be restored after 30 days. Only Admin users can archive, restore or delete contacts, and there is a monthly archive limit of around your contact limit on paid accounts.

Step 1: Export the contacts at risk

Export everything first as a backup, then the active contacts you have not mailed recently. Several of ActiveCampaign's cleanup actions cannot be undone.

From How do I export all contacts?: click Contacts, click the ellipsis (...) at the top right of the Contacts Overview page, then Export. Avoid special characters in the export name, or the file comes out as text instead of CSV. Download it from Contacts > Exports within seven days. For a subset, export from an Advanced Search. Verify the contacts with no bounce history: imports never sent a campaign, active contacts not mailed for months, and lists migrating in.

Step 2: Verify the export

Run the file through a verifier that checks MX records and the mailbox itself, and split it into valid, invalid and risky. ActiveCampaign does not check mailboxes before sending, so this step happens outside it.

Valid contacts stay. Invalid ones go back in as unsubscribed in Step 3. Risky results are mostly catch-all domains, which accept every address and cannot be confirmed from outside; tag them and send to them separately.

SimpleVerifier accepts CSVs up to 100,000 rows and lets you export the valid, risky and invalid rows as separate files, which maps directly onto those three actions.

Step 3: Re-import the invalid addresses as unsubscribed

Use ActiveCampaign's import with "Import as Unsubscribed Contact" and "Update Existing Contacts" to stop sending to dead addresses without deleting the record.

The CSV import article path is Contacts > Import > Import from File. With a list selected, the import options include Import as Unsubscribed Contact, which gives the contacts "an 'Unsubscribed' status for the selected list(s)", and Import as Excluded Email Address, which adds them to the Exclusion List. Tick Update Existing Contacts so the upload matches the existing records by email. Add a tag such as verified-invalid-2026-10, and turn Trigger Automations off so the import starts no sequences.

Why not delete? The older List Cleanup tool can delete by status or email, but its help article says it is only available on accounts created before 22 February 2022, and that "List cleanup actions are permanent and cannot be undone." A tagged unsubscribed record keeps the history. On a newer account, archive the tagged contacts afterwards for the billing benefit.

Step 4: Unsubscribe contacts who no longer engage

For real addresses that have gone quiet, ActiveCampaign's current recommendation is its Expedited List Cleanup, followed by automations that track last engagement.

The list cleaning guide describes the expedited cleanup in three steps: create an automation with no start trigger and an Unsubscribe from all lists action, set it to Active; run an advanced search for subscribed contacts who have not engaged with any campaign in the last 90 days; then use a bulk action to add them to that automation. The 90 days can be shortened to 30 or 60, and ActiveCampaign suggests a win-back email first, which we would always send.

For ongoing hygiene it recommends automations that record each contact's last engaged date and unsubscribe anyone silent 90 days after joining or six months after their last engagement.

Older accounts may also see the Engagement Management tool on each list. Its article notes it will not show which contacts it will unsubscribe, cannot be undone, and ignores Apple Mail Privacy Protection opens. That last point applies to any engagement rule: Apple's Mail Privacy Protection downloads remote content when a message is received, not when it is read, so raw opens overstate engagement. Clicks are the safer signal. See our sunset policy guide for choosing the window.

When migrating into ActiveCampaign

Import subscribed, bounced and unsubscribed contacts as three separate files. ActiveCampaign's list cleaning guide recommends this split, and says contacts imported as active should be people who explicitly opted in ("no rented or purchased lists"), whom you have emailed in the last year and who engaged in the last 12 months. Verify the subscribed file before importing.

One behaviour to know: a separate import FAQ says a contact who has unsubscribed from any list "will not be imported via .csv to a new list even if the box is marked 'update existing contacts'". So a re-import never quietly revives an unsubscribe.

The takeaway

ActiveCampaign handles what has bounced. Focus on what it has never mailed: export, verify, and re-import the invalid addresses as unsubscribed with a tag. Unsubscribe silent contacts after one win-back email, judged on clicks. On accounts created from 3 November 2025, archive the removed records, because they still count toward your limit. To check a single doubtful contact before raising a ticket, the free email checker shows the result and reason. For how other platforms treat repeat soft bounces, see handling soft bounces.

Common questions

When does ActiveCampaign mark a contact as bounced?

Immediately after a hard bounce. After soft bounces, ActiveCampaign only marks the contact as Bounced once it has soft bounced three times in a row, across three separate campaigns. Bounced contacts are excluded from future campaigns and automation emails.

Do bounced and unsubscribed contacts count toward my ActiveCampaign contact limit?

It depends on when the account was created. ActiveCampaign's help centre says that for accounts created on or after 3 November 2025, all contacts count regardless of list status. For accounts created on or before 2 November 2025, only active contacts count.

Can I reverse a hard bounce in ActiveCampaign?

Not yourself. ActiveCampaign states that a hard bounce can only be adjusted by contacting its Customer Experience Team, and that resubscribing a hard-bounced contact to a list manually will not mark the address as valid.

How do I remove unengaged contacts in ActiveCampaign?

ActiveCampaign currently recommends its Expedited List Cleanup: an automation with an Unsubscribe from all lists action, an advanced search for subscribed contacts who have not engaged in the last 90 days, and a bulk action that adds them to that automation. It also recommends automations that track each contact's last engaged date for ongoing cleanup.

Verify unlimited addresses for $29.99/month

Real SMTP mailbox checks. No credits, no per-email fees.

Get Started