Guide
6 min read

Real-Time Form Verification

How to block fake emails
on your signup form

Your trial signup form collected 3,000 emails last month. 400 were disposable. 200 were invalid typos. 150 were role-based. 750 wasted entries — 25% of signups were never going to convert.
Based on 30B+ emails verified by QuickEmailVerification
What you’ll learn
  • Why regex validation isn’t email verification
  • What to check at signup: disposable, invalid, typo, role-based
  • Implementation example with QEV API
  • UX best practices for inline form validation

The form problem: regex ≠ verification

Regex Validation

Checks: does it look like an email?

Has an @? Has a dot? Passes. fake@tempmail.com passes. typo@gmial.com passes. Dead addresses pass.

Real-time Verification

Checks: does the mailbox exist?

Confirms the mail server is real, the mailbox accepts mail, the domain isn’t disposable, and suggests typo corrections.

What to check at signup

User enters email
API checks
<1.2 sec
Result
Block / suggest / allow
CheckAPI FieldActionMessage
Disposabledisposable: "true"Block“Please use a permanent email address.”
Invalidresult: "invalid"Block“This email address doesn’t seem to exist.”
Typodid_you_meanSuggest“Did you mean sarah@gmail.com?”
Role-basedrole: "true"Warn“This is a shared inbox. Use a personal email?”
Validsafe_to_send: "true"AllowProceed normally

How many fake emails are entering YOUR forms?
Test QEV’s API on your staging environment — 3,000 free verifications/month.

Get Your API Key →

Implementation example

⚠ Developer review required. This code is illustrative. Validate against QEV’s actual API documentation before deploying. Never expose API keys in client-side code — use QEV’s JavaScript widget or route through your backend.

// Verify on blur — check when user leaves the field
emailInput.addEventListener('blur', async () => {
  const email = emailInput.value;
  const res = await fetch(
    `/api/verify-email?email=${email}`  // Your backend proxy
  );
  const data = await res.json();

  if (data.disposable === 'true') {
    showError('Please use a permanent email address.');
  } else if (data.result === 'invalid') {
    showError('This email doesn\'t seem to exist. Check for typos?');
  } else if (data.did_you_mean) {
    showSuggestion(`Did you mean ${data.did_you_mean}?`);
  } else if (data.role === 'true') {
    showWarning('Looks like a shared inbox. Personal email?');
  }
});

UX best practices

PracticeWhy
Check the email when the user clicks away from the field (not when they hit submit)User can correct without losing form progress
Show inline messagesNext to the field, not in alerts or modals
Never expose API keysRoute through backend or use QEV JS widget
Be helpful, not hostile“Check for typos?” converts better than “Invalid email”
Handle API failures gracefullyIf verification times out, allow submission (don’t block)
For Developers

QEV API responds in under 1.2 sec. Fast enough for real-time form validation. 3,000 free verifications per month — enough to test on staging and cover low-traffic production forms.

Get your API key →  ·  Read the docs →

Form Verification — Quick Reference
What
Block fake, disposable, and invalid emails at the point of signup
Without it
10–25% of signups are wasted entries
Action
Add API verification to forms. Check on blur. Block disposable, suggest typos.
QEV
API: <1.2 sec response. 3,000 free/month.

Block fake emails at the source.

3,000 free API verifications/month. Sub-1.2 sec. No credit card.

Get Your API Key →
ISO 27001 Certified
ISO 27001
Certified
GDPR Compliant
GDPR
Compliant
CCPA Compliant
CCPA
Compliant
HIPAA Compliant
HIPAA
Compliant
99% Accuracy Guaranteed
99% Accuracy
Guaranteed