If your activation rate sits stubbornly below where you think it should be, part of that gap may have nothing to do with your product. Fake emails in your funnel land in the denominator of the calculation and can never activate, so the percentage you report reads lower than the experience your real users are having. Activation rate is just the share of signups who reach the moment your product clicks for them, the “aha” step you picked as the milestone. Bots, throwaway addresses, mistyped addresses and burner aliases all count as signups. None of them will ever reach that milestone.
Which makes this a measurement problem before it is anything else. Below: how the junk gets in, how it shows up in your dashboards, a worked example you can follow, a method for measuring your own pollution rate, and the fixes that make the number honest again.
Where the fake emails in your funnel come from
Four sources account for most of it, and they behave differently enough that it helps to name them separately.
Bots and scripted registrations. Automated signups arrive in bursts, usually from form-scraping tools testing whether your endpoint is open. They rarely touch the product afterward. This is the one problem a CAPTCHA puzzle genuinely helps with, though it does nothing about the other three, which is the whole argument in our piece on verification API versus CAPTCHA.
Disposable and throwaway addresses. Services that hand out a mailbox for ten minutes. The address is technically alive at the moment of signup and dead by the time your day-two onboarding email goes out. Someone using one has decided in advance not to be reachable, which tells you something about their activation odds.
Typos from real people who wanted in. The saddest category. A visitor types [email protected], hits submit, gets counted as a signup, then never receives the confirmation email and assumes your product is broken. They wanted to activate. Your form let them lock themselves out.
Duplicate aliases from trial abusers. One person, fifteen accounts, each one collecting whatever the free tier gives away. These accounts sometimes do touch the product, which makes them messier than bots, but they rarely reach real activation and they never convert. We covered the economics of that behavior in free trial abuse and disposable emails.
Notice what these have in common: each one adds 1 to your signup count and 0 to your activated count, permanently. They are not slow movers who might come back next month. They are mathematical dead weight sitting in the bottom half of your most-watched ratio.
The symptoms show up in your dashboards before anyone names the cause
Nobody opens a dashboard and thinks “fake signups.” They think the onboarding flow regressed. A few patterns are worth recognizing:
- Confirmation-email click rate drifts down while the email itself has not changed. If the copy is the same and the send time is the same, the difference is who is receiving it.
- Activation drops right after a paid campaign or a lead-magnet launch. Low-cost traffic and gated downloads attract people who hand over an address purely to get past the form. The dip often looks like a product problem because the timing lines up with a release.
- Onboarding sequences show a rising bounce rate. A bounce means the message could not be delivered at all. Bounces climbing while activation falls is close to a signature.
- Whole cohorts full of accounts with zero sessions. A cohort is just a group of users bucketed by when they signed up. When a week’s cohort contains a visible block of accounts that logged in exactly never, you are looking at the fake portion directly.
Any one of these has other explanations. Two or three together, in the same period, usually mean the denominator moved rather than the product.
A worked example (illustrative numbers)
These figures are made up for the sake of the arithmetic. Your own ratios will differ, sometimes a lot. The shape of the effect is what transfers.
Say a month brought in 1,000 signups and 220 of them activated. Reported activation rate:
- 220 / 1,000 = 22.0%
The team runs those 1,000 addresses through a bulk verifier after the fact and 180 come back invalid, disposable or otherwise undeliverable. Those 180 were never capable of activating. Recompute on deliverable addresses only:
- 1,000 – 180 = 820 reachable signups
- 220 / 820 = 26.8%
Nothing about the product changed between those two numbers. The team was 4.8 percentage points better at onboarding than its own dashboard said, and had been for months. That is roughly a fifth more activation than the raw number suggested, which is the difference between “onboarding is our problem” and “acquisition quality is our problem.”
Every metric built on top of that denominator inherits the same distortion:
| Metric | What the polluted version shows | Direction after you exclude undeliverable signups |
|---|---|---|
| Activation rate | 22.0% | Rises to 26.8% |
| Onboarding email open and click rates | Depressed (part of the list cannot receive mail) | Rise |
| Hard bounce rate on onboarding sends | Inflated | Falls |
| Day-30 cohort retention | Depressed by accounts that never had a day 1 | Rises |
| Cost per activated user (your CAC divided by activated users instead of signups) | Looks better than it is when measured per signup | Becomes honest, usually higher per activated user |
| Onboarding A/B tests | Diluted; non-activatable users split evenly into both arms and add noise | Reach a clear result faster |
That last row is the expensive one. If a meaningful slice of both test groups was incapable of converting no matter what you showed them, your test is measuring a smaller real effect inside a bigger sample, and marginal wins stay invisible.
How to measure the pollution in your own funnel
This takes an afternoon and does not require touching production.
- Export one signup cohort. A single month works well. You need the email address and a flag for whether the account hit your activation milestone.
- Run the addresses through a bulk verifier. Batch verification suits this job because nothing is waiting on the answer; you are auditing history. The trade-off between the two modes is laid out in real-time versus bulk email verification.
- Count what comes back undeliverable. Invalid, disposable and dead mailboxes go in this bucket. Decide in advance how you will treat catch-all domains, which accept everything and confirm nothing; a lot of teams keep them in the denominator and note the ambiguity.
- Recompute activation on deliverable addresses only. Same numerator, smaller denominator.
- Report both numbers, side by side, with labels. Raw activation and qualified activation. The gap between them is your pollution rate, and it is the number worth tracking month over month.
Do this for two or three past months before changing anything. One month gives you a figure; three tell you whether the gap is stable, seasonal, or growing with your ad spend.
Fixes that keep the denominator honest
Define what counts as a qualified signup. Write it down: an account whose email address is deliverable and not disposable. This is a definition change, and definition changes are the least expensive improvements available to a metrics stack. Everything downstream gets less noisy for free.
Verify at the form instead of cleaning up afterward. A real-time check in the signup handler (an API call, meaning your server asking another server for a verdict before accepting the address) keeps the junk out of the denominator entirely. The bonus is the typo case: a “did you mean gmail.com?” prompt turns a lost signup into a real user. If you want the prevention side in full, we wrote it up in how to stop fake email signups.
Keep raw signup volume on its own line. Do not delete it and do not let it quietly disappear into the qualified number. Marketing is accountable for volume and deserves to see it, and the two series next to each other are what make the pollution rate visible to everyone at once.
If you want both halves from one place, Reoon Email Verifier does live API validation in about 0.5 seconds for the form, bulk CSV verification for retroactive cohort checks, and flags disposable, role-based and catch-all addresses so you can decide how each one counts. Advertised accuracy is 99%+, and the API documentation shows the verdict fields you would branch on in your signup code.
The part that compounds
Here is something I have seen play out more than once, offered as practitioner experience rather than a measured law. Onboarding emails sent to dead addresses bounce. Mailbox providers watch bounce rates as a signal of sender quality. As that rate climbs, mail from your domain gets filtered more aggressively, which means some of your real users stop seeing their welcome and setup emails at all. Those users then fail to activate, which drops the metric further, for reasons that now genuinely are your fault.
So a polluted denominator does not only misreport activation. Left alone long enough, it starts reducing it.
What this does not fix
Verification checks whether an address can receive mail. It cannot tell you whether the human behind a perfectly valid address ever intended to use your product. Tire-kickers, competitors taking a look, and people who sign up on a Friday and forget by Monday all have real addresses and all sit in your denominator legitimately. They are part of the honest number.
And cleaning the denominator does not improve the product by one inch. Nobody activates who was not going to activate. You are correcting a measurement, not shipping a feature, and it is worth being clear about that internally before anyone celebrates the jump.
Still, my opinion after watching teams do this: a qualified 26% is more useful than a raw 22%, even though the raw figure is the one more people report. Not because the higher number feels better, but because it tells you where to point. If activation is 22% because a fifth of your signups were never reachable, the work belongs with acquisition and the signup form. If it is 26.8% on genuinely reachable users, then onboarding really is the thing to fix. Same product, same month, two completely different roadmaps.
Pick a past cohort and run the check. If you want to try it without setting anything up, you can create a free Reoon account and use the free verification credits every day, no card required, to verify a sample of a few hundred signups and see what your own gap looks like.
FAQ
What is a good activation rate once fake signups are removed?
There is no universal benchmark worth quoting, because activation depends entirely on where you set the milestone. A product that counts “created an account” and one that counts “invited a teammate” are not comparable. The useful comparison is your own qualified activation rate against itself over time, with the raw figure kept beside it so you can see the gap moving.
Should I delete fake accounts from the database?
Suppress them rather than deleting them. Keep the records, stop sending mail to the undeliverable addresses, and exclude them from your activation denominator with a flag. Deleting throws away history you will want when you audit a past cohort, and the deliverability damage never came from storing dead addresses in the first place. It came from emailing them repeatedly.
Does this mean my reported activation rate has been wrong all along?
It means it was measuring something slightly different from what you thought. Raw activation is a real number and it answers a real question, which is what share of everyone who hit submit ends up succeeding. Qualified activation answers a narrower one about reachable users. Neither is wrong; reporting only the first one is what hides where the problem actually sits.
Will real-time verification hurt my signup conversion rate?
In practice it usually helps slightly, because the typo cases get caught and corrected instead of quietly failing. The check runs inside the normal submit round-trip, so valid users see nothing. The people who see anything are the ones whose address would not have worked, and for a misspelled domain an inline suggestion recovers a signup you would otherwise have lost.







