signup flow runs the signup_protection policy, and the login flow runs login_protection. Your integration sends the flow name; it never needs to know which policy runs.
Manage policies in Risk Platform > Policies.
Rules
A rule has an action and one or more conditions:- Action:
allow,revieworblock. - Conditions: tests on a signal field, such as
email.is_disposable is true,ip.country_code in IR, KPoremail.address in list known_abusers. - Match: conditions are grouped. A rule can require all conditions in a group, or any group to match.
How the recommendation is chosen
The policy evaluates in three passes:- If any allow rule matches, the recommendation is
allow. Allow rules are how you exempt trusted users, for example an allow list of your own team’s emails. - Otherwise, if any block or review rule matches, the strictest one wins:
blockbeatsreview. - Otherwise, the recommendation is
allow.
Fields you can test
Rules read normalized fields, not raw API responses. A few examples per signal:
The policy editor in the dashboard lists every field with its operators and allowed values.
Operators include
is_true, is_false, is, is_not, in, not_in, contains, starts_with, ends_with, eq, ne, lt, lte, gt, gte, between, is_empty, is_not_empty, and in_list / not_in_list for Lists.
Unknown data
Sometimes a rule can’t be evaluated: the check had no phone number, a signal timed out, or a list could not be read. Each rule sets what happens then withon_unknown:
review(default): the rule recommendsreview, so the gap is visible.skip: the rule is ignored for this check.apply: the rule applies its own action as if it had matched.
data_quality.gaps.
Versions, history and rollback
Every change to a policy creates a new, numbered version. Versions are never edited, and every check records the version that scored it. The policy page shows Policy history: each version, when it was made, who made it, and which rules changed. To undo a change, roll back to an earlier version in the dashboard. A rollback adds a new version with the earlier rules, so the history stays complete. Rule IDs are never reused. If you delete ruleR5, the next rule you add is R6, so older checks still point to the right rule.
Flows without a policy
You can send checks for a flow before it has a policy. They are accepted withrecommendation: null and policy.configured: false, so you can see real traffic in the dashboard before writing rules.
Two limits apply to checks for flows without a policy. They count every such check your account has sent, so they don’t reset over time:
- 1,000 checks per flow. Once a flow without a policy has 1,000 recorded checks, each new check for it is refused with
429and reasonunconfigured_flow_limit_exceeded, and nothing is recorded. Create a policy for the flow in the dashboard to keep collecting. - 50 flow names. Up to 50 different flow names without a policy are each recorded under their own name. After that, checks for any new flow name are recorded together under the flow
__other, which has its own limit of 1,000 checks.
429 like any other error response: your flow continues as allow.