Skip to main content

Documentation

Everything you need to set up, migrate to, and build on BestWebby.

Inventory & Fulfilment

Buy Online, Pick Up In Store (BOPIS) & Multi-Location Stock

Track stock separately for each store and warehouse, let shoppers choose in-store pickup at checkout with no shipping charged, and fulfil pickup orders from the location that holds the stock.

Overview

BestWebby tracks stock per location — each store, warehouse, or pickup point holds its own count, and those counts roll up to your overall on-hand. On top of that, you can offer buy online, pick up in store (BOPIS): at checkout, a shopper chooses to collect their order at one of your stores instead of having it shipped. A pickup order is never charged shipping, doesn't need a delivery address, and draws its stock from the store the shopper picked — so the count at that location stays honest.

This page covers how to set up locations, turn on pickup, what the shopper sees at checkout, and how you fulfil a pickup order.

By the end you'll have:

  • One or more locations, each with its own stock counts
  • Pickup enabled on the locations that offer it
  • In-store pickup showing as an option at checkout
  • A clear path to mark pickup orders ready and hand them off

How multi-location stock works

Every location holds its own on-hand count for each product (and each variant). Your overall on-hand for a product is the sum of its location counts — so when a sale draws stock from one store, the overall number drops by the same amount. This keeps one number true across every channel: your storefront, your product feeds, and your in-store register all read the same on-hand.

If you run a single location (or haven't set up locations yet), nothing changes — stock is tracked as a single global count exactly as before. The per-location behaviour engages only once you have at least one active location holding stock.

Step 1: Add your locations

Go to Settings → Locations and click Add location. For each place you hold or sell stock, enter:

  • Name (for example, "Downtown Store" or "Main Warehouse")
  • Address (optional, but recommended for pickup points so shoppers know where to go)
  • Pickup — turn this on if shoppers can collect orders here

Your first location becomes the default automatically. The default is the location BestWebby prefers first when it needs to choose where to draw stock for a shipping order. You can change which location is the default at any time.

Mark a location inactive when it's temporarily closed or being wound down — inactive locations are never offered for pickup and are skipped when allocating stock.

Step 2: Distribute your stock across locations

Assign on-hand counts to each location so BestWebby knows where your inventory physically sits. Manage per-location counts from your inventory screens under Inventory → Locations.

Gotcha — undistributed stock: the per-location pickup and allocation path only engages for a product once its location counts fully account for its overall on-hand. If a product still has stock that hasn't been assigned to any location, BestWebby falls back to the plain overall-count decrement for that product — safe, but it means pickup allocation from a specific store won't kick in until that product's counts are distributed. Distributing your counts is what unlocks the per-location behaviour.

Step 3: Turn on pickup

Pickup is a per-location switch. Only locations that are active and have pickup turned on are offered to shoppers at checkout. Turn pickup on for your customer-facing stores, and leave it off for back-office warehouses that don't accept walk-in collection.

If no location has pickup enabled, the in-store pickup option is hidden from checkout entirely — shoppers simply see the normal shipping flow.

What the shopper sees at checkout

When at least one pickup-enabled location exists, checkout offers a choice between shipping and pick up in store:

  • Ship (the default) is the normal carrier flow: the shopper enters a delivery address, BestWebby quotes shipping rates, and they choose a method.
  • Pick up in store lets the shopper choose one of your pickup locations. No delivery address is required, and no shipping is charged — the shipping line is skipped entirely.

The pickup location list shows each store's name and address. Shoppers only ever see your own store's locations; there is no way for one store's locations to appear on another's checkout.

How a pickup order draws stock

When a shopper completes a pickup order, BestWebby draws each item's stock only from the location they chose to collect from. The order is tagged as a pickup order and assigned to that location.

If the chosen location doesn't hold enough of an item to cover the order, BestWebby falls back to the overall on-hand count rather than blocking the sale — so an order never fails purely because per-location counts are still being distributed.

Stock draw-downs are atomic and oversell-safe: if two orders race for the last unit at a location, one wins and the other is turned away — a location can never be pushed below zero. If a payment never completes (the shopper abandons at the card step, or the payment fails), the reserved stock is returned to the same location it was drawn from, so your counts self-correct.

Step 4: Fulfil a pickup order

When a pickup order comes in, pull and pack it, then mark it ready for pickup. Marking an order ready emails the customer a "your order is ready for pickup" notification — but only when there's an email address on file, so a notification is never faked. If the customer has no email on record, the order still advances to ready; you just handle the hand-off in person.

You can also assign an order to a specific location to fulfil it from there. When you do, BestWebby re-attributes the order's stock to the store that's actually fulfilling it, so the count that drops is the one at the store handing over the goods. If that store doesn't hold enough on-hand for an item, the assignment is refused rather than pushing its count negative.

Every fulfilment action — assigning a location, marking ready — is recorded in your audit log with the who, what, and when.

Tips

  • Enable pickup only where you mean it. Leave it off for warehouses and any location that can't accept walk-in collection.
  • Add addresses to pickup points. Shoppers see the address when choosing where to collect — a clear address cuts down on confusion and no-shows.
  • Distribute your counts first. Per-location pickup allocation depends on a product's location counts covering its overall on-hand. Until then it safely falls back to the overall count.
  • Watch the default location. For shipping orders across multiple locations, the default is drawn from first — set it to the store you'd rather ship from.

Gotchas

  • No pickup-enabled location = no pickup option. If shoppers aren't seeing "pick up in store," check that at least one location is both active and has pickup turned on.
  • Inactive locations disappear from checkout. Marking a location inactive immediately removes it as a pickup choice.
  • Pickup skips shipping and the address requirement. A pickup order needs contact details and a chosen location — not a full delivery address. That's by design.
  • A stale pickup selection is caught server-side. If a location is switched off or set to not support pickup between when the shopper loaded checkout and when they pay, the order is rejected with a clear "please choose another" message.

What's next

  • Set per-location counts under Inventory → Locations
  • Review a pickup order's location and status on its order detail page
  • See the Getting Started guide if you're still setting up your catalog and payments
Still stuck? Contact support — real engineers, typically within one business day.