How to verify event and webinar registration emails
· 4 min read · Email validation
To verify event registration emails, check each address at the moment of signup for typos and throwaway domains, then run a full mailbox check in the background before the confirmation and reminder emails go out. The goal is simple: the person who registered actually gets the join link, and your reminder sends don't bounce. A typo caught on the form is a saved attendee. A typo caught after the event is just a bounce in your report.
Why event lists go bad faster than other lists
Webinar and event registrations have a few traits that make bad addresses more common than on, say, a product signup:
- People register on their phones, quickly, often from a social post. Typos like
gmial.comoroutlok.comhappen. - There's no login. Nobody has to click a link to get access, so a wrong address doesn't get noticed until the reminder never arrives.
- Gated content attracts throwaways. If the registration exists to collect a lead in exchange for a recording, some people will use a disposable address. Our explainer on disposable email addresses covers why.
- Partner and sponsor lists get merged in. Co-hosted events often import registrations from another team's form, with no validation.
Each bad address costs you a confirmation, two or three reminders, a "sorry we missed you" email and a recording link. That's five or so bounces per bad registrant, from the same domain your sales team uses.
Step 1: catch typos on the form
The cheapest fix is at the input. pingutil's /v1/verify response includes did_you_mean, set when the domain looks like a typo of a major provider. Show it inline: "Did you mean jane@gmail.com?" with one click to accept. Don't silently correct it; some people do use domains that look like typos.
Run this check when the email field loses focus or on submit. If you want the pattern for a React form, see real-time email feedback in a React signup form. Keep it non-blocking: if the check is slow or fails, let the registration through.
Step 2: decide what to do with throwaways
The response tells you when the domain is disposable: status: "invalid", reason: "disposable_domain", and checks.disposable: true. What you do with that depends on the event:
| Event type | Disposable address | Free webmail (checks.free_provider) |
|---|---|---|
| Open community webinar | Accept, exclude from nurture | Accept |
| Gated recording for lead gen | Ask for another address | Accept |
| Limited-seat workshop or dinner | Reject with a clear message | Accept, but let sales review |
| B2B event where only companies qualify | Reject | Review |
Rejecting free webmail outright on B2B events loses real people who registered with a personal address. We'd only do it when seats are scarce.
Step 3: verify mailboxes before the first reminder
After registration, run the address through a full check in a background job. A mailbox check can take a few seconds (up to about 25 on a slow server), so don't do it while the person waits.
curl -X POST https://pingutil.com/v1/verify/batch \
-H "Authorization: Bearer $PINGUTIL_KEY" \
-H "Content-Type: application/json" \
-d '{"emails": ["jane@acme.com", "sam@gmial.com", "x81kq2@mailinator.com"]}'
The batch endpoint takes up to 50 addresses and returns { "results": [...] } in the same order. For a nightly job, collect the day's new registrations and send them in batches. Then:
valid: send reminders as normal.invalid(mailbox_not_found,no_mx,disposable_domain): don't send reminders. If you have a phone number or the person registered through a partner, that's the channel to fix it.risky/accept_all: send. Catch-all domains are common at companies, and you can't tell more without delivering a message.unknown: send the confirmation, and re-check before the next reminder. Unknown is usually a server that didn't answer this time.
The reason codes are listed in the verification status reference.
No-code options
If your registrations land in a form tool or CRM, you can do the background check without writing a service. Our Zapier tutorial routes each new registration by verification status. For a one-off list from a co-hosted event, the pingutil dashboard accepts a CSV of up to 50 rows per upload and adds the result columns to your file.
Mind the volume
pingutil allows 300 verifications a day per account (API and CSV uploads combined) and 60 requests a minute. That covers verifying new registrations as they come in for most webinars. A conference importing 5,000 badge scans at once would need to spread the work over several days, so start verifying when registration opens, not the night before.
After the event
Your attendee list is now one of your cleaner lists, because addresses that got a join link and showed up are proven. The no-shows are less certain. Before you add them to a nurture sequence, keep the invalid ones out and leave the unknown ones for a re-check. Google's sender guidelines also suggest unsubscribing people who don't open or read your messages, which applies to registrants who never engage after the event.
To see what each result looks like before wiring it up, paste a few test addresses into the email verification demo.
Questions people ask
- Should I block disposable emails on a webinar registration form?
- For a free webinar, flagging is usually better than blocking. Some people use a throwaway address because they want the content but not the follow-up. Block them if the event is a sales qualification step or has limited seats; otherwise let them in and keep them out of nurture sequences.
- When should I verify registrations: at signup or before the reminders?
- Both, briefly. Check syntax and typos at signup so the person can fix their address while they're still on the page, then run a mailbox check in the background before the first reminder. Re-check only the addresses that came back unknown.