Automation library

Automate Shopify orders to your 3PL with routing rules, holds and tracking

Updated · By Ecomsellertool editorial team

Short answer

To automate Shopify orders to a 3PL, let each order wait until Shopify's fraud analysis is done, then run it through a short rule table: risk, address, tags, destination, SKU group and cut-off time. Each rule either sends the fulfillment request to the right warehouse or holds the order with a reason. The 3PL writes tracking back to Shopify, and a person reviews every held order.

  • Shopify Flow is a free app on the Basic, Grow, Advanced and Plus plans; its Send HTTP request action needs Grow or higher (checked October 13, 2026).
  • Flow's Fulfillment order ready to fulfill trigger runs after an order has completed risk assessment and has inventory available, and again when a hold is released.
  • Flow's Submit fulfillment request action works only with third-party fulfillment service apps, not with products set to custom fulfillment services.
  • Shopify's fulfillment hold reasons include high risk of fraud, incorrect address, awaiting payment and inventory out of stock.
  • A 3PL's app accepts or rejects each fulfillment request and can create the fulfillment, with tracking, only after it accepts.
  • Shopify's own guidance is to wait for fraud analysis to finish before you fulfill an order.

The step map: who runs each step

Trigger: A Shopify fulfillment order becomes ready to fulfill (fraud analysis done, stock available), plus a scheduled run every 10 to 15 minutes that releases timed holds before the 3PL's cut-off.

Each step of the workflow in order, and whether a fixed rule, an AI model or a person runs it
StepWhat happensWho runs it
1When a fulfillment order is ready to fulfill, the workflow reads the order's risk level, shipping address, tags, shipping method, destination country, line-item SKUs and the time it was placed.Rule
2An AI model reads the order note and any customer message received since checkout for a change or cancel request, such as a new address or a different size, and flags it. It never edits, releases or cancels an order.AI model
3The rule table runs top to bottom and the first matching rule wins: high risk, a failed address check, a hold tag, a flagged message or an order above the value limit puts the fulfillment order on hold with a Shopify hold reason and a note.Rule
4Destination and SKU-group rules move the fulfillment order to the right warehouse, for example Canadian orders to the second 3PL, before anything is requested.Rule
5Clock rules apply the edit window and the cut-off: standard orders wait up to 30 minutes, express orders skip the wait, and every timed hold is released early enough to reach the 3PL before its same-day cut-off.Rule
6The workflow submits the fulfillment request; the 3PL accepts or rejects it, and a rejection raises an alert with the 3PL's reason.Rule
7A person works the hold queue: confirms or cancels risky orders, fixes addresses, answers change requests and releases each hold.Person
8The 3PL creates the fulfillment in Shopify with the carrier and tracking number, and a morning check lists accepted orders that still have no tracking.Rule

6 rule steps · 1 AI model step · 1 person step. A rule follows fixed logic you approve; an AI model handles messy input and its output is checked by rules; a person makes the calls listed below.

Person

What stays with a person

  • Orders Shopify rates high risk, before they are released or cancelled
  • Addresses that fail the check, and customer requests to change or cancel an order
  • Orders above the value limit your team sets
  • Fulfillment requests the 3PL rejects, and accepted orders with no tracking by the next morning
  • Changes to the rule table, the cut-off times and the warehouse each country or SKU group goes to
Tools

Which tools can run it

  • Shopify Flow with your 3PL's Shopify fulfillment service app, for one or two warehouses and rules based on risk, tags, value and destination
  • Zapier, Make or n8n posting orders to the 3PL's API, for a 3PL without a Shopify app and modest volume, with a log of every run
  • Custom code on your accounts, for several 3PLs, business-day cut-off calendars, marketplace orders in the same queue and tracking checks

Systems it connects

  • Shopify orders and fulfillment orders
  • Shopify Flow
  • 3PL fulfillment service app or 3PL API
  • Second 3PL or your own warehouse
  • Address check
  • Slack or email for the hold queue

Build size: Medium

