Backlog routing has two modes:
- Prefer other locations — soft signal that ranks locations with shorter backlogs higher (a routing rule)
- Block orders — hard cap that excludes a location entirely once its backlog crosses the threshold (a fulfillment constraint)
How backlog routing works
Charlie tracks the count of unfulfilled fulfillment orders assigned to each location and exposes it as a public metafield. The Backlog location rule reads this count and ranks locations accordingly:The backlog count includes any open, unfulfilled fulfillment order assigned to the location. Closed and cancelled orders don’t count. The count refreshes as orders are created, moved, cancelled, or fulfilled.
Setup overview
Backlog routing requires two steps:- Configure backlog limits per location in Charlie
- Add the Backlog location rule in Shopify Order Routing
Step 1: Configure backlog per location
Set the threshold and mode
Configure the backlog settings:
| Field | Description |
|---|---|
| Maximum pending orders | The threshold. For BLOCK mode, the location stops accepting once it reaches this number. Range: 1 to 25,000. |
| How to handle backlog | Choose between Prefer other locations (soft) or Block orders (hard). |
Backlog modes
| Mode | Behavior |
|---|---|
| Prefer other locations | Soft signal. The location with fewer pending orders is ranked higher. If it’s the only option, it can still fulfill. |
| Block orders | Hard cap. Once the location’s backlog reaches the threshold, it’s excluded entirely until the backlog drops below the threshold. |
Step 2: Add the routing rule in Shopify
The Backlog location rule must be installed in Shopify’s Order Routing for the soft signal to take effect.Open Order routing
Go to Charlie → Settings → Order routing or Shopify → Settings → Shipping and delivery → Order routing.
Add the Backlog location rule
Find Charlie’s Backlog location rule in the available rules list and add it to your routing strategy.
Charlie shows a reminder banner on the location’s Shipping tab when Prefer other locations mode is enabled but the Backlog location rule isn’t installed yet. Click Manage order routing in the banner to jump to the settings.
Block mode and the routing rule
If you only ever use Block orders mode, you don’t strictly need to install the Backlog location rule — the hard block is enforced as a fulfillment constraint independently. The routing rule only matters for the soft “prefer” signal.How ranking works
Per-location opt-in
The rule only ranks locations whose backlog limit is enabled and set to Prefer other locations. Locations without backlog enabled keep their position from other rules.Ascending sort
| Location | Backlog count | Rank |
|---|---|---|
| Warehouse A | 2 | 1 (top) |
| Store Paris | 8 | 2 |
| Store Lyon | 15 | 3 |
| Store Nice | 25 | 4 (last) |
Tie-breaking
When multiple locations have the same backlog count, they receive the same rank. Shopify then uses its default logic to choose between them.Example scenarios
Balance fulfillment across stores
Problem: Your Paris store has a much longer pipeline than the others and shipments are slipping. Setup:- All stores: Backlog limit enabled, threshold 100, mode = Prefer other locations
Hard block a small store at peak
Problem: A small store can only physically process 30 open pickup orders at once. Beyond that, orders pile up and customers complain. Setup:- Small store: Backlog limit enabled, threshold 30, mode = Block orders
Combine prefer and block across the network
Problem: Across 10 stores, you want to load-balance most of the time, but a couple of stores are extra-constrained. Setup:- 8 stores: Backlog limit enabled, threshold 200, mode = Prefer other locations
- 2 small stores: Backlog limit enabled, threshold 50, mode = Block orders
Combining with other rules
With Inventory Rules
Prefer locations with both stock AND short backlogs:- Inventory Rules — Rank by available stock
- Backlog routing — Among in-stock locations, prefer those with shorter backlogs
With Capacity Rules
Backlog and daily order limit serve different windows:| Signal | Window | Question |
|---|---|---|
| Capacity | Today | How many orders has this location taken today? |
| Backlog | All-time open | How many orders are still unfulfilled here? |
With Ranked Location Groups
Use backlog as a secondary factor within groups:- Ranked Location Groups — Warehouses (Group 1) → Stores (Group 2)
- Backlog routing — Within each group, prefer locations with shorter backlogs
Public metafields
Backlog data is exposed on each location as public metafields so other apps and your storefront can read it:| Metafield | Type | Description |
|---|---|---|
$app:location.backlog_count | number_integer | Current count of open fulfillment orders |
$app:location.backlog_blocked | boolean | true when the location is over its threshold in BLOCK mode |
$app:location.backlog_preference_enabled | boolean | true when the location has opted into the PREFER signal |
charlie_location namespace for storefront access.
Best practices
Start with Prefer mode
Begin with Prefer other locations to softly balance load. Move to Block only for locations that need a hard cap.
Tune thresholds gradually
Start with generous thresholds and tighten over time as you learn each location’s real capacity.
Combine with capacity rules
Pair backlog (open pipeline) with daily order limit (today’s intake) for fuller picture of location load.
Monitor metafield values
The
backlog_count metafield exposes live counts — use it in dashboards or external monitoring.Troubleshooting
Orders not shifting toward locations with shorter backlogs
Orders not shifting toward locations with shorter backlogs
Check:
- Is the Backlog location rule enabled in Shopify Order Routing?
- Is Backlog limit enabled and set to Prefer other locations at the locations you want to balance?
- Are the locations’
backlog_countmetafields actually different? Check via the Shopify admin metafields panel. - Are there higher-priority rules above the Backlog rule that override its ranking?
Location blocked unexpectedly
Location blocked unexpectedly
Check:
- Is Backlog limit set to Block orders?
- Has the location’s open backlog crossed the threshold?
- The block lifts automatically once the backlog drops below the threshold — no manual action needed.
Backlog count seems wrong
Backlog count seems wrong
Check:
- The count only includes open, unfulfilled fulfillment orders assigned to the location.
- Recent webhook events (orders/create, fulfillment_orders/cancelled, fulfillment_orders/split, fulfillment_orders/merged) may take a few seconds to propagate.
- If the count seems stuck, contact support to trigger a manual recompute.
Related
Capacity Rules
Daily order limit per location
Order routing overview
All available routing rules
Inventory Rules
Prioritize locations with more stock
Ranked Location Groups
Primary location preference groups