Keep your Customer.io profiles clean, deliverable, and off your bill
Customer.io suppresses addresses that hard-bounce, unsubscribe, or mark spam automatically — but it can't judge a profile it has never sent to. And because Customer.io is a behavioral platform that bills by the profile, every never-messaged invalid is both a deliverability risk and a line on your invoice. Qualisend closes that gap: export your people, verify every address, and suppress or delete the dead ones so junk never fires on your next broadcast. Here's the workflow that works today, plus the API and no-code options.

One-click Customer.io sync is paused while we rebuild the platform
We've deliberately paused our one-click native connectors while we re-engineer the sync layer they run on — hardening how we authenticate, respect each platform's rate limits, and write results back — so that when the native Customer.io integration returns, it stays dependable at any list size rather than fragile at scale. None of this touches how Qualisend verifies an address.
Everything you need works today: the CSV export → verify → reimport loop below, and the API for verifying at signup, are both fully supported and running in production — that's how teams keep Customer.io clean right now.
What Customer.io cleans for you
Customer.io's native hygiene centers on suppression: when an address returns a permanent failure, unsubscribes, or files a spam complaint, Customer.io adds the person to its suppression list and holds them out of every future send. For addresses Customer.io has actually messaged, that's reliable, automatic hygiene. The catch is that suppression stops mail, not billing — a suppressed person is excluded from sends, but the record stays in your workspace and, depending on how your plan counts profiles, can keep occupying a slot until you delete it.
What it can't catch
Every one of those mechanisms is reactive — it needs a send, then a bounce, unsubscribe, or complaint to fire. Customer.io makes the blind spot sharper because it creates a person the moment your app fires an identify or track call, so profiles from your app, an import from a previous tool, or a signup typo (jane@gmial.com) have never bounced because they've never been sent to. Disposable addresses, role addresses (info@, support@), and mailboxes that decay over time all look healthy until an event triggers the first message — which is exactly when a mailbox provider forms its first impression of you. Worse, because Customer.io is event-driven, those dead profiles don't sit quietly: they keep entering broadcasts and behavioral campaigns whenever an event matches, so a bad address gets mailed again and again. An imported audience is the sharpest case — it arrives with its bounce history stripped, so addresses that were already failing elsewhere look brand new.
Why a clean Customer.io list matters
Customer.io sizes plans by the number of profiles in your workspace, so hygiene is a cost decision as much as a deliverability one. Every dead address is a line item as well as a drag: suppression stops the send but doesn't necessarily free the slot — the record can keep counting toward your tier until you delete it — and a never-messaged invalid is a fully active, billable profile that will never convert while driving your bounce rate up and inflating your count. Cleaning before a send does two jobs at once. Retiring the undeliverable and disposable profiles can move you toward a lower profile tier, and it protects the engagement data your data-driven segments run on and the inbox placement Gmail and Yahoo's 2024 sender rules judge you by.
The workflow that works today
Direct connectors are paused while we rebuild the platform, so the dependable path is the CSV loop: export from Customer.io, verify in Qualisend, reimport the clean file.
Export your people from Customer.io
In your workspace's People area, filter to the segment or audience you want to clean and export it to CSV, making sure the email attribute is included. For a first clean, export everyone; for maintenance cleans, narrow it with a data-driven segment such as "created before" or "never opened."
Verify the file in Qualisend
Upload the CSV to Qualisend bulk cleaning — up to 1,000,000 addresses, duplicates charged once — or paste addresses directly. The free plan's 100 one-time credits, which never expire, cover a first sample before you commit.
Read the results
Every address returns deliverable, risky, undeliverable, or unknown with a reason code and a 0–100 score, plus sub-flags (catch-all, disposable, role, full mailbox) and the MX provider and probe detail as evidence. Download the cleaned CSV.
Suppress or delete the undeliverables in Customer.io
Filter the results to undeliverable. The cleanest way to act on them is to write the verdict back: import it as a person attribute (for example email_status = undeliverable), build a data-driven segment on that attribute, and either exclude that segment from every broadcast and campaign or delete the people in it to reclaim the profile slots. Customer.io also lets you suppress a person directly — suppression stops the mail, deletion frees the profile. Deletion is permanent and takes event history with it, so reserve it for verified undeliverables.
Or automate it at signup
Prefer to keep junk out from the start? Because Customer.io creates a person the moment your app fires an identify or track call, the highest-leverage fix is to validate the address at the signup or lead form before that call runs — through the Qualisend REST API (scoped keys, rate limits, webhooks), or a no-code Zapier, Make, or n8n flow — so typos and disposable domains never become billable profiles or enter a behavioral campaign.
What Qualisend flags on every address
- Never-messaged invalid profiles from identify/track calls, imports, and signup typos that would hard-bounce on their first send
- Disposable / throwaway domains that clear the welcome flow, then quietly stop existing
- Role addresses (info@, support@) that skew the engagement data your segments and campaigns run on
- Catch-all domains, flagged so you can move them to a dedicated segment and throttle instead of blasting
- A 0–100 confidence score and machine-readable reason code for every address
A native, one-click Customer.io connector is part of the platform we're rebuilding — it's returning, not deprecated. Until it ships, the CSV loop above and the API are the fully supported path, and they work with any Customer.io plan.
What to do with each result
Every address comes back with a verdict and sub-flags. Here's the action that keeps your Customer.io list clean without throwing away contacts you can still reach.
deliverableKeep messaging as normal.deliverable + role flagKeep for transactional and lifecycle messages; exclude from engagement-scored campaigns.risky + catch-all flagMove to a dedicated segment and throttle sends rather than blasting the whole group.risky + disposable flagSuppress or delete — the inbox was built to expire.unknownKeep active and re-verify next clean — one inconclusive probe is a rate-limit signal, not a verdict on the mailbox.undeliverableSuppress via a data-driven segment, or delete to free the profile. Don't wait for the bounce to prove it.Related reading
The full step-by-step: export from People, verify, and suppress or delete the dead profiles.
Cleaning is half of deliverability — authenticate your sending domain too.
Verify at the identify/track call so junk never becomes a billable profile.
How fast event-triggered sends to dead profiles compound into a deliverability problem.
What repeatedly mailing never-verified addresses does to your domain.
Cadence for a workspace fed by imports, product signups, and behavioral events.
Customer.io verification FAQ
Clean your Customer.io list in minutes
Start free with 100 credits that never expire — no card required. Export, verify, reimport, and protect your next campaign.