Each rule is simple; the work is the order the rules run in, the cut-off clock and catching orders that stall between Shopify and the warehouse.

Most Shopify brands that move to a 3PL connect the 3PL's app, watch orders flow, and then find the gaps. A risky order ships before anyone looks at it. A customer emails a new address ten minutes after the warehouse picked. Canadian orders go to the US warehouse. Orders placed at 1:58 pm miss the 2 pm cut-off because a hold released at 2:05. This recipe closes those gaps with a written rule table that decides, for every order, whether it goes to the 3PL now, waits, goes to a different warehouse, or goes to a person. It is one page of our automation library.

Which rules decide when an order goes to the 3PL?

Write the rules down before you build anything, in the order they run. The first rule that matches an order decides what happens to it. Here is the table we start from, with an illustrative brand that ships from a US 3PL with a 2 pm Eastern same-day cut-off and a second 3PL for Canada and oversize items. Copy it and change the values.

#ConditionActionIn Shopify FlowIn a custom integration
1Fraud analysis not finished, or stock not yet availableDo nothing yetStart from the Fulfillment order ready to fulfill trigger, which waits for bothAct only on fulfillment orders that are open, and read the risk result first
2Shopify rates the order high riskHold: high risk of fraud; manual reviewShopify's "Hold fulfillments based on risk level" templateHold with the HIGH_RISK_OF_FRAUD reason and post the order to the review queue
3Address fails the check (no unit number on a multi-unit building, unknown postcode, PO box with a courier-only service)Hold: incorrect address; contact the customerA condition on address fields; limited checksAn address check before the request, with the reason and the failed field in the note
4Tag hold, edit-pending or wholesaleHold until the tag is removedCondition on order tags, then Hold fulfillment orderSame, and release when a person removes the tag
5Customer message or order note asks for a changeHold: other; manual reviewNot practical: Flow does not read your inboxA model flags the request; a person decides
6Order total above $1,000Hold for manual reviewShopify's "Hold fulfillments based on total order value" templateSame, with the limit as a setting
7Ships to Canada, or contains an oversize SKU groupSend to 3PL BMove fulfillment order to 3PL B's locationMove the fulfillment order, then request from 3PL B
8Express or next-day shipping methodSend nowCondition on the shipping line, then Submit fulfillment requestSame, with a priority note to the 3PL
9Standard shipping, placed before 1:30 pmHold 30 minutes for edits, release by 1:45 pm at the latestWait action, then release; the 1:45 pm backstop needs a scheduled workflowA timed hold with a business-day clock
10Standard shipping, placed after 1:30 pm on a business day, or on a weekendHold until 7:00 am next business dayA scheduled workflow that finds held orders and releases themSame, with holidays in the calendar
11Everything elseSend nowSubmit fulfillment requestSame

Three choices make the table work. Holds come before routing, so a risky Canadian order is reviewed before it is moved. Every hold carries a Shopify reason and a note, so the queue explains itself. And the edit window in rules 9 and 10 never costs a shipping day: an order placed after the cut-off would not ship today anyway, so holding it overnight gives the customer free time to fix an address. The times and the $1,000 limit are examples, not advice for your store.

How does Shopify hand an order to a 3PL?

Through fulfillment orders. Shopify creates a FulfillmentOrder automatically for each group of items in an order that ships from the same location; it can be open, scheduled, on hold, in progress or closed (checked October 13, 2026). A 3PL's Shopify app is a fulfillment service with its own location, and Shopify's fulfillment service app documentation says those services can accept or reject requests to fulfill orders.

The handoff has four steps, described in Shopify's guide to building for fulfillment services (checked October 13, 2026). Your store, or Flow, submits a fulfillment request. Shopify notifies the 3PL's callback address. The 3PL accepts or rejects the request. After it accepts, it creates a fulfillment with the carrier, tracking number and tracking link, and it cannot create one before. If the 3PL supports it, Shopify also asks the app for missing tracking numbers once an hour.

