Build vs. Buy>Shipping, Delivery & Fulfillment>Fulfillment Constraints Function

Should You Build or Buy Fulfillment Constraints on Shopify Plus?

Written by Deploi EditorialReviewed by Martin Dejnicki, Director of SEO & AI SearchUpdated September 2026Pricing verified September 2026

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

VerdictBUILD (a fulfillment constraints function in a custom app, Plus-only) · WAIT when the rule can run after the order is placed, because native order routing covers that on every plan · no app enforces location eligibility at checkout
Buy score
3.6
Build score
7.8
Confidence
HighBrowsed 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 profileVerdictWhy
Any plan · the rule can run after the order is placedWAITShopify'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 existsWAITOnly 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)BUILDThe 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 mixBUILDA 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

OutcomeImpactHow it works
Operational efficiencyHighConstraining 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 — directMediumA must-ship-together constraint prevents the forced split shipment the merchant pays for after the customer bought a single delivery.
Customer experienceMediumThe 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 & insightMediumLocation 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

  1. 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.

  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).

  3. 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 →

DimensionBuyBuildWhy
Cost
Acquisition & implementationA 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 feesAdjacent 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 & upgradesThe 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 & exitRouting 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 riskThe 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 surfaceRouting 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 exposurePost-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 requirementThe 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 marketA 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 & scaleThe 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-readinessLocation 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 costNobody 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

AppStatusPricingBest for
Zapiet Pickup + DeliveryLive4.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 GuruLive4.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 RulesLive — flagged4.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 rulesNativeFirst-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 ShopifyEvery rule that can safely run after the order exists
Fulfillment constraints function (custom app)Build laneThe 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
Illustrative cumulative cost over 36 months$0$7k$14k$20k$27kMo 0Mo 12Mo 24Mo 36Buy (app path)Build (custom path)
Illustrative cumulative cost across three years. The adjacent-app lane is cheaper on paper and misleads, because it never enforces the rule at checkout; its real cost is every wrong-warehouse shipment and forced split it corrects after the customer has paid. The build lane is the only line on the chart that does the job the page is about.
  • 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.
community-reported (2026 research corpus)
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.
app-store 1–2★ review theme

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)

  1. List every SKU with a location restriction and every set that must ship together, and record the reason for each
  2. Define product metafields for allowed locations and ship-together groups under a reserved app-owned namespace
  3. Decide the pre-order and try-before-you-buy exception before coding, and put it in the fixtures
  4. Build one function with merchant settings, test fixture carts mixing restricted and unrestricted SKUs, then replay production inputs
  5. Keep native order routing rules in place to choose among the eligible locations after placement

If you're going with WAIT

  1. Configure Shopify's native order routing rules for the post-order assignments they can express
  2. Add custom order routing location rules on Plus where a standard rule falls short
  3. Use Order Fulfillment Guru for cross-store or partner re-assignment if you need it (verified Sep 2026)
  4. Track wrong-warehouse shipments and forced splits per month; that count is the business case for the function

Official Docs & Sources

Official documentation linked for verification — our verdicts and estimates are our own.

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 today

Ecommerce development

Verdict 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.

No affiliate links. No paid placement. We make money building and integrating solutions — not on referral fees.