Skip to main content
Backlog routing ranks locations by how many open fulfillment orders they have, sending new orders toward locations with shorter queues. Optionally, you can also block a location once its backlog grows past a maximum threshold.
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)
Both are configured from the same place per location.

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:
Lower backlog count → Higher rank
Locations that haven’t opted in (via the Backlog limit toggle on their Shipping tab) are not ranked by this rule — they keep their position from other rules or Shopify’s default logic.
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:
  1. Configure backlog limits per location in Charlie
  2. 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:
FieldDescription
Maximum pending ordersThe threshold. For BLOCK mode, the location stops accepting once it reaches this number. Range: 1 to 25,000.
How to handle backlogChoose between Prefer other locations (soft) or Block orders (hard).
5

Repeat per location

Configure backlog settings for each location you want to include.

Backlog modes

ModeBehavior
Prefer other locationsSoft signal. The location with fewer pending orders is ranked higher. If it’s the only option, it can still fulfill.
Block ordersHard cap. Once the location’s backlog reaches the threshold, it’s excluded entirely until the backlog drops below the threshold.
Use Prefer other locations for load balancing across multiple locations. Use Block orders when a location genuinely cannot handle more pending orders — for example, a small store with a strict 50-order pipeline.

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

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

LocationBacklog countRank
Warehouse A21 (top)
Store Paris82
Store Lyon153
Store Nice254 (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
Result: Orders prefer the store with the shortest current backlog. Paris naturally catches up as the others take more orders.

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
Result: Once the store has 30 open fulfillment orders, it’s excluded from new assignments until enough orders are fulfilled or moved away.

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
Result: The big network is balanced softly, and the two small stores are protected from spilling over.

Combining with other rules

With Inventory Rules

Prefer locations with both stock AND short backlogs:
  1. Inventory Rules — Rank by available stock
  2. Backlog routing — Among in-stock locations, prefer those with shorter backlogs
Result: Orders go to locations that have both the inventory and the capacity to fulfill promptly.

With Capacity Rules

Backlog and daily order limit serve different windows:
SignalWindowQuestion
CapacityTodayHow many orders has this location taken today?
BacklogAll-time openHow many orders are still unfulfilled here?
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:
  1. Ranked Location Groups — Warehouses (Group 1) → Stores (Group 2)
  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:
MetafieldTypeDescription
$app:location.backlog_countnumber_integerCurrent count of open fulfillment orders
$app:location.backlog_blockedbooleantrue when the location is over its threshold in BLOCK mode
$app:location.backlog_preference_enabledbooleantrue when the location has opted into the PREFER signal
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

Check:
  1. Is the Backlog location rule enabled in Shopify Order Routing?
  2. Is Backlog limit enabled and set to Prefer other locations at the locations you want to balance?
  3. Are the locations’ backlog_count metafields actually different? Check via the Shopify admin metafields panel.
  4. Are there higher-priority rules above the Backlog rule that override its ranking?
Check:
  1. Is Backlog limit set to Block orders?
  2. Has the location’s open backlog crossed the threshold?
  3. The block lifts automatically once the backlog drops below the threshold — no manual action needed.
Check:
  1. The count only includes open, unfulfilled fulfillment orders assigned to the location.
  2. Recent webhook events (orders/create, fulfillment_orders/cancelled, fulfillment_orders/split, fulfillment_orders/merged) may take a few seconds to propagate.
  3. If the count seems stuck, contact support to trigger a manual recompute.

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
Last modified on May 22, 2026