Shopify POS can now take a local delivery order at the counter. A customer is standing in front of you, the item is heavy or they're on a bike or they just don't want to carry it, and instead of ringing it up as a sale and handing it over, your staff member picks delivery at checkout, enters the address, picks a date, charges the delivery rate and finishes the transaction. The order lands in admin with a local delivery shipping method attached to that store location, ready to be fulfilled by whoever is driving that afternoon. Setup happens once in Settings → Shipping and delivery → Local delivery, per location, and then it just shows up on the POS tender screen.
It arrived at the end of September, which is either good timing or uncomfortable timing depending on how your Black Friday and Boxing Day plans look. Canadian merchants have spent the last two peak seasons with one eye on Canada Post labour news. If you have a physical store, you already hold inventory within a few kilometres of a meaningful share of your customers. Local delivery is the cheapest insurance policy available against a carrier you don't control.
What the POS local delivery flow actually does
Three things, and it's worth being precise about them because merchants often expect a fourth.
- It lets a staff member convert an in-store sale into a delivery order without leaving POS or opening the admin on a laptop in the back.
- It applies the local delivery rate you configured for that location's zone, including conditional rules like free over a minimum order value.
- It creates a normal Shopify order, with a delivery address, assigned to the store's location, so inventory decrements from that store and the order appears in your fulfilment queue like any other.
What it does not do is dispatch anyone. Shopify will not find you a driver. Routing, proof of delivery and the actual van are your problem, and that's the part most merchants under-plan.
Creating a local delivery order in Shopify POS, step by step
Assuming local delivery is already switched on for the location:
- Ring the items into the cart as normal.
- Add the customer to the cart. This matters. Without a customer record there's no address to deliver to, and staff who skip this step end up re-keying everything.
- Choose the delivery option on the cart or at checkout, then select or enter the shipping address.
- POS checks the address against your zones. If it falls inside one, the rate appears. If it falls outside, you'll get nothing, and your staff member needs a scripted answer for that moment.
- Set the delivery date or window if you're offering them.
- Take payment. Shop Pay, tap, whatever your usual tender is.
The receipt and the confirmation email should both say "delivery" clearly, with the window. Test this before you turn it on. We've seen stores go live with a notification template that still reads like a pickup confirmation, and then spend Saturday fielding calls from people standing outside the shop.
One detail to rehearse with staff: the address autocomplete is only as good as what the customer tells you. Toronto apartment buildings need unit numbers and buzzer codes. Add a line to the delivery note field by default and train people to ask.
Local delivery zones and rates: a Toronto setup that holds up
You can define a zone two ways. A radius in kilometres from the store, or an explicit list of postal codes. Radius is faster to set up and worse in practice, because a 10 km circle drawn from a Queen West store crosses the Don Valley, the Gardiner and a lake. Distance on a map is not driving time.
Use forward sortation areas instead, the first three characters of the postal code. For a downtown Toronto store, a sane starting zone is M4, M5, M6 and the adjacent codes you can actually reach in under 30 minutes on a weekday afternoon. Add a second, wider zone later with a higher rate and a longer promised window if demand justifies it. Shopify lets you set a minimum order value per zone, which is the control that keeps you from driving a $22 order to Scarborough.
Now the arithmetic, because this is where local delivery quietly loses money. Plug in your own numbers, but run the shape of it:
Say you charge $9 under $100 and free above it. Your courier costs $14 per drop. Average delivery basket is $140, so most orders clear the free threshold. Over 50 delivery orders in a week, 30 go free and 20 pay. Courier cost is 50 × $14 = $700. Delivery revenue collected is 20 × $9 = $180. You're out $520, or $10.40 per order. Those 50 orders brought in $7,000. At 55% gross margin that's $3,850 of gross profit, and delivery just ate 13.5% of it.
That might be fine. It's a defensible cost if those are orders you would otherwise have lost, or if the alternative was a carrier that might not be moving parcels in December. It is not fine if you assumed delivery was roughly free because Shopify didn't charge you for the feature. Two fixes that work: raise the free threshold to $150, and batch. One courier doing six drops on a single Saturday afternoon route costs far less per parcel than six separate same-day bookings.
Who actually drives the parcel
Three models, and most stores end up with two of them running at once.
Staff driver. Cheapest per drop if you already have the hours and a vehicle. Works well for a scheduled run: everything ordered before 1pm goes out at 4pm, one loop, back before close. Falls apart the moment the store gets busy, because the person driving is the person who should be on the floor. Check your insurance before someone's own car becomes a delivery vehicle.
Per-job courier. Book a bike or car courier per order. Good for dense urban cores, expensive outside them, and the only option that genuinely supports same-day within a couple of hours. Rates vary enough by city and by time of day that you should run a week of real bookings before you set your customer-facing price.
Aggregator app. Several apps in the Shopify App Store connect local delivery orders to courier networks and hand you tracking and proof of delivery. Shopify publishes route-planning tooling of its own too. Worth it once you're past roughly ten deliveries a day and the whiteboard stops working.
Start with the staff run. It costs nothing to try, and after two weeks you'll know your real volume, your real zone and whether anybody wants this.
Local delivery vs local pickup: the difference that bites
Pickup moves the customer. Delivery moves the parcel. In Shopify they're separate features with separate settings, separate notification templates and separate statuses, and they behave differently in POS and on the storefront.
Local pickup is free to run, has no zone, and the order sits at the store until someone collects it. Local delivery has a zone, a rate, an address and a promised window, which means it carries a service commitment that pickup does not. The one that catches people out: pickup orders use a "ready for pickup" notification, delivery orders use the local delivery notifications, and if you've customised one template and not the other your delivery customers get radio silence between purchase and doorbell.
Offer both. They solve different problems for the same catalogue. Just don't assume turning on one configured the other.
A Canada Post alternative for local orders, with the honest caveat
Local delivery is not a replacement for a national carrier. It replaces the last 15 kilometres. If 35% of your online orders ship to addresses within your store's catchment, you've taken 35% of your parcel volume off the carrier network and made it immune to anything happening at the depot. The other 65% still needs Canada Post, Purolator, UPS, Canpar or a regional operator, and the time to have a second carrier account open with rates tested is before you need it, not during.
The practical configuration for a store with retail locations: local delivery as a checkout option for in-zone postal codes, a national carrier for everything else, and a pre-approved regional backup you can switch to in an afternoon. Merchants who built that in 2024 spent the disruption annoyed rather than paralysed.
Tax, Quebec and the Ottawa–Gatineau problem
Delivery charges are generally taxable in Canada, and Shopify calculates tax on shipping by destination. For almost all local delivery that's trivial, because the parcel stays in the province: an Ontario store delivering to an Ontario address collects 13% HST on the goods and the delivery fee alike. Confirm the treatment with your accountant once and then stop thinking about it.
The exception is any store near a provincial line. An Ottawa shop with a 15 km radius zone will capture Gatineau addresses, and now you're delivering into Quebec: GST plus QST, different rates, a registration question if you weren't already registered there, and Bill 96 obligations on the customer-facing side. French isn't a marketing preference in Quebec, it's law. Delivery confirmation emails, SMS updates and POS receipts going to Quebec customers need French. If you're not set up for that, exclude Quebec FSAs from the zone by listing postal codes explicitly instead of using a radius. That's the single strongest argument for postal-code zones over distance.
Boxing Day and the in-store overflow order
Boxing Week is where this feature earns its keep, more than Black Friday. The scenario repeats in every store: the customer wants the item, the last unit on the floor is the display model, the one in stock is at the other location, and there are eleven people in line behind them. Previously that's a lost sale or a promise someone writes on a sticky note. Now it's a delivery order rung through at the counter in forty seconds.
To make that work when the store is at capacity, decide three things in advance:
- A daily cap on delivery slots, and a staff instruction to stop offering delivery once it's hit. Over-promising on 26 December generates more damage than the sale was worth.
- A cut-off time. "Ordered before 2pm goes today, after that it's tomorrow." Put it on a card at the till so nobody improvises.
- Who's driving on the 26th and 27th. Book the courier before the holidays. Everyone else is booking them too.
Same-day is achievable in dense city zones with a courier on standby. Next-day is achievable almost anywhere and is what most customers actually want in late December. Promise next-day, deliver same-day where you can, and you'll be the store people remember.
What breaks
Multi-location is the big one. Zones are set per location, so two stores in the same city will have overlapping catchments and Shopify has to decide which location serves a given address. If your inventory and staffing differ between those stores, check the assignment behaviour against real orders before peak, not during it. We get this wrong on the first configuration pass often enough that it's now a standard item on our pre-launch checklist.
Other things to test deliberately: refunding an order and whether the delivery fee comes back with it; rural route addresses, which pass validation but aren't drivable in your window; and what happens when a customer in POS has a saved billing address in one city and wants delivery to another. Shop Pay adoption is high here, which helps, since saved addresses are usually accurate. Usually.
POS app updates and what to tell retail staff
People search for the new POS version's feature list expecting a neat summary. Read the release notes on the POS listing for the version your terminals are actually running, because features land on different hardware at different times and a Go terminal and an iPad are not always on the same build. The thing worth briefing your floor staff on is narrow:
- Delivery is now a tender-screen option, not a back-office workaround.
- Add the customer to the cart first, every time.
- If no rate appears, the address is out of zone. The script is: "That's outside our delivery area, but I can ship it to you, it'll arrive Thursday." Not an apology, an alternative.
- Delivery notes field is mandatory in practice, even if Shopify doesn't make it so.
Fifteen minutes of training beats a document nobody reads.
Start with a two-week pilot
One store. Three FSAs. One flat rate with a free threshold above your average basket. Saturday afternoon runs driven by staff. At the end of two weeks you'll have real cost per drop, real volume and a real answer on whether to buy dispatch software before Boxing Day.
If you'd rather have the zone logic, notification templates and multi-location assignment set up and tested by someone who's done it before December, our Canadian Shopify team handles exactly this, and a free store audit will tell you where your current delivery and fulfilment setup leaks before you add another channel to it.


