Constraints vs order routing
Charlie offers two ways to control where orders are fulfilled from:| Fulfillment constraints | Order routing rules | |
|---|---|---|
| Effect | Blocks locations entirely | Deprioritizes locations |
| When no match | Checkout blocked, no shipping options | Falls back to next priority |
| Use case | Hard business requirements | Optimization preferences |
How constraints work
When a customer reaches checkout, Charlie evaluates each constraint rule against the cart. For every rule that matches:- The specified locations are removed from the eligible fulfillment pool
- Shopify then checks inventory only at remaining locations
- If no remaining location has stock, checkout is blocked

Constraint types
Charlie supports three types of constraints, each triggered by different conditions:Product rules
Block locations based on what is in the cart (specific products or collections)
Customer rules
Block locations based on who is buying (B2B customers, customer tags)
Cart rules
Block locations based on cart properties (total quantity, total amount, line item attributes)
Filtering locations
Each constraint rule specifies which locations to block using one of these filters:| Filter | Description | Example |
|---|---|---|
| Specific locations | Block or allow only named locations | ”Block fulfillment from Paris Store” |
| Location tags | Block or allow locations by tag | ”Block all locations tagged no-fragile” |
| Location type | Block or allow by type (Store or Warehouse) | “Block all Stores, allow only Warehouses” |
- Exclude matching locations (block them)
- Include only matching locations (block everything else)
Before using constraints, make sure your locations are properly configured with the right types and tags.
Use cases
Bulky items from small stores
A fashion retailer sells oversized dresses that require large packaging. Their smaller retail locations don’t have the storage space or packaging materials to ship these items. Setup:- Constraint type: Product rule
- Condition: Cart contains products from the “Bulky Dresses” collection
- Filter: Exclude locations tagged
small-store
- Regular items → All locations eligible
- Bulky dresses → Only large stores and warehouses can fulfill
- If only a small store has a bulky dress in stock → Checkout blocked
High-value orders from warehouse only
A luxury brand wants to ensure that high-value orders (over €500) are only fulfilled from their central warehouse where they have dedicated packaging and insurance processes. Setup:- Constraint type: Cart rule
- Condition: Total amount > €500
- Filter: Include only locations tagged
central-warehouse
- Orders under €500 → All locations eligible
- Orders over €500 → Only the central warehouse can fulfill
- If central warehouse is out of stock on a €600 order → Checkout blocked
B2B orders from dedicated locations
A wholesaler needs to ensure B2B customers are only served from locations with proper invoicing and bulk packaging capabilities. Setup:- Constraint type: Customer rule
- Condition: Customer is B2B
- Filter: Include only locations tagged
b2b-enabled
- Regular customers → All locations eligible
- B2B customers → Only B2B-enabled locations can fulfill
- If no B2B location has stock → Checkout blocked