Should You Build or Buy Fulfillment Constraints on Shopify Plus?
Fulfillment constraints are a BUILD on Shopify Plus: no App Store app restricts which location may fulfill a cart line before the order exists. A fulfillment constraints function does exactly that for $8,000–$25,000 (Deploi estimate, illustrative). Every app found routes orders after placement or schedules pickup and delivery. Custom apps containing Function APIs are Plus-only. The function doesn't support pre-order or try-before-you-buy items, so route those after the order instead.
Your profile — see how the verdict shifts
- Confidence
- High — Browsed the App Store's Orders and shipping › Inventory and Shipping solutions categories, searched the App Store sitemap for fulfillment-rule and OMS listings, ran web searches for multi-location routing and checkout-location-restriction apps, and fetched each candidate's full listing text on 2026-09-05 to check whether it acts before or after order placement. Every app found operates on orders already placed (AFR Advanced Fulfillment Rules at 4.9★ on 8 reviews and Order Fulfillment Guru at 4.8★ on 113 reviews re-assign or route completed orders) or governs the customer's pickup and delivery choice at checkout (Zapiet at 4.9★ on 1,866 reviews). None constrains which location may fulfill a cart line before the order exists, and none mentions pre-order or try-before-you-buy interaction. Shopify's docs state that only Plus stores can use custom apps that contain Shopify Function APIs, and that only stores on the Shopify Plus plan can use custom order routing location rules; the Fulfillment Constraints reference lists Pre-order and Try Before You Buy as unsupported.
- Reference scenario
- $20M–$100M GMV · Shopify Plus · three or more fulfillment locations · SKUs restricted to specific warehouses, or kits that must ship together · agency or in-house dev bench
- As of
- September 2026
Decision at a Glance
| Your profile | Verdict | Why |
|---|---|---|
| Any plan · the rule can run after the order is placed | WAIT | Shopify's own order routing rules assign fulfillment orders to locations after placement on every plan, and Plus stores can add custom order routing location rules. If a wrong-warehouse assignment is fixable before the label prints, native routing is the answer and nothing on this page needs buying or building. |
| Not on Plus · needs enforcement before the order exists | WAIT | Only Plus stores can install custom apps that contain Function APIs, and no App Store app enforces location eligibility at checkout, so there is no lane to buy or build. Approximate with native routing rules and a post-order app like Order Fulfillment Guru at $9.95–$29.95/month (verified Sep 2026), and revisit on Plus. |
| Plus · SKUs that may only ship from specific locations (hazmat, cold chain, licensed goods) | BUILD | The fork this page exists for. A fulfillment constraints function reads a location-eligibility metafield on the product and constrains the cart line to those locations before checkout offers a delivery option, for $8,000–$25,000 (Deploi estimate, illustrative). No routing rule applied after payment can undo a delivery promise checkout already made. |
| Plus · kits or sets that must ship together, with no pre-order or try-before-you-buy items in the mix | BUILD | A must-fulfill-together constraint keeps a set in one shipment at checkout, so the customer never pays for one delivery and receives two. The function doesn't support pre-order or try-before-you-buy items, so any set that includes them falls back to post-order routing. |
What Fulfillment Constraints Function Actually Drives
| Outcome | Impact | How it works |
|---|---|---|
| Operational efficiency | High | Constraining eligibility before the order exists removes the manual re-route when a hazmat or cold-chain SKU lands on a warehouse that can't ship it. |
| Revenue — direct | Medium | A must-ship-together constraint prevents the forced split shipment the merchant pays for after the customer bought a single delivery. |
| Customer experience | Medium | The delivery options checkout shows are ones fulfillment can actually honor, so the promised date isn't quietly broken by a post-order re-assignment. |
| Data & insight | Medium | Location eligibility recorded as product metafields becomes one queryable source for checkout, routing and warehouse capacity reporting instead of tribal knowledge. |
Spend ceiling: Size the spend against wrong-warehouse shipments and forced splits per month, not against app subscriptions. A build at $8,000–$25,000 (Deploi estimate, illustrative) pays back when those corrections cost more than that in carrier fees and support time per year; when they don't, native routing after placement is enough.
What buying enables (top apps)
- + Post-order routing and re-assignment across locations, partners and other Shopify stores, live in a day from $9.95/month (verified Sep 2026)
- + Customer-facing pickup and local delivery scheduling by location with prep-time and date restrictions, from $29.99/month (verified Sep 2026)
- + Native order routing rules on every plan, with custom location rules on Plus, at no extra cost
- + Vendor-maintained integrations such as ShipStation on Order Fulfillment Guru's Essential plan (verified Sep 2026)
What building additionally unlocks
- + Enforcement before the order exists, so checkout only offers delivery options fulfillment can honor
- + SKU-level location eligibility and must-ship-together rules held in metafields your warehouse team controls
- + No second shipment or manual re-route to correct an assignment the customer already paid for
- + One rule set that routing, reporting and checkout all read, under your own release process
Find Your Verdict in 3 Questions
Can the rule safely run after the order is placed, before the label prints?
Yes: Your verdict: WAIT. Shopify's native order routing rules assign locations after placement on every plan, and Plus adds custom order routing location rules; nothing here needs buying or building.
No: Go to question 2.
Is the store on Shopify Plus?
Yes: Go to question 3.
No: Your verdict: WAIT. No App Store app enforces location eligibility at checkout and custom apps with Function APIs are Plus-only, so approximate with native routing and a post-order app like Order Fulfillment Guru at $9.95–$29.95/month (verified Sep 2026).
Do the restricted SKUs or ship-together sets exclude pre-order and try-before-you-buy items?
Yes: Your verdict: BUILD. One fulfillment constraints function reading eligibility metafields, at $8,000–$25,000 (Deploi estimate, illustrative).
No: Your verdict: BUILD. Build the function for everything else and route pre-order and try-before-you-buy items after placement, because the Fulfillment Constraints reference lists them as unsupported.
The TCC Scorecard — 12 Dimensions
TCC — Total Cost of Capability: what it actually costs to have this capability over three years, whichever way you get it. Each dimension is scored 0–5 for both paths. How we score →
| Dimension | Buy | Build | Why |
|---|---|---|---|
| Cost | |||
| Acquisition & implementation | A post-order routing app configures in a day, but it solves a different problem; a production fulfillment constraints function with eligibility metafields and fixtures runs an estimated 3–6 weeks (Deploi estimate, illustrative). | ||
| Recurring fees | Adjacent apps run $9.95–$179.99/month (verified Sep 2026) and still leave the checkout-time rule unenforced; the function carries no subscription, only upkeep. | ||
| Maintenance & upgrades | The vendor absorbs API versions for everyone, while your own function needs roughly 15–20% of build cost per year (Deploi estimate) plus the ops work of keeping location-eligibility metafields current as warehouses change. | ||
| Switching & exit | Routing rules configured in a vendor's admin have to be re-documented on exit; your eligibility data lives in product metafields and your function source in your repository. | ||
| Risk | |||
| Vendor risk | The closest-fit routing app carries 8 reviews and the category has no product for the actual requirement, which is the vendor risk of an adjacent-only market; a first-party function has no vendor to lose. | ||
| Security & compliance surface | Routing apps read orders, addresses and inventory across every location under their own permissions; a custom function runs inside Shopify's sandbox with only the input query you wrote. | ||
| Platform-deprecation exposure | Post-order apps sit on the stable fulfillment order APIs, and the Fulfillment Constraints Function API is first-class with versioned upgrades; the pre-order and try-before-you-buy gap is the platform limitation to watch on the build side. | ||
| Value | |||
| Fit to requirement | The requirement is enforcement before the order exists, and every app found acts after placement or on the customer's pickup choice, so the fit gap is the whole page. | ||
| Time to market | A routing app is live in a day for the post-order approximation, while the function takes three to six weeks and removes the approximation. | ||
| Performance & scale | The function runs inside the 11-million-instruction budget for carts up to 200 line items with a 3,000-byte input query, which is ample for eligibility lookups across Plus's 200-location ceiling. | ||
| Data ownership & AI-readiness | Location eligibility held in product metafields you own becomes a single source of truth for checkout, routing and warehouse reporting; a vendor's routing rules stay in its admin. | ||
| Focus & opportunity cost | Nobody wants to own fulfillment plumbing, though a single bounded function that ends wrong-warehouse shipments and forced splits pays for itself in carrier fees and support tickets rather than in features. | ||
The App Landscape
| App | Status | Pricing | Best for |
|---|---|---|---|
| Zapiet Pickup + Delivery | Live — 4.9★, 1,808 reviews; Built for Shopify; pickup, local delivery and shipping scheduling with POS integration | $29.99–$179.99/mo across three tiers by locations and order volume, 14-day trial, annual billing saves 15% (verified Sep 2026) | Store pickup and local delivery scheduling by location, which is a different job from fulfillment constraints |
| Order Fulfillment Guru | Live — 4.8★, 113 reviews; Built for Shopify. Routes and re-assigns orders that already exist across locations, partners and other Shopify stores, with advanced routing rules on the Professional plan. Acts after placement, so it corrects assignment rather than preventing an infeasible delivery promise at checkout. | Free plan (receive orders from other Shopify stores, export products and inventory); Starter $9.95/month; Essential $19.95/month (adds ShipStation); Professional $29.95/month (advanced order-routing rules, multi-store sending); 14-day free trial on paid plans (verified Sep 2026) | Post-order routing and re-assignment, the honest approximation when checkout-time enforcement isn't available |
| AFR Advanced Fulfillment Rules | Live — flagged — 4.9★, 8 reviews; young listing. Auto-routes placed orders by tag or shipping address, priced by monthly order volume. Post-order only, and too few reviews to carry a mid-market fulfillment process on its own. | Standard $19.99/month (100–500 orders/month); Enterprise $39.99/month (over 500 orders/month, priority support); 14-day free trial (verified Sep 2026) | Simple tag- or address-based routing after placement on a small store |
| Shopify order routing rules | Native — First-party settings. Fulfillment-order routing rules assign locations after an order is placed on every plan, and only stores on the Shopify Plus plan can use custom order routing location rules. Plus supports up to 200 locations against 10 on other plans (verified Sep 2026). Runs after placement, so it can't change what checkout already offered. | Included with Shopify | Every rule that can safely run after the order exists |
| Fulfillment constraints function (custom app) | Build lane — The only mechanism that constrains which locations may fulfill a cart line, or which lines must ship together, before the order exists. Lives in a custom app, installable only on Shopify Plus. Reads eligibility from product metafields you define. Doesn't support pre-order or try-before-you-buy items, which fall back to post-order routing. | $8,000–$25,000 one-time plus upkeep (Deploi estimate, illustrative) | Plus merchants with location-restricted SKUs or must-ship-together sets |
The Build Path
- Model eligibility as product metafields, not code: Store the allowed fulfillment locations for a SKU, and a ship-together group key, in product metafields under a reserved app-owned namespace, so warehouse operations edit them without a deployment. The input query is capped at 3,000 bytes and a calculated cost of 30, list arguments at 100 elements, and metafield values over 10,000 bytes aren't returned.
- Constrain at checkout, route after: The function restricts which locations may fulfill each line, and which lines must be fulfilled together, before checkout offers delivery options. Native order routing rules, and custom order routing location rules on Plus, then pick among the eligible locations after placement. Both layers stay in play; the function only removes infeasible choices.
- Plan the pre-order and try-before-you-buy exception: The Fulfillment Constraints reference lists Pre-order and Try Before You Buy as unsupported, so a cart containing those items can't rely on the constraint. Decide up front whether those SKUs route post-order under a native rule or are excluded from restricted sets, and write that decision into the fixtures.
- Test with fixtures at the location and cart edges: The budget is 11 million instructions for carts up to 200 line items, 128 kB of input and 20 kB of output, and Plus supports up to 200 locations. Run the function against fixture carts mixing restricted and unrestricted SKUs with the CLI, then replay logged production inputs before release.
- Effort band
- $8,000–$25,000 for one production fulfillment constraints function with eligibility metafields, merchant settings and fixtures — Deploi estimate (illustrative); lands in the $10–25K contact-form band, or $25–75K with an ERP or WMS feed keeping eligibility data current
- Typical timeline
- 3–6 weeks to a production function (Deploi estimate, illustrative)
- Maintenance, honestly
- ~15–20% of build cost per year (Deploi estimate): roughly $1,500–$5,000/yr (Deploi estimate, illustrative) for quarterly API version bumps, new locations and restricted categories, and keeping fixtures current as the warehouse footprint changes.
- What you own — and what you take on
- You own: the eligibility rules in product metafields, the ship-together groups, the fixtures and the deployment history. You take on: keeping eligibility data honest as warehouses open and close, the pre-order and try-before-you-buy exception, API version upkeep and a Plus dependency.
3-Year Total Cost of Capability
| Buy (app path) | Build (custom path) | |
|---|---|---|
| Year 0 (setup) | $1,500–$5,000 (routing configuration and a manual exception process) | $8,000–$25,000 |
| Years 1–3 (recurring) | $360–$6,480 (subscription across three years) | $4,500–$15,000 (upkeep and new locations) |
| 3-year total | ≈$1,860–$11,500 | ≈$12,500–$40,000 |
- † All figures illustrative samples for the reference scenario — not quotes, not verified pricing.
- † Buy column assumes a post-order routing app plus the manual re-assignment and re-shipment work it leaves behind, since no app enforces the rule at checkout.
- † Build column covers one fulfillment constraints function with eligibility metafields, merchant settings and fixtures; three-year horizon.
What the Sticker Price Hides
On the buy path
- — Every routing app acts after the customer has paid, so a wrong-warehouse assignment it corrects still costs a second shipment or a re-route
- — AFR Advanced Fulfillment Rules carries 8 reviews, too thin a base to anchor a mid-market fulfillment process (verified Sep 2026)
- — Zapiet's $79.99 and $179.99 tiers buy location scheduling for pickup and delivery, a different job from constraining which warehouse fulfills a SKU (verified Sep 2026)
- — An OMS enforces the rule inside its own system and still can't change what Shopify's checkout already promised
On the build path
- — Custom apps containing Function APIs are Plus-only, so the constraint stops being installable if the store ever leaves Plus
- — Pre-order and try-before-you-buy items are unsupported by the function, and a project that forgets the exception discovers it in production
- — Eligibility metafields go stale when a warehouse opens or a restricted category changes, and stale data blocks valid orders at checkout
- — ~$1,500–$5,000/yr in upkeep (Deploi estimate, illustrative)
What Merchants Say
The recurring failure is a restricted SKU, hazmat or cold chain, assigned to a warehouse that can't ship it, caught only when the label prints, followed by a manual re-route and a second shipping charge the customer never agreed to.
Low-star reviews on routing apps repeat one complaint: the rule fires after the customer paid for a single shipment, so the merchant eats the split, and the app's support says checkout is out of its hands.
If You Change Your Mind Later
If you bought and outgrow it
Document the routing rules before you cancel, because they live in the vendor's admin, and expect assignments to fall back to Shopify's native routing the moment the app is removed. Since no app enforced the checkout-time rule anyway, exit changes little about what customers see.
If you built and want out
Nothing strands. Location eligibility and ship-together groups live in product metafields that also serve routing and reporting, and the function source is in your repository. Removing your custom app returns checkout to unconstrained delivery options, and native order routing rules keep assigning locations after placement as before.
When This Answer Changes
We're watching for:
- ▸ Shopify adding location-eligibility or ship-together constraints to native routing settings, which would move the build lane to WAIT
- ▸ The Fulfillment Constraints reference adding support for Pre-order and Try Before You Buy, which closes the exception this page plans around
- ▸ A public App Store app shipping a fulfillment constraints function, which would open checkout-time enforcement to every plan
Verdict change log:
No changes since first publication (September 2026).
Common Questions
Does any Shopify app restrict which location can fulfill a cart at checkout?
No. Every app checked on 2026-09-05 acts after the order is placed or on the customer's pickup choice. Order Fulfillment Guru ($9.95–$29.95/month) and AFR Advanced Fulfillment Rules ($19.99–$39.99/month, 8 reviews) re-assign completed orders, and Zapiet ($29.99–$179.99/month) schedules pickup and delivery by location (verified Sep 2026). Constraining a cart line to eligible locations before checkout offers delivery needs a fulfillment constraints function in a custom app, which only Shopify Plus stores can install.
Do fulfillment constraints work with pre-orders or try before you buy?
No. As of September 2026, Shopify's Fulfillment Constraints reference lists Pre-order and Try Before You Buy as unsupported, so a cart containing those items can't rely on the constraint at checkout. A Plus merchant plans around the gap in one of two ways: exclude those SKUs from location-restricted or must-ship-together sets, or let native order routing rules assign them after placement. Write the chosen exception into the function's fixtures so it is tested, not assumed.
What does a fulfillment constraints function cost to build?
A fulfillment constraints function costs $8,000–$25,000 one-time, plus roughly 15–20% of build cost per year in upkeep (Deploi estimate, illustrative). The scope is one function in a custom app on Shopify Plus, product metafields for allowed locations and ship-together groups, merchant settings, fixture tests and deployment, over 3–6 weeks. Add $25–75K of scope when an ERP or WMS feed must keep eligibility data current (Deploi estimate, illustrative).
Your Next Steps
If you're going with BUILD(matches your selected profile)
- List every SKU with a location restriction and every set that must ship together, and record the reason for each
- Define product metafields for allowed locations and ship-together groups under a reserved app-owned namespace
- Decide the pre-order and try-before-you-buy exception before coding, and put it in the fixtures
- Build one function with merchant settings, test fixture carts mixing restricted and unrestricted SKUs, then replay production inputs
- Keep native order routing rules in place to choose among the eligible locations after placement
If you're going with WAIT
- Configure Shopify's native order routing rules for the post-order assignments they can express
- Add custom order routing location rules on Plus where a standard rule falls short
- Use Order Fulfillment Guru for cross-store or partner re-assignment if you need it (verified Sep 2026)
- Track wrong-warehouse shipments and forced splits per month; that count is the business case for the function
Official Docs & Sources
- Orders and fulfillment apps — shopify.dev
- Order routing apps and the Plus-only location rule API — shopify.dev
- Native order routing — Shopify Help Center
Official documentation linked for verification — our verdicts and estimates are our own.
Related Decisions
Build or Buy Delivery Customization Functions on Plus?
Hiding, renaming or sorting shipping options is a $3.99–$7.99/month app decision on any plan (verified Sep 2026); a custom delivery function needs Plus.
Should You Build a Custom Order Routing Rule on Plus?
Custom warehouse routing through the Order Routing Location Rule Function is Plus-only; a rules app or your 3PL decides on every other plan.
Should You Build Real-Time Pickup Eligibility on Plus?
Pickup eligibility beyond stock on hand needs the Plus-only Local Pickup Delivery Option Generator Function; the native toggle and pickup apps cover the rest.
Should You Build or Buy a Local-Pickup Handling Fee?
Charging a pickup-specific handling fee inside checkout needs the Plus-only Local Pickup Charges Function; surcharge apps price carts, not the pickup option.
Should You Build or Buy a Returns Portal on Shopify?
A returns portal splits by return economics: WAIT on native for simple flows, BUY exchange-first in the mid-market, BUILD at 3PL scale.
Ready to stop the wrong warehouse from shipping the order?
No app does this, so we won't pretend one does. We model your location eligibility and ship-together rules as product metafields your warehouse team controls, build one fulfillment constraints function that enforces them before checkout offers a delivery option, and plan the pre-order and try-before-you-buy exception up front instead of discovering it in production.
Contact us todayVerdict scored for the reference scenario above. Estimates are not quotes; app pricing carries its verification date and gets re-verified quarterly. Platform gates and limits quoted from shopify.dev and help.shopify.com as of September 2026. Full scoring anchors: see the TCC methodology.
Read how we score these decisions (the TCC Framework). No affiliate links, no paid placement — no app vendor pays to appear here.