Gates (beta)
Rules & Conditions
A Gate is a stack of rules. Each rule checks one or more conditions and suggests an action. The engine evaluates rules from top to bottom and chooses the outcome as follows:
- Keep evaluating through the list. The last matching rule sets the final decision
- If a matching rule has
stop: true, evaluation ends immediately and that rule’s action is final
Anatomy of a rule
Each rule has these fields:
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | yes | Short, descriptive label shown in the UI and logs |
description |
string | no | Why this rule exists or what it targets |
message |
string | no | Message to return when the rule matches |
match |
enum all| any |
yes | all = AND all conditions, any = OR across conditions |
action |
enum allow block challenge |
yes | Suggested outcome when the rule matches |
stop |
boolean | no | If true, stop evaluating further rules when this one matches |
enabled |
boolean | no | If false, the rule is ignored |
conditions |
array<Condition> | yes | One or more field comparisons |
Evaluation model
- Rules are processed top → bottom
- For each rule, conditions are evaluated using the rule’s
matchmode (allorany) - If the rule matches:
- Its
actionbecomes the current decision - If
stop: true, evaluation ends and this action is final
- Its
- If multiple rules match and none had
stop: true, the last matching rule wins
Supported fields
Below are the fields most rules use. All string comparisons are case‑insensitive unless noted.
Email fields
| Field | Type | Details |
|---|---|---|
email.address |
string | The full email address. |
email.normalized |
string | The normalized email address. |
email.local_part |
string | Local part of the email address. For example, user in [email protected]. |
email.subaddress |
string | Subaddress of the email address. For example, newsletter in [email protected]. |
email.disposable |
boolean | Email is disposable while domain is not. For providers offering disposable aliases on legit domains (e.g. Gmail or Outlook). |
email.role_account |
boolean | Local part is a role account (admin@, support@). |
Domain fields
| Field | Type | Details |
|---|---|---|
domain.name |
string | The domain name. Use sparingly for one‑off allow/block. |
domain.tld |
string | The top-level domain. For example, com in example.com. |
domain.sld |
string | The second-level domain. For example, example in example.com. |
domain.subdomain |
string | The subdomain. For example, www in www.example.com. |
domain.age_days |
number | Approximate age in days. |
domain.mx |
boolean | Domain has valid MX records. |
domain.mx_records.*.hostname |
string | Hostnames of MX records. Useful for filtering based on MX record hostnames. |
domain.disposable |
boolean | Domain is a disposable provider. |
domain.disposable_provider |
string | The name of the disposable provider if the domain is disposable. |
domain.public_domain |
boolean | Domain is a public mailbox provider (gmail.com, outlook.com, yahoo.com…). |
domain.relay_domain |
boolean | Domain forwards to another mailbox. |
domain.spam |
boolean | Domain flagged as spam by our system. |
domain.blocklisted |
boolean | Domain is present in your account blocklist. |
IP fields
| Field | Type | Details |
|---|---|---|
ip.address |
string | The IP address. |
ip.abuse.detected |
boolean | IP address has been flagged for abuse. |
ip.anonymity.proxy.detected |
boolean | IP address is detected as a proxy. |
ip.anonymity.relay.detected |
boolean | IP address is detected as a relay. |
ip.anonymity.relay.provider |
string | The relay provider name if the IP is a relay. |
ip.anonymity.tor.detected |
boolean | IP address is detected as a Tor exit node. |
ip.anonymity.vpn.detected |
boolean | IP address is detected as a VPN. |
ip.geo.city |
string | The city where the IP is located. |
ip.geo.continent |
string | The continent where the IP is located. |
ip.geo.continent_code |
string | The continent code where the IP is located. |
ip.geo.country |
string | The country where the IP is located. |
ip.geo.country_code |
string | The country code where the IP is located. |
ip.hosting.detected |
boolean | IP address is detected as a hosting provider. |
ip.network.asn |
number | The Autonomous System Number (ASN) of the IP's network. |
ip.network.aso |
string | The Autonomous System Organization (ASO) name. |
ip.network.domain |
string | The domain associated with the IP's network. |
ip.network.type |
string | The type of network. |