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 ranks locations in two tiers:By default the backlog count includes every pending fulfillment order assigned to the location — both Open (accepted, nothing fulfilled yet) and In progress (partially fulfilled). Closed and cancelled orders never count. You can narrow this to only In progress orders — see What counts toward backlog below. The count refreshes as orders are created, fulfilled, moved, cancelled, un-fulfilled, held, released, or rescheduled.
What counts toward backlog
By default a location’s backlog counts every pending fulfillment order — both Open and In progress. You can change what counts from Charlie → Settings → Backlog.This is a shop-wide setting that applies to every location’s backlog count, in both Prefer and Block modes. It doesn’t require any change to your order routing rules — the same
backlog_count metafield is recomputed under the new definition.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
1
Open a location
Go to Charlie → Locations and select the location you want to configure.
2
Navigate to Shipping settings
Click the Shipping tab.
3
Enable Backlog limit
In the Shipping constraints section, toggle on Backlog limit.
4
Set the threshold and mode
Configure the backlog settings:
5
Repeat per location
Configure backlog settings for each location you want to include.
Backlog modes
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.1
Open Order routing
Go to Charlie → Settings → Order routing or Shopify → Settings → Shipping and delivery → Order routing.
2
Add the Backlog location rule
Find Charlie’s Backlog location rule in the available rules list and add it to your routing strategy.
3
Enable the rule
Toggle the rule to Enabled. The rule will use the backlog thresholds and modes you configured per location.
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
No-limit locations rank first
Any location without a backlog limit enabled ranks above every location that has one — regardless of how many pending orders it actually has. This is the top tier; a location can only rank below it by having a backlog limit configured.Ranked by free capacity, not raw count
Among locations with a backlog limit set to Prefer other locations, ranking is based on the percentage of that location’s own threshold still free — not the raw number of pending orders. A location with a small threshold that’s nearly full ranks below a busier location that still has plenty of room relative to its own limit.
Notice Store Nice ranks first with the most pending orders, because it has no backlog limit set. And Store Paris ranks last despite having the fewest pending orders, because it’s the closest to its own (small) threshold.
Tie-breaking
Free capacity is compared in 5% bands rather than exact percentages, so locations that land in the same band share a rank. Shopify then uses its default logic to choose between tied locations.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:
Use both to combine “what’s been assigned today” with “what’s still in the pipeline.”
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:
The same data is mirrored in the public
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 includes the statuses chosen in Settings → Backlog — by default Open and In progress. If you switched to Only orders in progress, accepted-but-not-started orders won’t be counted.
- The count refreshes from webhook events (order created, fulfilled, cancelled, un-fulfilled, moved, split, merged, held, released, or rescheduled) and 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