> ## Documentation Index
> Fetch the complete documentation index at: https://docs.authsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Rule

> Send users down different paths based on conditions about the user, their device or the request.

A rule node sends users down different paths based on conditions about the user, their device or the request.

![A rule node with a Saved payee rule and Yes and No branches](https://mintcdn.com/authsignal-23/oBWprmJoE41YSe38/images/docs/flows/rule-node.png?fit=max\&auto=format\&n=oBWprmJoE41YSe38\&q=85\&s=85f9febbf3dc7f15a44fd10ca4131fb8)

Rules use the latest data each time the flow reaches them, so a rule after a step sees what happened in that step.

## Create a yes/no rule

A node with one rule has **Yes** and **No** branches. Users who match the rule follow **Yes**, and everyone else follows **No**.

1. Select the rule node, then select **Add rule** and choose **Blank rule**. To reuse an existing rule's conditions, pick it under **Start from a copy**.
2. Enter a **Name**.
3. Select **Add condition**, pick a field, then choose an operator and a value.
4. Choose **AND** to match when all conditions are true. Choose **OR** to match when any is true. To mix both, select **Add group** and set the group's own choice.
5. Select **Create rule**.

![The rule editor with two conditions joined by AND](https://mintcdn.com/authsignal-23/oBWprmJoE41YSe38/images/docs/flows/rule-editor.png?fit=max\&auto=format\&n=oBWprmJoE41YSe38\&q=85\&s=6b97d05be7b9df1d6807692c6eda2cbe)

This rule matches when both conditions are true

## Add more rules

Add more rules to send users down more than two paths. Each rule gets its own branch, labeled with the rule's name, and users who match none follow **Else**.

1. Select the rule node, then select **Add rule**.
2. Create the rule the same way as a yes/no rule.
3. Use the arrows next to each rule to change the order. The node checks rules from top to bottom, and the first match decides the path.

![A rule node named User location with US, AU, UK and Else branches](https://mintcdn.com/authsignal-23/oBWprmJoE41YSe38/images/docs/flows/rule-multiple-node.png?fit=max\&auto=format\&n=oBWprmJoE41YSe38\&q=85\&s=d71f9a3189e68e8d080ab12186591824)

Users in the US, Australia and the UK each get their own branch

![A rule node named User location with three rules, US, AU and UK](https://mintcdn.com/authsignal-23/oBWprmJoE41YSe38/images/docs/flows/rule-settings.png?fit=max\&auto=format\&n=oBWprmJoE41YSe38\&q=85\&s=941c575ab3a08b7e183648eab136a156)

The node checks US first

## Fields

Fields are grouped into categories in the field picker. Some need data that you pass in Start Flow's `attributes`.

| Category | What it checks | Needs |
| - | - | - |
| Custom | Your own [custom data points](https://docs.authsignal.com/actions-rules/rules/custom-data-points.md), such as a payment amount | `custom` |
| User | The user's identifiers, enrolled authenticators and verification history | |
| Device | Whether the device is new or remembered, and how it has been used to authenticate | `deviceId` |
| IP/Network | The IP address and its location, anonymous IPs, and atypical or impossible travel | `ipAddress` |
| User agent | Known bots, and the user's browser, operating system and device type | `userAgent` |
| Action | How often the user started this action in the last hour or day | |
| Flow | Data points about the current flow, such as whether the user hit a rate limit | |
| Card bin | The card issuer's country and name, and the card's funding type and brand | `$cardBin` in `custom` |

See [risk signals](https://docs.authsignal.com/knowledge-base/operations/risk-signals.md) for how Authsignal calculates signals such as impossible travel.

## Operators

The operators you can choose depend on the field's type.

| Field type | Operators |
| - | - |
| Number | `==`, `!=`, `<`, `<=`, `>`, `>=`, **Between**, **Not between**, **Is null**, **Is not null** |
| Text | `==`, `!=`, **Contains**, **Not contains**, **In List**, **Not in list**. Custom data points also have **Is empty** and **Is not empty**. |
| Country code | Pick one or more countries from a list, or check **Is null** or **Is not null** |
| List | **Contains**, **Not contains** |
| Date and time | **under** or **over** a time ago, from 10 minutes to 6 months |
| True or false | **is** True or False |

**In List** and **Not in list** check a [custom list](https://docs.authsignal.com/actions-rules/rules/custom-lists.md). To compare a field with another field instead of a fixed value, open the menu next to the operator and choose **Feature**.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.