How to set different Shopify shipping rates by warehouse origin
Updated · SMART Shipping Rates (E-TRADE PARTNER)
You can set different Shopify shipping rates by warehouse origin by matching the fulfillment location Shopify sends on the carrier-service request. SMART Shipping Rates & Rules uses Origin country, Origin postal code, Origin address line 1, and Origin address line 2 for the shipping FROM address. Destination shipping zones still handle the customer address. Calculated origin rates need Shopify Carrier Service.
4.9 · SMART Shipping Rates does this with zones, calculated rates, and delivery customizations.
Try it freeOn this page
- Why origin rates matter
- What origin conditions actually read
- What Shopify can and cannot do natively
- The split-cart limit (read this before you build)
- Setup steps in SMART Shipping Rates & Rules
- Worked example: US East vs US West warehouses
- Tips for multi-warehouse rates
- How origin and destination should stay separate
- Frequently asked questions
Multi-warehouse stores have two addresses on every rate request: where the order is going, and where it is packing. A New Jersey warehouse can reach New York cheaply. The same cart fulfilled from Nevada should not inherit that East Coast price. Native destination zones only see the customer.
Origin conditions are for that packing location. They do not replace destination targeting. Use both: a zone for the customer, then an origin condition so each warehouse prices its own request.
Why origin rates matter
- They recover outbound cost when two warehouses serve the same destination at different cost.
- They keep East Coast rates from applying to West Coast fulfillment, and the reverse.
- They make the packing location visible in the rule, instead of burying it in a destination-only table.
- They work with destination zones, so customer geography and warehouse geography stay separate.
What origin conditions actually read
Origin fields come from the origin object on Shopify's carrier-service request: the shipping FROM address of the location Shopify selected for that group of line items. They are not customer address fields.
| Condition | Matches | Typical use |
|---|---|---|
| Origin country | Location country (ISO code such as US) | US warehouse vs CA warehouse |
| Origin postal code | Location postcode or ZIP | East ZIP vs West ZIP |
| Origin address line 1 | Location address line 1 | A named 3PL street |
| Origin address line 2 | Location address line 2 | Unit, suite, or building suffix |
Keep destination matching on the zone (country, city, postal code). Origin decides which warehouse's price table applies to that request. See Shipping rates and zones.
What Shopify can and cannot do natively
Shopify locations and delivery profiles attach products to packing sites. That helps inventory routing. Native shipping settings still price mainly by destination. They do not give you a checkout table that says "if this warehouse packed it, charge this".
| Need | Native Shopify | SMART Shipping rates |
|---|---|---|
| Different rates by customer country or region | Yes, shipping zones | Yes, destination zones |
| Different standard rates by packing warehouse | Limited | Yes, origin country, postal code, or address |
| Same customer ZIP, two warehouses, two prices | Hard to maintain | Yes |
| Stop Shopify summing split multi-location carts | No | No. SMART cannot see the whole cart when Shopify splits the request |
The split-cart limit (read this before you build)
When a cart splits across fulfillment locations or delivery profiles, Shopify sends one Carrier Service request per group. Each request contains only that group's line items. Shopify often sums the rates it gets back. SMART cannot see the whole cart in that case, and it cannot silently un-double shipping. There is no wizard in the app that stops Shopify from summing those groups.
Practical mitigation: keep products that should share one rate in one delivery profile and one location group when that is operationally honest. Use origin conditions when different warehouses should price differently for their own request. Review grouping in Delivery profiles. If summing is correct (two real shipments), leave the split in place.
Setup steps in SMART Shipping Rates & Rules
- In Shopify admin, confirm each packing site is a location with a complete address (country, postal code, and street as you want to match them).
- Open SMART Shipping Rates & Rules, then Shipping rates. Confirm Carrier Service is available. Zone creation is disabled when it is not.
- Create one calculated rate per warehouse you need to price, inside the destination zone the customer should see.
- Add Origin country, Origin postal code, Origin address line 1, or Origin address line 2 so the rate only matches that warehouse's FROM address.
- Leave customer targeting on the zone. Do not put the warehouse ZIP in destination postal codes.
- Open Checkout simulator, set Ship from location to that warehouse, and run the same destination cart from each origin. Then place one real checkout Shopify would fulfill from that location.
- If a live price looks wrong, open Activity log (entries are kept up to 48 hours) and check which origin Shopify sent.
Common mistake: treating origin postal code as the customer ZIP
Origin postal code is the warehouse. Destination postal code is the customer. If both warehouses can serve the same customer ZIP, you need origin conditions. A destination-only zone will show the same rate no matter which location packed the order.
Worked example: US East vs US West warehouses
A US brand packs from a New Jersey warehouse and a Nevada warehouse. Both sell nationwide. Standard ground to the East should be cheaper when New Jersey packs. Standard ground to the West should be cheaper when Nevada packs. Overnight can stay one national table.
| Rate | Origin condition | Destination zone | Standard price |
|---|---|---|---|
| East standard | Origin postal code is the NJ location ZIP (or Origin address line 1 is that street) | US East postcodes | $8 |
| West standard | Origin postal code is the NV location ZIP (or Origin address line 1 is that street) | US West postcodes | $8 |
| Cross-country standard | The other warehouse origin | The far coast | $14 |
| Overnight | No origin filter | All US | $24 |
- Create the East standard calculated rate in Shipping rates with destination targeting for East postcodes.
- Add Origin postal code (or Origin address line 1) for the New Jersey location.
- Repeat for the West warehouse with the Nevada origin and West destination group.
- Create the cross-country rates the same way: far destination plus the origin that is actually packing.
- In Checkout simulator, set Ship from location to New Jersey, then to Nevada, and confirm the $8 vs $14 split for the same customer ZIP.
If two origin rates could match the same request, review Settings → Multiple rates, or tag the components and blend them in Combined rates. Blending only works inside one Carrier Service request. It does not merge Shopify's summed split-cart total. See rate blending.
Tips for multi-warehouse rates
- Copy the location address from Shopify settings. A missing unit on Origin address line 2 is a common miss.
- Name internal rates after the warehouse your ops team uses, then set a simple customer-facing method name.
- Test a cart Shopify would actually assign to that location. Inventory routing still decides origin.
- Use Delivery profiles to keep products that should share one rate in one profile and location group when that is honest.
- Pair origin rules with destination zones instead of duplicating every customer ZIP on the origin condition.
- Confirm calculated prices in the Checkout simulator before a live checkout.
Price each warehouse from the address it actually ships from
SMART Shipping Rates & Rules is rated 4.9 stars across 300+ Shopify App Store reviews.
Try the app free4.9 stars · 300+ reviews
How origin and destination should stay separate
A destination zone answers where the order is going. An origin condition answers which warehouse packed this request. Start with the destination zone, then add the smallest origin condition that uniquely identifies the location. If two warehouses share a postal code, use Origin address line 1 or Origin address line 2 instead of forcing a ZIP match that both would pass.
Frequently asked questions
›Can Shopify charge different shipping rates by warehouse origin?
Native zones are destination-based. SMART Shipping Rates & Rules can add Origin country, Origin postal code, Origin address line 1, and Origin address line 2 so a calculated rate only matches the fulfillment location Shopify sends on the carrier-service request.
›Is origin the customer address or the warehouse address?
Origin is the shipping FROM address: the fulfillment location on that Carrier Service request. Destination zones still handle the customer address.
›Do origin-based warehouse rates need Carrier Service?
Yes. They are calculated Shipping rates. Hiding an existing method with Delivery customizations does not need Carrier Service and does not use these origin conditions.
›Why did checkout double shipping on a multi-warehouse cart?
When a cart splits across locations or delivery profiles, Shopify sends one Carrier Service request per group and often sums the rates. SMART cannot see the whole cart then, and it cannot silently un-double that total. Keep products that should share one rate in one delivery profile and location group when that is operationally honest.
›Can I match both warehouse origin and customer postcode?
Yes. Put destination matching on the zone, then add an origin condition on the rate. That is the usual East vs West warehouse pattern.