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.

ExampleActionSuggested experience
A normal address with working mail serversallowContinue signup.
An address that needs more confidencereviewAdd email verification or another check.
A known disposable providerblockStop 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.

Fail open
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.

Fail closed
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
}