Actions
Choose what allow, review, and block should do in your signup flow.
Start with the action field. It gives your signup flow one of three choices, while the rest of the response explains why.
| Example | Action | Suggested experience |
|---|---|---|
| A normal address with working mail servers | allow | Continue signup. |
| An address that needs more confidence | review | Add email verification or another check. |
| A known disposable provider | block | Stop signup with a neutral message. |
Allow
Continue account creation. The response may still note that the address uses a public provider or an alias, but your current rules do not require extra friction.
Review
Add a step that gives you more confidence without permanently rejecting the person. You might require email verification, use a CAPTCHA, delay valuable access, or send the signup to your own review flow.
review is deliberately different from block. For example, support@company.com may be a real team account. Verification is usually safer than rejecting it immediately.
Block
Stop the signup when SignupScore finds a clear blocking reason or one of your domain rules requires it. Show a neutral message such as “We could not accept this email address” instead of revealing the exact signal.
Fail open or fail closed
Choose what your signup flow should do when SignupScore times out or returns a 5xx error.
Fail open keeps signup available when SignupScore cannot answer. It works well when losing a legitimate signup is the larger risk.
try {
const decision = await checkSignup(email);
return decision.action !== 'block';
} catch (error) {
console.error('SignupScore unavailable', error);
return true; // keep signup available
}Fail closed pauses signup until a decision is available. Use it only when accepting an unchecked account is the larger risk.
try {
const decision = await checkSignup(email);
return decision.action === 'allow';
} catch (error) {
console.error('SignupScore unavailable', error);
return false; // stop signup until a decision is available
}