Shopify supports three fulfillment types: shipping (carrier to address), local pickup (customer to store), and local delivery (your van to customer). Every order at checkout resolves to exactly one of these — and the mismatch between catalogs and the one-method-per-order rule is where most checkout errors come from. This guide explains each type, what it costs, and when to combine them.
Most merchants pick fulfillment types by gut: “we have a store, so let’s turn on pickup.” That gets you started, but it leaves money on the table — and worse, it creates customer-experience traps when one product needs one method and another needs a different one. The honest framing below should help you decide what to enable, what to skip, and what to plan for if you turn on more than one.
What are Shopify’s fulfillment types?
A fulfillment type is how an order physically gets from your inventory to the customer. Shopify recognizes three:
- Shipping — a parcel carrier (UPS, USPS, DHL, a 3PL) picks the order from your warehouse or store and delivers it to the customer’s address.
- Local pickup — the customer chooses one of your locations at checkout and collects the order there in person. The store staff stages the order, sends a “ready” email, and hands it over.
- Local delivery — your own staff or a contracted driver delivers the order to the customer’s address within a service radius you define per location. No carrier involvement.
At the order level, these are mutually exclusive. The customer makes one choice at checkout, that choice applies to every line item, and the order routes through one path from there. This is the model that makes Shopify simple to operate — and also the model that creates the mixed-cart error every merchant with pickup-only SKUs eventually hits.
For the architectural reason this constraint exists, see Shopify Fulfillment Method Conflict Explained.
Type 1: Shipping — the default
Shipping is what every Shopify store starts with. The customer enters an address, picks from rate options Shopify calculates against carrier APIs (or against your manual rate cards), pays, and waits.
What’s involved on your side: weight on every product, dimensions if you use dimensional weight, a shipping origin (usually a warehouse or your largest store), shipping zones for which countries and regions you serve, and rate logic — flat rate, free over X, calculated carrier rates, or some combination.
Where it works well: parcels under 70 lbs, customers anywhere your zones reach, products with low damage risk. Most apparel, electronics, beauty, supplements, and small home goods live here cleanly.
Where it falls apart: anything large, fragile, perishable, or regulated. A 200-lb sofa or a flat of plants doesn’t ship economically. A case of wine has carrier and state-level restrictions. A wedding cake doesn’t survive a UPS truck. For these categories, shipping isn’t an option — which is why local pickup and local delivery exist.
Cost model: carrier rates plus any fulfillment labor, plus packaging, plus claims for damaged or lost parcels. Carrier costs have risen consistently since 2022; the NRF tracks shipping cost as a top-five merchant concern every year. For a baseline picture, Shopify’s own help docs on shipping cover the platform-side setup in detail.
Type 2: Local pickup — the conversion lever
Local pickup turns each of your physical locations into a fulfillment node. The customer adds items to cart, picks “Pick up” at checkout, selects which store to collect from, and gets a notification when the order is ready. Staff hands it over in person.
What’s involved on your side: at least one active location with a physical address, pickup enabled on that location under Settings → Locations, and a staff process for picking, staging, and handing over orders. That’s it on the native side — there’s no app required to flip the switch.
Where it works well: stores with reasonable foot traffic and trained staff, customers who live or work near a store, categories where the customer either can’t wait for shipping or doesn’t want to pay for it. It also works disproportionately well for high-AOV items where customers want to inspect the item before taking it home — wedding gowns, electronics, instruments.
Where it falls apart: when the location toggle says “yes, we offer pickup” but operationally the store can’t honor it — staff isn’t trained, inventory isn’t accurate, hand-off process doesn’t exist. The customer drives over, the item isn’t ready (or isn’t there at all), and you’ve created a worse experience than shipping would have.
Conversion impact: BOPIS orders convert 25–40% higher than shipping for stores with physical locations, per Statista’s 2024 retail study. The reason is structural — no shipping fee, no shipping wait, plus the option to inspect on pickup. The conversion lift is real, which is why almost every multi-location Shopify store eventually enables it.
Cost model: store labor for picking and staging (15–30 minutes per order for non-trivial catalogs), plus the opportunity cost of staff time not spent on in-store shoppers. No carrier costs. For most stores, the math works out positive — pickup is cheaper than shipping per order — but only if you have the staffing slack to absorb the work.
For the full walkthrough, see How to Set Up BOPIS on Shopify.
Type 3: Local delivery — the operational tax
Local delivery is the opposite of pickup: you bring the order to the customer. The customer enters an address within a radius you define around each location, picks “Local delivery” at checkout, and your driver (your staff, a contractor, or a service like DoorDash Drive) delivers it.
What’s involved on your side: per-location delivery zones (a radius or a polygon), per-zone fees and minimums, a driver workflow (in-house staff, contracted, or third party), and route planning if you do more than a handful of deliveries a day. This is significantly more involved than pickup setup.
Where it works well: grocery, florists, restaurants, bakeries, breweries with growler service, high-AOV furniture where white-glove matters, prepared meals. The common thread: the product is either fragile, perishable, or large enough that carrier shipping doesn’t work, and the customer expects same-day or next-day fulfillment.
Where it falls apart: low order density. If you’re delivering one order per neighborhood per day, the labor cost crushes the unit economics. Most stores hit this wall after the first month — they assumed delivery would feel premium and bring in new customers, but the per-order cost is 3–4× pickup with no proportional conversion lift.
Cost model: driver wages (or third-party per-delivery fees), vehicle costs (fuel, insurance, maintenance), routing software if volume justifies it, packaging that survives the delivery (insulated bags for cold items, sturdy boxes for fragile). Easily $8–$25 per delivery loaded, vs $5–$10 for shipping and $2–$5 for pickup. Pass these costs to the customer or absorb them at your peril.
The Shopify Help Center on local delivery covers the platform setup. The operations side — drivers, routes, hand-offs — is almost entirely on you.
Side-by-side: which type does what
| Dimension | Shipping | Local pickup | Local delivery |
|---|---|---|---|
| Who moves the order | Carrier | Customer | You |
| Customer wait | 2–7 days typical | Same day or next day | Same day typical |
| Cost to you per order | $5–$10 | $2–$5 (labor only) | $8–$25 |
| Cost to customer | Carrier rate or free | Usually free | Delivery fee or threshold-free |
| Conversion vs shipping | Baseline | +25–40% (stores with locations) | Mixed; depends on AOV |
| Best categories | Apparel, electronics, beauty, small home | All categories with foot traffic | Grocery, florists, furniture, prepared food |
| Native Shopify support | Full | Full | Full |
| Common failure mode | Shipping cost shock | Mixed-cart checkout error | Driver economics |
| Setup time | Hours | 30 minutes | Days to weeks |
The table makes the trade-offs concrete: shipping is the universal baseline, pickup is the highest-leverage add, delivery is the most operationally expensive and the most category-dependent. Almost every store should run shipping. Most multi-location stores should add pickup. Local delivery is a deliberate choice you should only make if your category and order density support it.
What goes wrong when you combine types
The single-fulfillment-method-per-order rule is what creates the mixed-cart problem. Once you have items that can only be fulfilled one way, customers combine the incompatible — a pickup-only item next to a ship-only one, with no method covering both — and the platform stops them at checkout. 15–25% abandon outright rather than untangle the conflict manually. Less common but real: shipping + local delivery, or pickup + local delivery — a customer who wants the wedding cake delivered to the venue but is collecting the cupcakes in person. In every case, the resolution is to split the cart into two coordinated native checkouts, one per fulfillment type — see Shopify Mixed Cart Split Pickup Shipping for the full pattern.
How to decide which types to enable
There’s a simple decision flow. Walk it once when you set up your store, and revisit when you open a new location or add a new product category.
Step 1: Does every product in your catalog ship economically? If yes, ship-only is fine and you’re done. If no, you need at least one alternative for the unshippable items.
Step 2: Do you have at least one physical location with foot traffic and trained staff? If yes, enable local pickup. The conversion lift pays for the staffing cost within a few months for most stores. If no, you can’t honor pickup safely — don’t enable it.
Step 3: Do your unshippable items have time-sensitive delivery expectations (perishable, urgent, oversize)? If yes and you have the order density to justify driver costs, evaluate local delivery. If yes but you don’t have density, see if a third-party local courier (DoorDash Drive, Uber Direct) can handle it on a per-order basis without committing to an in-house operation.
Step 4: Are customers actually combining items that need different methods? If yes — and you’ll know this from the support inbox and the checkout drop-off pattern — you need cart-splitting infrastructure, not just a third fulfillment type. Adding local delivery on top of an unsolved mixed-cart problem makes the problem worse, not better.
For most stores the answer is shipping + local pickup, with a cart-splitting layer to handle the mix. Local delivery comes later, if at all, and only when the category demands it.
What you should expect from your fulfillment stack in 2026
The platform-level capabilities are stable — all three types natively supported, location toggles and carrier APIs reliable. The gap is at the combination layer: native Shopify won’t split a mixed cart, enforce per-location capacity, hide shipping for pickup-only carts, or re-check stock at order time. Each gap is solvable, but solving them is what an app like BopiSafe exists to do. The native flow gets you started; the app keeps you from generating refund queues as you scale.
The deeper difference is who sets the menu. Natively, the shopper makes one delivery decision and it applies to the whole order. With BopiSafe, the merchant sets the available method set per product or collection — any combination of the three (pickup, local delivery, shipping), seven combinations in all — and the shopper orders from that menu. It is never a pick-one “mode” the shopper toggles for the whole cart; each item carries its own allowed methods, and the cart is grouped accordingly.
For a deeper look at where native ends and apps begin, see Why Shopify’s Default BOPIS Fails Past 50 Pickup Orders and Do You Need a Pickup App for Shopify?.
Written by the BopiSafe team — we build BOPIS infrastructure for Shopify merchants.
Next steps
- See the architectural reason behind the one-method-per-order rule: Shopify Fulfillment Method Conflict Explained
- Walk through the full BOPIS setup if you’re adding local pickup: How to Set Up BOPIS on Shopify
- Understand what happens when a customer combines types in one cart: Shopify Mixed Cart Split Pickup Shipping
- Install BopiSafe to handle mixed-fulfillment carts automatically