# Routing rules

> Spread one pile of items across many destinations by rule, and save the rulesets you reuse.


Routing rules answer "where does each item go" when the answer is not one account. You write an ordered list of rules, and every item follows the first rule it matches.

Rules show up in three places, and behave identically in all of them: the **Send items** modal on **Inventory**, the **Trade Items** task in **Advanced** mode, and the **Routing Templates** page under **Trades**.

## How a rule list is read

Rules run top to bottom, first match wins. Each item is tested against every rule in order, and the first rule whose conditions all hold decides what happens to it.

Two consequences worth holding on to:

- A rule with no conditions matches everything, so it belongs last
- An item matching no rule stays exactly where it is, it is not an error

Put your narrow rules first and your catch-all at the bottom.

![A two-rule routing template](/images/docs/routing-rules-order.png "The common setup: anything worth a dollar or more goes to one account, everything else is left alone. Drag the handles to reorder.")

## Matching items

**Match items by** turns conditions on. Every condition you turn on must hold, so they narrow together.

![One routing rule expanded](/images/docs/routing-rule.png "One rule end to end: what it matches, what it does with the matches, and where they go.")

| Condition | Matches on |
| --- | --- |
| **Game** | CS2, TF2 or Steam items |
| **Price** | A minimum, a maximum, or both. Unpriced items count as `$0` |
| **Specific items** | Named items, searched from the catalogue |
| **Item type** | Coarse types: knife, gloves, container, sticker, agent, and so on |
| **Origin** | How a CS2 item was obtained: a timed drop, purchased, traded, found in a crate |

Prices are the Steam Community Market price, the same number the inventory grid shows.

## What the rule does

**Then** picks one of two actions.

**Route to targets** sends matched items to that rule's destinations. **Skip these items** leaves them alone, and stops any rule below from seeing them. A skip rule at the top is how you protect things: put your knives behind a skip and no later catch-all can move them.

## Where they go

A routing rule takes destinations in three flavours, and you can mix them freely:

- **Target accounts**: your own accounts. Only accounts whose trade URL we know are listed
- **Target tags**: every account carrying any of these tags
- **External trade URLs**: one Steam trade URL per line, for destinations outside SteamLabs

> [!TIP]
> A tag target is resolved to its members every time the rules run, not when you save them. Point a rule at a `vault` tag and it follows the group as you tag and untag accounts, which is what makes tag targets worth using over a list of account IDs.

## Spreading over the targets

**Spread** decides how matched items divide across a rule's destinations.

| Spread | What it does |
| --- | --- |
| **Evenly** | Round-robins matched items across the targets |
| **Randomly** | Each item goes to a random target that still has room |
| **Fill to a value** | Packs priciest first, up to **Value per target** |
| **Top up to a value** | Same, but counts what an account already holds toward the target |

The two value strategies are the difference between "put $50 of items on each account" and "bring each account up to $50 total". Use **Top up to a value** when you run the same rules repeatedly, since it will not keep piling value onto accounts that already have it.

**Items limit per target** caps how many items any one destination receives. Leave it empty for no limit.

## The preview

**Rough preview** counts what the current rules would move before you commit: per rule, how many items match and how many would actually be sent, plus a line for items that stay put because no rule matched, and a total with an approximate value.

It is an estimate, and it says so. Accounts whose trade URL we do not know are dropped from the plan when the rules actually run, not when you write them.

## Saving rules to reuse

**Save these rules as a template** stores the current list under a name. **Apply a saved template** loads one back into the builder, so you can start from it and change one rule.

Saved templates live on **Trades → Routing Templates**, where you can edit and delete them.

> [!NOTE]
> Applying a template copies its rules into the work you are creating. Editing or deleting the template afterwards does not change anything already queued, and does not change a task that is mid-run.
