Free Ebook cover Shopify Store Operations: Orders, Shipping, and Returns

Shopify Store Operations: Orders, Shipping, and Returns

New course

10 pages

Fulfillment Options in Shopify: In-House, Third-Party, and Local Delivery

Capítulo 2

Estimated reading time: 10 minutes

+ Exercise

Fulfillment models and how they map to Shopify

In Shopify, a “fulfillment model” is the operational choice of who stores inventory, who packs orders, and who buys/prints shipping labels. Shopify represents these choices through locations, inventory assignment, shipping and delivery methods, and (when applicable) fulfillment services/apps that can request and confirm fulfillment.

ModelWhere inventory livesWho fulfillsHow Shopify is configured
Merchant-managed (in-house)Your warehouse/storeYour teamLocations + inventory at locations + shipping profiles/rates; optional label app
3PL (third-party logistics)3PL warehouse(s)3PLAdd 3PL location(s); connect via fulfillment service/app or integration; inventory synced to 3PL location
DropshippingSupplier(s)SupplierSupplier locations (often via app); products mapped to supplier; inventory may be “infinite” or synced
Local delivery / pickupYour local storeYour team or courierLocal delivery + pickup settings tied to a location; delivery areas; pickup instructions

Decision criteria: choosing the right model

Order volume

  • Low to moderate volume: in-house is often simplest and cheapest if you already have space and staff.
  • Growing volume: 3PL reduces labor and can improve shipping speed via distributed warehouses.
  • Highly variable volume (seasonal spikes): 3PL can absorb peaks; dropshipping can avoid capacity constraints but may reduce control.

SKU complexity

  • Simple catalog (few SKUs, low pick complexity): in-house or dropshipping can work well.
  • Complex catalog (variants, bundles, kitting, lot/expiry): 3PL is often better if they support kitting and inventory rules; in-house works if you have strong processes.
  • Multi-location inventory: 3PL or hybrid (store + 3PL) requires careful location priority and split-fulfillment planning.

Margins and cost structure

  • High margins: you can afford 3PL pick/pack fees for speed and scalability.
  • Thin margins: in-house may be cheaper if labor is efficient; dropshipping can be expensive per unit due to supplier pricing and shipping costs.
  • Shipping cost strategy: if you offer free shipping, ensure fulfillment costs (postage + pick/pack) fit your margin model.

Speed requirements and customer promise

  • Same-day/next-day: local delivery/pickup or a nearby 3PL location is usually required.
  • 2–5 day standard: in-house or 3PL can both meet this depending on carrier pickup and warehouse cutoffs.
  • International: 3PL networks or region-specific fulfillment can reduce delivery times and customs friction.

Hands-on setup in Shopify: locations, inventory, and default behavior

Step 1: Configure fulfillment locations

Locations represent physical places where inventory is stocked and from which orders can be fulfilled (warehouse, retail store, 3PL warehouse). Set these up first so inventory and delivery methods can be tied to the correct place.

  1. Create locations: In Shopify admin, go to Settings > Locations and add each place you will fulfill from (e.g., “Main Warehouse”, “Downtown Store”, “3PL East”).

  2. Set address and contact details: Use accurate addresses; carriers and local delivery zones depend on them.

  3. Activate fulfillment capability: Ensure each location is enabled to fulfill online orders (some setups allow a location to be “inventory only”).

    Continue in our app.

    You can listen to the audiobook with the screen off, receive a free certificate for this course, and also have access to 5,000 other free online courses.

    Or continue reading below...
    Download App

    Download the app

Step 2: Assign inventory to locations

Inventory assignment determines what Shopify believes is available at each location, which affects order routing and whether Shopify can prevent oversells.

  1. Enable inventory tracking per product: For each product/variant, confirm inventory is tracked (unless you intentionally allow selling without tracking).

  2. Set quantities by location: In the product variant inventory section, allocate stock to the correct location(s). Example: 50 units at “Main Warehouse”, 10 units at “Downtown Store”.

  3. Decide if you will allow backorders: If you enable “continue selling when out of stock,” you are allowing backorders/oversells by design. If you disable it, Shopify will block purchases when inventory reaches zero (per location availability rules).

Step 3: Set default fulfillment behavior (routing and splits)