Acceptance is the point of no return for your rules. Once a request is accepted, the merchant can no longer withdraw it and has to send a cancellation request, which the 3PL may reject. That is why every check in the table runs before the request goes out.

What can Shopify Flow do, and where does it stop?

Flow covers most of the table when your 3PL has a Shopify app. Shopify Flow is a free app on the Basic, Grow, Advanced and Plus plans, and its Send HTTP request action is limited to Grow, Advanced and Plus (checked October 13, 2026). The right starting point is the Fulfillment order ready to fulfill trigger: it runs when an order has completed risk assessment and has inventory available, once per fulfillment order, and again after a hold is released. Shopify's templates for it include holding fulfillment orders by risk level, holding orders above $1,000 and submitting requests for paid orders that use a specified fulfillment service.

The Order created trigger fires when the customer places the order, before fraud analysis may be done, so it suits tagging rather than sending. The Order risk analyzed trigger fires once Shopify's fraud analysis is complete and does not run immediately after the order is created (both checked October 13, 2026).

Rule typeFlow building blockWhere it stops
HoldHold fulfillment order, with a reason, notes and an optional merchant notificationReleasing at a clock time needs a second, scheduled workflow
RouteMove fulfillment order to another locationWeighs no carrier cost or marketplace ship-by date
SendSubmit fulfillment requestWorks only with third-party fulfillment service apps, not custom fulfillment services
DelayWait, up to 90 days per workflowA delay, not a time of day
ClockScheduled time trigger, at most once every 10 minutes, in the store's time zone by defaultStarts with no store data; Get data actions have to find the held orders

The hold reasons are Shopify's own. The FulfillmentHoldReason list includes awaiting payment, high risk of fraud, incorrect address, inventory out of stock, unknown delivery date and other (checked October 13, 2026). Use the specific reason whenever one fits, so a report on held orders tells you why orders wait.

Flow stops in three places: a 3PL with no Shopify app, time rules that depend on business days and holidays, and anything outside Shopify, such as customer emails or marketplace orders going to the same warehouse. Our guide to what Shopify Flow automates covers the rest of Flow, workflow by workflow.

How should fraud and address holds work?

Wait for the analysis, then hold, then decide. Shopify's fraud analysis page tells merchants to wait for the fraud analysis to finish before fulfilling an order, and warns that fulfilling high-risk orders can lead to more chargebacks (checked October 13, 2026). The same page says fraud indicators need the Basic plan or higher, and fraud recommendations need the Grow plan or higher or Shopify Payments. Some orders get no recommendation at all, including B2B orders, POS orders and orders paid entirely with gift cards, so decide what your rules do when the risk level is empty.

A hold is only as good as the queue behind it. Post every held order to one channel with the reason, the evidence and a link to the order, and set a target time for each reason. A fraud review can wait a few hours; a held express order is losing its shipping day while it sits. The person in the queue confirms, edits or cancels, then releases the specific hold. Shopify's FulfillmentOrder reference warns that releasing all holds at once can release an order prematurely, so a custom integration releases holds by their IDs.

Where does a custom integration earn its cost?

When the rule table outgrows Flow. That usually means a 3PL without a Shopify app, where orders go out through the 3PL's API or a file drop and the fulfillment and tracking have to be written back to Shopify. It also means several warehouses with different cut-offs, holiday calendars, Amazon or Walmart orders going to the same 3PL, or a choice between warehouses by cost and ship-by date. That last one is order routing across channels, which our order routing page covers in depth; the marketplace side of the same handoff, from Walmart acknowledgement to Amazon shipment confirmation, is in our Amazon and Walmart orders to a 3PL recipe.

A custom integration also watches for the quiet failures. It lists requests the 3PL has not accepted within an hour, accepted orders with no tracking by the next morning, and rejected requests with the 3PL's reason. If your 3PL ships through ShipStation, our ShipStation integration page shows how orders, labels and tracking move in that setup. And once orders flow, the 3PL's stock and invoices still have to match what Shopify thinks happened; that is 3PL reconciliation. Orders that come back go the other way through the 3PL; our returns recipe covers the RMA, the inspection and the refund. The integration can run on Ecomsellertool Growth OS beside your other order flows.

