Order Routing Between Shopify and ShipHero

Last updated: June 29, 2026

Selling through Shopify while fulfilling through Manifest means two systems have to agree on which orders Manifest should ship. This guide walks through how that works end to end: how Shopify assigns each order to a location, how ShipHero decides which orders to bring in, and how automation rules handle the cases in between.

It is most useful if you fulfill from more than one location, or plan to, and want to understand or control how your orders are routed. If Manifest is your only fulfillment location, routing happens on its own and this guide is helpful as background.

Important: By default, ShipHero imports all orders from your connected Shopify store. None of the routing or restriction behavior in this guide happens on its own. The Shopify and ShipHero settings covered below must be configured before any order is held back from import or fulfillment. Until they are, assume every order comes in.

Overview

Order routing involves three distinct functions across two systems. They work together, but each does a separate job:

  1. Shopify location assignment decides which fulfillment location an order is assigned to.

  2. The ShipHero import order flag decides whether an order is imported for Manifest to fulfill (fulfill or don't fulfill).

  3. ShipHero automation rules act on the orders that import.

The import flag and automation rules are two separate functions. The flag controls what comes into ShipHero. Automation rules act on orders that are already in. Neither runs the other, but used together they produce clean, predictable routing. The rest of this guide covers each function in turn.

 

The Flow at a Glance

Function

System

What it does

1. Location assignment

Shopify

Inventory, order routing rules, and shipping options decide which location each item is assigned to

2. Import flag

ShipHero

Blocks orders where every item is non-Manifest. Every other order imports in full

3. Automation rules

ShipHero

A separate function. Runs once at import to cancel non-Manifest items on split orders and apply tags, holds, warehouse, and shipping

These are three separate functions, listed in the order they act on an order.

 

Part 1: Order Routing Within Shopify

Before ShipHero ever sees an order, Shopify decides which location should fulfill it. This is called order routing, and it runs automatically the moment an order is placed. It only applies once a store has two or more active locations.

How Shopify decides

When an order comes in, Shopify checks which locations have the ordered items in stock, then applies your routing rules to rank those locations and pick where the order goes. Two behaviors are worth understanding:

  • Inventory comes first. Shopify only routes an item to a location that has stock for it. A location with no inventory for an item is not eligible to fulfill that item, unless it is set to oversell.

  • Shopify prefers one location and splits only when it has to. By default it tries to fulfill the whole order from a single location. When no single location has everything in stock, it splits the order across locations. This automatic split is exactly how a split order is born, which is the gap covered in Parts 2 and 3.

Seeing the assigned location on the order

Once Shopify routes an order, you can see exactly where each line item is set to fulfill from on the order's detail page. Open the order from Orders and look at the Unfulfilled section:

  • One location: if a single location can fulfill everything, all line items appear in one Unfulfilled section, headed by that location's name.

  • Split across locations: if no single location has everything, the order is split into multiple Unfulfilled sections, one per location. Each section is headed by its location name and lists only the line items assigned to it.

The location shown on each section is that line item's assigned fulfillment location. This is the same value ShipHero reads in Part 2 to decide whether to import, so the order page is the quickest way to confirm how an order was routed. To reassign, click the location name on the section and choose Change location.

The levers you can tune

Three settings control which location Shopify lands on, and each can steer orders toward or away from Manifest.

1. Inventory (and inventory sync)

A location with no stock for an item will not be assigned that item. Removing inventory from a location, and turning off its inventory sync, is a reliable way to keep orders from routing there. Adding inventory and syncing it does the opposite.

2. Order routing rules

Routing rules let you set how Shopify prioritizes locations. Shopify offers four built-in rules:

  • Use ranked locations: rank specific locations or groups so Shopify prefers some over others. This is the main lever for steering orders to or away from Manifest.

  • Minimize split fulfillments: route to the location that can fulfill the most items at once, reducing splits.

  • Ship from the closest location: prioritize the location nearest the customer.

  • Stay within the destination market: keep fulfillment in the customer's country.

To set them up:

  1. Go to Settings > Shipping and delivery and open Order routing.

  2. Click Add rule and choose the rule you want.

  3. Drag rules to rank their priority. The top rule carries the most weight.

  4. Save.

3. Shipping options by location (shipping profiles)

A location can only be assigned orders for destinations and products it is set up to ship. Shipping profiles map which products and destinations each location handles, so they help send orders to the right place.

  1. Go to Settings > Shipping and delivery and open your shipping profiles.

  2. Under Fulfillment locations and shipping zones, review which destinations each location can ship to.

  3. Removing all shipping options from a location keeps orders from routing to it.

Together, these three settings determine the fulfillment location that ShipHero reads in Part 2.

 

Part 2: The Import Logic in Detail

The import flag is an exclusion gate. Its one job is to prevent certain orders from importing into ShipHero. It does not trim items, split orders, or fulfill anything itself. It decides one thing for the order as a whole: in or out.

It prevents exactly one category of order:

Orders where every line item is assigned to a non-Manifest (unchecked) location. Those orders do not import.

Everything else imports in full, because ShipHero imports orders whole, never in pieces. So the gate turns on a single question: does any line item in the order belong to the Manifest (checked) location?

  • Yes, at least one item does → the entire order imports, including any items assigned to non-Manifest locations.

  • No, none do → the order is prevented from importing.

That is the limit of what the flag does. When a split order imports with non-Manifest items attached, the flag does not remove them. Cleaning those up is a separate job handled by automation rules (Part 3).

#

Scenario

Imports?

Result

1

All items assigned to Manifest (checked)

Yes

Full order imports and is ready to fulfill. No gap.

2

All items assigned to a non-Manifest location (unchecked)

No

The only case the flag blocks. The order is prevented from importing, so Manifest never sees it.

3

Split: some Manifest, some non-Manifest

Yes

Whole order imports to stay intact, which pulls in the non-Manifest items too. This is the gap automation rules close.

4

Reassigned non-Manifest → Manifest

Yes

The order had not imported. Once a Manifest item exists, it imports on that update.

5

Reassigned Manifest → non-Manifest

Already in

No Manifest items remain, so it should not ship. ShipHero auto-marks it fulfilled to clear it from the queue.

Why the whole order imports on a split (scenario 3). ShipHero brings the order in as one unit so the record stays accurate and nothing is silently dropped. The flag does not strip out the non-Manifest items, so they sit inside ShipHero even though Manifest should not ship them. That leftover is the gap, and Part 3 closes it.

Why timing matters (scenarios 4 and 5). The flag is re-checked whenever an order is created or updated in Shopify. That is what lets a later reassignment pull an order in (scenario 4) or push it out (scenario 5). This re-check also matters for a separate reason: automation rules (a different function, covered next) run only on import, so an order's makeup needs to be correct by the time it comes in.

 

Part 3: How Automation Rules Close the Gaps

Automation rules are a separate ShipHero function from the import flag. They do not control what imports; they act on orders once those orders are already in. One of their most useful jobs is cleaning up the split orders the flag lets in whole.

Recall scenario 3: because a split order imports in full, non-Manifest line items come along for the ride. Left alone, the warehouse could pick and ship items that belong to another location. Automation rules close that gap, and they act the moment the order imports.

Closing the split-order gap

When a split order imports, a rule watches for items assigned to a non-Manifest location and cancels just those items, leaving only what Manifest should fulfill. The trigger keys off the item's assigned Shopify location directly.

Live example: "Only Ship Orders at Manifest Shopify Location"

Setting

Trigger (if this happens)

Shopify Item Assigned to Location equals a non-Manifest location (e.g. 60944547972 - 1011 East 5th)

Action (then do this)

Cancel Items: cancels the items that triggered the rule

And

Set Fraud Hold: On

In plain terms: when an imported order has any item assigned to that non-Manifest location, ShipHero cancels just those items and sets a fraud hold on the order. The Manifest items stay on the order, and the hold flags it so nothing ships until the team reviews it.

Because the trigger matches one specific location, you build one rule per non-Manifest location you want to exclude.

Two ways to handle the gap

  1. Cancel the non-Manifest items (item-level). The example above. Manifest keeps its items, the rest are canceled automatically, and the order ships correctly without manual cleanup.

  2. Hold or cancel the whole order (order-level). Best when an order should not ship at all, or needs a person to review the entire order before anything moves.

The timing rule

Automation rules run once, on the order's initial import. By default they do not re-run when the order is edited later. This is exactly why the cancellation in the example works: the rule fires at import, before the warehouse acts, and trims the order down to what Manifest should ship. It is also why the Shopify assignment and the flag need to be correct before the order imports.

One exception worth knowing: a rule can be set to rerun on order tags import (a per-rule toggle, which the example rule has enabled). That lets the rule fire again when order tags are imported. Outside of that toggle, assume a rule runs only at initial import, so editing an order afterward will not re-trigger it.

Updating fulfillment locations does not re-trigger rules. Changing an order's fulfillment locations in Shopify, on its own, will not cause the automation rules to run again in ShipHero. So whenever you reassign locations on an order that has already imported, review that order directly in ShipHero afterward to confirm it landed in the right state. Do not assume the rules cleaned it up automatically.

 

Putting It Together

  1. A customer places an order in Shopify.

  2. Shopify assigns a fulfillment location using inventory, order routing rules, and shipping options.

  3. ShipHero reads the assigned location:

    • Flagged to fulfill → the order imports.

    • Flagged not to fulfill → ShipHero does not act on it.

  4. On import, automation rules fire once: assigning, tagging, holding, canceling, or adjusting as configured.

  5. The order lands in the queue, already routed and ready for the warehouse.

 

Setup

These settings are not configured by default. If you would like to restrict which orders Manifest fulfills, reach out to your Account Manager and they will help set up the Shopify and ShipHero configuration described in this guide.