Allow
Continue the signup, CRM intake, or workflow when the address passes configured validation rules.
Reason codes turn email validation into explicit workflow states. Use them to decide which addresses can continue, which should be blocked, and which need review.
Routing vocabulary
Continue the signup, intake, or workflow step.
Stop invalid or policy-disallowed addresses.
Send mixed, risky, or temporary states to a deliberate fallback path.
| Reason code | Decision | Meaning |
|---|---|---|
| CLASSIFICATION_VALID | allow | Email classified as valid by the validation provider. |
| DEFAULT_ALLOW | allow | No blocking rule matched, so the team default allows the address. |
| ALLOW_LIST_MATCH | allow | Address or domain matched a team allow list. |
| CLASSIFICATION_INVALID | block | Email classified as invalid by the validation provider. |
| BLOCK_BOGUS_DOMAIN | block | Domain failed quality checks and matched a blocking rule. |
| BLOCK_DISPOSABLE | block | Disposable email pattern matched a team blocking rule. |
| BLOCK_FREE_PROVIDER | block | Free email provider matched a team blocking rule. |
| BLOCK_ROLE_ACCOUNT | block | Role account pattern matched a team blocking rule. |
| BLOCK_LIST_MATCH | block | Address or domain matched a team block list. |
| CLASSIFICATION_RISKY | review | Validation provider returned a risky classification. |
| SCORE_BELOW_THRESHOLD | review | Validation score is below the team threshold. |
| DISPOSABLE_REVIEW | review | Disposable signal is present but configured for review instead of block. |
| SERVICE_UNAVAILABLE | review | Validation service was unavailable, so the address needs fallback handling. |
| HASHED_REVIEW_AUTO_APPROVED | allow | A hashed review outcome was automatically approved according to team privacy settings. |
| HASHED_REVIEW_AUTO_REJECTED | block | A hashed review outcome was automatically blocked according to team privacy settings. |
Continue the signup, CRM intake, or workflow when the address passes configured validation rules.
Stop known-invalid, disposable, blocked, or policy-disallowed addresses before they enter downstream systems.
Queue mixed, risky, or temporarily unavailable results for fallback handling instead of treating them as valid or invalid.
The reason code should be stable enough for automation and readable enough for product, support, and operations teams to understand the result without re-running validation.
Avoid building rules from message text alone. Messages can help people understand an outcome, while reason codes give software a durable value for routing, dashboards, support lookup, and later policy changes.
Keep the original decision with the reason code. A code such as SERVICE_UNAVAILABLE means something different when it is attached to review than a policy block or a provider-invalid classification.
Use allow for normal onboarding, block for policy-disallowed addresses, and review for cases that need a fallback screen or manual check.
Store the reason code next to the record so later automation can explain why an address was allowed, blocked, or held for review.
Group reason codes by decision to understand whether blocked volume is driven by invalid addresses, disposable patterns, team policy, or temporary service states.