Default behavior is how Shopify chooses a location when multiple locations have inventory, and whether it splits items across locations.

  • Location priority: Set a preferred order of locations so Shopify attempts to fulfill from the best location first (often the one with lowest cost or fastest shipping).
  • Split fulfillment policy: Decide whether you will allow orders to split across locations. Splits can improve ship speed but increase shipping cost and customer complexity (multiple packages, multiple tracking numbers).
  • Shipping rates and profiles: Ensure shipping profiles/rates align with where inventory ships from. If you use different carriers or packaging rules per location, document them and test with multiple destination addresses.

Practical example (hybrid): You stock bestsellers at the store for local pickup and keep full catalog at the warehouse. Set location priority to fulfill shipped orders from the warehouse, but keep pickup tied to the store location so pickup orders reserve store inventory.

Process maps: who does what in each model

Merchant-managed (in-house) fulfillment process map

StepOwnerActionShopify touchpoint
PickYour teamPick items from your shelvesOrder shows assigned location
PackYour teamPack items, add inserts, verify SKU/qtyOptional packing slip print
LabelYour teamBuy/print label (Shopify Shipping or carrier tool)Label purchase/print workflow
HandoverYour team/carrierCarrier pickup or drop-offCarrier manifest (if used)
Tracking updateYour team/systemAdd tracking to orderMark as fulfilled + tracking
Customer notificationShopifySend shipping confirmationNotification templates

3PL fulfillment process map

StepOwnerActionShopify touchpoint
Order transmissionShopify/integrationSend order to 3PL systemFulfillment service/app request
Pick & pack3PLWarehouse picks and packsStatus updates via integration
Label3PL3PL buys/prints label per your rulesCarrier + service level mapped in 3PL
Ship3PL/carrierCarrier collects from 3PLShipment event in 3PL
Tracking update3PL/integrationPush tracking back to ShopifyFulfillment confirmation + tracking
Customer notificationShopifySend shipping confirmationTriggered when fulfillment is confirmed

Operational note: Define who is responsible for exceptions (address issues, carrier claims, reships). Even if the 3PL executes, you typically own customer communication.

Dropshipping process map

StepOwnerActionShopify touchpoint
Order routingApp/merchantSend order to supplier (manual or automated)Supplier app or email workflow
Pick & packSupplierSupplier packs item(s)Limited visibility unless integrated
LabelSupplierSupplier prints labelCarrier choice may be constrained
Tracking updateSupplier/app/merchantTracking returned to Shopify (or added manually)Fulfillment confirmation + tracking
Customer notificationShopifySend shipping confirmationTriggered when tracking is added

Control point: Ensure supplier SLAs (handling time, packaging, branding, returns address) match your storefront promises.

Local delivery and pickup process map

StepOwnerActionShopify touchpoint
Order placedCustomerSelect local delivery or pickupDelivery method at checkout
Prepare orderYour teamPick and pack for delivery/pickupAssigned to store location
HandoffYour team/courier/customerDeliver locally or stage for pickupLocal delivery workflow / pickup status
Status updateYour teamMark delivered or ready for pickupFulfillment status + pickup notifications
Customer notificationShopifySend “ready for pickup” or delivery updatesNotification templates

Hands-on setup: local delivery and pickup

Configure local pickup

  1. Go to Settings > Shipping and delivery.

  2. Under Local pickup, select the store location and enable pickup.

  3. Add pickup instructions (where to go, what ID to bring, pickup hours).

  4. Test checkout to confirm pickup appears only for customers eligible for that location (based on your setup).

Configure local delivery

  1. In Settings > Shipping and delivery, enable Local delivery for the chosen location.

  2. Define delivery area (postal codes or radius) and delivery fee (free, flat, or conditional).

  3. Set delivery expectations (same-day cutoff time, delivery windows).

  4. Decide how you will capture delivery notes (e.g., “gate code”, “leave at door”) and ensure your checkout supports it via order notes or custom fields.

Go-live readiness checklist (all models)

  • Locations: All fulfillment locations created with correct addresses and fulfillment enabled.
  • Inventory accuracy: Inventory quantities assigned to the correct location(s); spot-check top SKUs.
  • Routing rules: Location priority set; split-fulfillment decision documented and tested.
  • Shipping methods: Shipping rates reflect real costs and service levels; local delivery/pickup visible only when intended.
  • Label workflow: Confirm who prints labels (you vs 3PL vs supplier) and that label format/service levels match your promises.
  • Notifications: Shipping confirmation, pickup ready, and delivery updates enabled; templates reviewed for accuracy (sender address, support contact, expected timelines).
  • Returns address: Ensure the correct return address is communicated (warehouse vs 3PL vs supplier) and aligns with your policy.

