Why local options matter if you have a shop
If you run a store with a physical location, you have something the big online retailers can't easily match. You're close. A customer ten minutes away doesn't have to wait three days for a parcel or pay for postage on something they could pick up on the way home. Click and collect and local delivery turn that closeness into a reason to buy from you instead of a marketplace.
They also bring people through the door, and people who come in to collect an order often buy something else while they're there.
The catch is that both options look simple on the checkout page and are anything but simple behind it. Turning on a pickup setting takes minutes. Making sure the item is actually on the shelf, packed, and ready when the customer turns up takes a bit more thought. This piece covers what has to be right underneath, and where we see it go wrong.
Stock has to be accurate per location
Standard online stock is one number: how many of this thing do we have. As soon as you offer pickup from more than one place, or pickup from a shop that also sells over the counter, that number has to be split by location. The website needs to know there are two in Fitzroy and none in Brunswick, and it needs to know that before the customer chooses where to collect.
Most of the problems we're asked to fix with click and collect come back to this. The website says in stock, the customer pays, and a staff member goes to the shelf and finds nothing because the last one sold at the counter an hour ago. Now someone has to ring the customer, offer a refund or a transfer from another store, and apologise for something the website promised.
The fix is a reliable connection between your point of sale and your online store, so a sale in either place updates the same stock figure for that location. Shopify does this natively if you use its own POS. If you run a different POS, or you're on WooCommerce, it usually means an integration that syncs stock in both directions, and the quality of that integration matters a great deal. A sync that runs every few hours is fine for a store with deep stock. It isn't fine for a gift shop with one of everything.
It's also worth holding a small buffer on low-stock items. If the system shows one left, you can choose to hide it from pickup until a second arrives, because the odds of that last unit being damaged, mislabelled or already in someone's hand are higher than you'd think.
Pickup windows and the ready message
The second thing customers care about is knowing when they can come. "Available for pickup" is vague. "Ready in two hours" or "Ready tomorrow from 10am" is something they can plan around.
Be honest about how long it takes your team to pick and pack an order on a normal day, then add a margin. A customer who arrives on time to find the order still being put together has a worse experience than one who was told it would take a bit longer.
The most important part of the whole process is the message that says the order is ready. Don't send it when the order is placed. Send it when a staff member has physically put the order on the pickup shelf and marked it ready. That one rule prevents most wasted trips. The message should include the address, opening hours, where in the shop to go, and what to bring, usually the order number and some ID if the items are valuable or age-restricted.
Then think about the counter. Where do pickup orders live? How does a casual staff member on a Saturday find order number 4182 in a pile of bags? A labelled shelf, sorted by order number or surname, and a simple way to mark the order collected in the system, is enough for most shops.
Delivery zones by postcode
Local delivery usually means your own staff or a courier you've arranged dropping orders within a set area. The simplest way to define that area is a list of postcodes, and for most Melbourne shops it works well enough.
Postcodes are rough boundaries, though. Some cover a big area where one end is easy and the other is an hour across town in traffic. If that's your situation, you can split the list into zones with different fees or different delivery days, or switch to a distance-based radius if your platform or an app supports it.
Whatever you choose, the customer should find out whether they're eligible early. Ideally there's a postcode check on the product page or in the cart, before they've filled in their details, so nobody gets to the last step of checkout and discovers local delivery isn't available to them. We cover more of the checkout side in checkout UX fixes that move revenue.
Cut-off times and delivery pricing
Same-day delivery needs a cut-off, and the cut-off needs to be enforced by the website rather than remembered by staff. If orders placed after 1pm go out tomorrow, the checkout should say so plainly and the delivery date should change automatically. Account for weekends, public holidays, and days you're closed for stocktake.
Pricing is a business decision, but a few patterns work well. A flat local fee is easy to understand. Free local delivery above a basket value encourages bigger orders. Charging more for far zones is fair and most customers accept it. What tends not to work is a price that only appears at the very end, or a fee that feels arbitrary compared with what national postage costs.
Whatever you charge, cost it properly first: driver time, fuel or courier fees, packaging, and the orders where nobody is home. Local delivery that loses money on every order is a hard thing to take away once customers are used to it.
What goes wrong on busy days
Click and collect and local delivery work comfortably on a quiet Tuesday. The real test is the week before Christmas, a big sale, or a Saturday when two staff call in sick. These are the failures we see most:
- Overselling the last units because the POS sync couldn't keep up with counter sales and online orders at the same time.
- Pickup windows nobody can meet, because the promise was set for a normal day and doesn't change when the shop is flat out.
- Delivery slots with no limit, so forty orders land on a run that can physically handle fifteen.
- Ready messages sent too early, often by an automation that fires on payment rather than on packing.
- Lost orders at the counter, where bags pile up with no clear system for finding the right one.
- Customer service drowning in "where is my order" calls, because nobody gets an update when something changes.
Most of these are solved by limits and honest messaging. Cap delivery slots per day. Extend pickup times during peak periods, and say so on the site. Make the ready notification depend on a staff action. None of it is complicated, but it has to be designed in before the busy period rather than worked out during it.
Choosing the platform and setup
Shopify handles multi-location stock, local pickup and local delivery reasonably well out of the box, particularly if you use its POS in the shop. WooCommerce can do all of it too, but typically through a combination of plugins, and the result depends heavily on which ones you choose and how well they work with your POS. We compared the two more broadly in Shopify vs WooCommerce.
For more involved setups, such as delivery booked into specific time slots, routing for your own drivers, or stock coming from a warehouse system rather than the shop, you'll likely need an app or a custom integration. That's where it pays to map out the full process on paper first, from the moment someone adds to cart to the moment the bag leaves the counter, and only then pick the tools.
And remember national shipping still matters. Most stores offering local options also post orders interstate, and that side has its own details, from carrier integration to address validation. We went through those in building for the Australian market.
Where to start
If you have a shop and an online store and you haven't offered pickup yet, start with click and collect from one location, with accurate stock and a proper ready message. Get that running smoothly through a busy period before adding local delivery or more locations.
If you already offer both and they cause more phone calls than they should, the problem is almost always stock sync or messaging, and both are fixable without rebuilding the store.
We set up and fix this kind of thing as part of our Shopify development and WooCommerce work, including the POS side. If you'd like a straight opinion on how your pickup and delivery setup would hold up on your busiest day, get in touch.


