If your product sells to companies, a signup on @gmail.com usually means one of three things: an individual trying the product, a competitor poking around, or a real buyer who used the address autocompleted by the browser. Only the last one is worth fighting for, and a blunt “personal emails not allowed” error loses them.
isBusinessEmail gives you the signal; this page shows how to use it well.
What you get per signup
| Signal | Field | Why it matters |
|---|---|---|
| Work or personal | category, is_business |
The core decision |
| Throwaway inbox | is_disposable |
Trial abuse, fake accounts |
| Privacy relay | is_relay |
Real people, but no company link |
| Typo of a popular provider | did_you_mean |
Fix gmial.com before they get stuck |
| Role account | is_role_account |
info@ is a company, but not a person |
| Company suite | workspace |
Google Workspace or Microsoft 365, ready for integrations |
| What to do | recommendation |
allow, review or block under your policy |
The pattern
- Label the field “Work email.” Many people switch before typing.
- Hint inline on blur with a publishable key: “Please use your work email so we can connect your company account.”
- Offer
did_you_meanas a clickable fix. Never auto-correct silently. - Enforce on the server at submit with a secret key.
- Use the
reviewlane for role accounts and brand-new domains: allow, then verify. - Fail open on timeouts and errors; re-check in the background.
- Keep an escape hatch: “No work email? Request access” goes to a human.
The full walkthrough with code is in the signup form guide.
Pick a policy
| Policy | Blocks | Good for |
|---|---|---|
lenient |
disposable, invalid, blocked | PLG products that welcome individuals |
b2b (default) |
+ personal, relay; reviews unknown and role accounts | Most B2B SaaS |
strict |
+ unknown, role accounts | Products that need a company tenant from day one |
Details: Categories and policies.
In your stack
- Auth providers: Auth0, Clerk, Firebase Auth, Supabase Auth, Auth.js
- Frameworks: Express, Laravel, Django, Rails
Measure, then tighten
Store category on every account. After a few weeks, compare activation and paid conversion by category. If personal-email signups rarely convert and cost you support time, move toward strict. If they convert well, stay on b2b and use the verdict for routing instead of blocking. Your data beats any blog post, including ours.