Test order procedure (recommended)

  1. Place a real end-to-end test order (use a low-cost product or a test payment method if available).

  2. Verify location assignment: Confirm the order is assigned to the intended location based on inventory and routing.

  3. Run the fulfillment action: In-house: create label and mark fulfilled. 3PL/dropship: ensure the order is transmitted to the partner system.

  4. Tracking update verification: Confirm tracking appears on the order and in the customer-facing tracking link.

  5. Customer notification checks: Confirm the correct email/SMS is sent, with correct carrier/tracking and support info.

  6. Edge test: Place a cart with items stocked at different locations to confirm split behavior matches your policy.

Exception handling: backorders, oversells, and substitutions

Backorders (selling items not currently in stock)

Backorders can be intentional (preorders/backorder policy) or accidental (inventory mismatch). The key is to control the promise and communicate early.

  • Recommended setup: If you accept backorders, explicitly enable “continue selling when out of stock” only for the SKUs you intend to backorder, and add clear lead times on product pages and in order confirmation messaging.
  • Operational workflow: Tag orders as “Backorder” and separate them from ready-to-ship orders so they don’t get mixed into daily pick lists.
  • Customer communication timing: Notify within 4 business hours (or same day) after the order is placed if the expected ship date differs from what the customer likely assumed at checkout.

Oversells (inventory says available but isn’t)

Oversells usually come from delayed inventory sync (3PL/dropship), multi-channel sales, or miscounts. Treat oversells as a service recovery event.

  • Immediate actions: Freeze the SKU (temporarily stop selling), reconcile inventory at the source location, and identify how many orders are impacted.
  • Resolution options: Offer (a) wait for restock with a firm date, (b) substitute with an equal-or-better item, or (c) partial shipment + refund for missing items.
  • Customer communication timing: Notify as soon as confirmed, ideally within 2–6 hours of discovery, and before any shipping confirmation is sent for that line item.

Out-of-stock substitutions

Substitutions can protect revenue and reduce cancellations, but only if handled transparently and with consent.

  • Policy decision: Decide whether substitutions require explicit customer approval. For most brands, approval is recommended unless you sell standardized commodities where substitutions are expected.
  • Shopify handling: If substituting a different SKU, ensure the order reflects what is actually shipped (for accurate support, returns, and analytics). Avoid “shipping the substitute but leaving the original SKU on the order.”
  • Customer communication timing: Request approval before fulfillment. If time-sensitive (e.g., local delivery), contact immediately and set a response deadline (e.g., “Reply within 60 minutes for same-day delivery”).

Practical communication templates (timing-focused)

ScenarioWhen to messageWhat to include
Backorder identifiedSame day / within 4 business hoursNew ship date, option to cancel, support contact
Oversell confirmedWithin 2–6 hours of discoveryApology, options (wait/substitute/refund), expected resolution time
Substitution neededBefore label purchase / before marking fulfilledPhoto/description of substitute, price/value assurance, approval request

Exception prevention controls to implement

  • Inventory sync cadence: Ensure 3PL/supplier inventory updates are frequent enough for your sales velocity.
  • Safety stock: Keep a buffer (e.g., 2–10 units) for fast-moving SKUs to reduce oversells during sync delays.
  • Location discipline: Avoid stocking the same SKU at multiple locations unless you have clear routing rules and cycle counts.
  • Cycle counting: Count top sellers weekly (or more) and long-tail SKUs monthly/quarterly.
  • Split shipment policy: Decide upfront whether you ship partials or hold until complete; align this with customer messaging and support scripts.

Now answer the exercise about the content:

When a Shopify store has inventory available at multiple locations, what is the main trade-off of allowing split fulfillment?

You are right! Congratulations, now go to the next page

You missed! Try again.

Split fulfillment can speed delivery by shipping from different locations, but it often raises costs and adds complexity (multiple packages and tracking numbers).

Next chapter

Shipping Profiles and Rates: Building Reliable Shipping Rules in Shopify

Arrow Right Icon
Download the app to earn free Certification and listen to the courses in the background, even with the screen off.