Who builds Shopify-to-3PL automation?

Ecomsellertool builds workflow automation on your own Shopify store, 3PL accounts and carrier accounts. We have built software on Amazon's seller APIs since 2017 and shipped 50+ tools for 100+ teams. For a 3PL handoff we write your rule table with you first, then build the holds, the routing, the cut-off clock and the tracking checks, in Flow where it fits and in code where it does not. Send a project brief or read how our workflow automation service works.

The building blocks are work we have shipped:

  • Routing rules and carriers in one layer. For Ecom Global, a global listing and shipping platform built for 100M+ products, 20+ marketplaces and 13+ carriers, we built a shipping master where carriers, warehouses, routes and routing rules live in one place, so an order flows to the cheapest eligible route.
  • Software for the warehouse side. For Little Owl, a 3PL and FBA prep center, we built the system its sellers use to add shipments, returns and listings, and its team uses to track inventory and inbound shipments.

Get your 3PL handoff built

Send us your order rules and your 3PL

Describe the workflow you want automated. We reply with a written plan: scope, timeline and a fixed price.

A few sentences is enough: what happens today, who does it and how often.

Starts when you fill in the form

A quick private check that runs in your browser. No tracking, no puzzles.

A person reads every brief. You get a written plan within 2 business days; no obligation.

Frequently asked questions

How do I send Shopify orders to my 3PL automatically?

Install your 3PL's Shopify app so its warehouse becomes a fulfillment location, then use Shopify Flow's Fulfillment order ready to fulfill trigger with the Submit fulfillment request action. The trigger waits for fraud analysis and stock, so risky orders are not sent too early. Add hold rules for risk, addresses and tags before the request goes out.

Can Shopify Flow route orders to a 3PL by order tag or time of day?

By tag, yes: a condition on the order's tags can hold the fulfillment order or move it to another location. Time of day is harder. Flow has a Wait action and a Scheduled time trigger that runs at most every 10 minutes, so a timed release works as a scheduled workflow that finds held orders and releases them. Business-day calendars and several cut-offs usually need custom code.

How do I stop fraudulent orders from going to my 3PL?

Do not send anything before Shopify's fraud analysis is finished. Start the workflow from a trigger that runs after risk assessment, hold fulfillment orders rated high risk with the high risk of fraud reason, and have a person confirm or cancel them. Once a 3PL accepts a request, you can only ask it to cancel.

What if my 3PL does not have a Shopify app?

Then Flow's Submit fulfillment request action cannot reach it, because it works only with third-party fulfillment service apps. The handoff becomes an integration: read ready fulfillment orders from Shopify, post them to the 3PL's API or file drop, and write the fulfillment and tracking back to Shopify when the 3PL ships.

How does tracking get back into Shopify from a 3PL?

After the 3PL's app accepts a fulfillment request, it creates a fulfillment in Shopify with the carrier, tracking number and tracking link, and Shopify can notify the customer. A fulfillment cannot be created before the request is accepted. Add a daily check for accepted orders with no tracking, because a stalled order is otherwise invisible until the customer asks.

Should I hold orders before sending them to the 3PL?

Briefly, for standard shipping. A short edit window catches address fixes and cancellations before the warehouse picks, which is cheaper than a cancellation request. Skip the window for express orders, and make sure every timed hold is released before the 3PL's same-day cut-off so the hold never costs a shipping day.

Jaimin Dholakia, founder of Ecomsellertool
Jaimin Dholakia · Founder
Schedule a call

Get this workflow built on your own systems.

Prefer to talk the workflow through first? Schedule a free call with the engineers who would build it. Selling on Amazon? The free 24-hour diagnostic finds the operations gaps in your account: connect it with Login with Amazon, on Amazon’s own consent screen (we only read data; we never change listings, prices, stock or ads), and get a report within 24 hours of connecting, on business days.

Free · 30 minutes · Pick any open slot