Magento 2 Store Pickup: Click and Collect (BOPIS) Guide

A complete guide to Magento 2 store pickup and click and collect. Covers store finder, real-time inventory, time slots, fulfillment workflow, and BOPIS setup.

Magento 2 Store Pickup: Click and Collect (BOPIS) Guide

Customers Now Expect to Buy Online and Pick Up In Store

Buy Online, Pick Up In Store, or BOPIS, has shifted from a nice-to-have to a baseline expectation. Surveys of online shoppers consistently find that a large majority have used some form of click and collect in the past year, and that a meaningful share prefer it to home delivery when the option is available. The reasons are straightforward: pickup is usually free, it is often faster than waiting for a delivery slot, there is no risk of a package being left on a porch, and the customer controls exactly when they collect.

For the merchant, BOPIS is even more attractive than it is for the customer. A pickup order ships to the store, not to a doorstep, so the last-mile delivery cost disappears. Foot traffic driven by collection tends to produce incremental in-store purchases, with industry studies regularly finding that BOPIS customers spend more than the order value when they come in to collect. And pickup converts inventory sitting in physical locations into a competitive advantage against pure-play online retailers who cannot offer same-day collection at all.

Native Magento 2 does not ship with a BOPIS experience. It has Magento Inventory (MSI), the multi-source inventory system that lets you track stock per source, which is the necessary foundation. But there is no store finder, no map, no checkout option to select a pickup location, no time-slot picker, and no fulfillment workflow to move a pickup order from placed to ready to collected. Stores that want BOPIS on Magento 2 have to build it, and building it well means solving real logistics problems: real-time inventory accuracy, time-slot capacity, lead-time gating, and a clean handoff between the online order and the in-store staff who fulfill it.

A proper store-pickup module sits on top of MSI and adds the customer-facing and operational layer. Customers find a nearby store that actually has the item, choose a pickup slot at checkout, and collect locally. Staff work a fulfillment grid. This guide walks through how to set it up so the experience matches what customers now expect.

What Is Magento 2 Store Pickup (and Why Your Store Needs It)

Store pickup, also called click and collect or BOPIS, lets a customer place an order online and collect it at a physical location rather than having it shipped to their address. The customer experience has three pieces: a store finder that shows which locations are nearby and which actually have the item in stock, a checkout option to select the pickup location and a collection time slot, and a set of notifications that tell the customer when the order is ready and remind them to collect.

The operational experience has two pieces: real-time inventory accuracy, so the store finder never promises stock that does not exist, and a fulfillment workflow that moves the order from placed to ready-for-pickup to collected. The handoff between the online order and the in-store staff is where most homegrown BOPIS implementations break down. An order marked ready that is not actually on the shelf when the customer arrives is worse than no BOPIS at all, because it breaks the core promise.

Magento 2 MSI gives you the inventory foundation by letting each physical store be an inventory source with its own stock quantities. What it does not give you is the customer-facing finder, the checkout integration, the time-slot management, or the fulfillment workflow. That is what a store-pickup module adds.

Store pickup is the right investment for any merchant with one or more physical locations and enough overlap between online and offline inventory to make collection useful. It is especially valuable for retailers with a dense store network, for bulky items where shipping is expensive, for high-value items where customers want to inspect before taking home, and for stores competing with the instant-gratification promise of large marketplaces. It is the wrong investment if you have no physical locations, if your inventory is not actually available at the stores you would list, or if your in-store staff cannot reliably fulfill a pickup order within the lead time you promise.

Key Features of MageRa Store Pickup for Magento 2

MageRa Store Pickup adds a complete BOPIS experience on top of Magento Inventory: a store finder with real-time stock, a checkout picker for location and time slot, and an admin fulfillment workflow.

Admin Configuration

Screenshot of the MageRa Store Pickup admin configuration panel in Magento 2

Location Management: Full create, read, update, and delete for every pickup location. Each location carries its address, opening hours, contact details, latitude and longitude, and a link to its MSI source. The hours feed the time-slot engine, so a location that closes at 6pm does not offer 7pm slots, and the MSI source link is what makes the real-time inventory check possible.

Google Maps Store Finder with Distance Sorting: A responsive store-finder page shows nearby locations sorted by distance using the Haversine formula, so the closest store appears first. An optional map embed gives the customer a visual. The finder only shows locations that actually have the requested item in stock, so the customer never drives to a store to find an empty shelf.

Real-Time Per-Location Inventory: Availability is checked against Magento Inventory sources per request, with no stale locks, so the stock figure the customer sees is the stock figure the store actually has. This is the single most important correctness property of any BOPIS system, because overselling a pickup slot that cannot be fulfilled is the fastest way to destroy customer trust in the feature.

Geocoding with a Swappable Interface: Latitude and longitude are cached on the location row through a swappable GeocoderInterface, with a no-op default and a Google implementation. The maps API key is stored encrypted. Because geocodes are cached, the finder does not call the geocoding API on every request, which keeps the page fast and keeps API costs predictable.

Checkout Pickup Selection: A layout-processor plugin adds a store-pickup option plus a location, date, and time-slot picker to the shipping step of checkout. The customer chooses where to collect and when, and the order is tagged with that location and slot. This is a clean integration with Magento's native checkout rather than a replacement checkout, so your other checkout customizations are preserved.

Time-Slot Capacity and Lead-Time Gating: The TimeSlotManager computes the available windows for a given location and date based on the configured capacity per slot and the existing bookings, and it applies lead-time gating so a customer cannot book a slot that starts before the store could possibly prepare the order. A slot that is full does not appear, and a slot that violates the lead time does not appear.

Admin Fulfillment Workflow: A pickup-order grid with a status workflow moves each order through pending, ready, collected, and cancelled. Store staff mark an order ready when it has been pulled and is sitting at the collection point, and mark it collected when the customer has picked it up. This is the operational bridge between the online order and the in-store shelf.

Ready-for-Pickup and Reminder Emails: Notification emails fire via configurable templates and an observer on order status. The customer is told the moment the order is ready to collect, and a reminder nudge catches orders that are sitting uncollected, which reduces the number of pickup orders that sit in the back room indefinitely.

Store Pickup Storefront Preview

Screenshot showing the store finder and checkout pickup-slot picker on the Magento 2 storefront

How to Set Up Store Pickup in Magento 2

A working BOPIS experience takes a few hours, most of it spent entering your locations and tuning your time slots.

Step 1: Install and Enable the Module

Copy the module into app/code/MageRa/StorePickup, then run:

php bin/magento module:enable MageRa_StorePickup
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy
php bin/magento cache:clean

The module depends on MageRa_Base and on Magento Inventory (MSI) being enabled, which it is on any current Magento 2 install. Once enabled, new menus appear under Sales and a new section appears in configuration.

Step 2: Configure Global Settings

Go to Stores > Configuration > MageRa Extensions > Store Pickup. Set Enable to Yes. Configure the maps provider and key (Google Maps, with the key stored encrypted), the default search radius for the store finder, the same-day cutoff time after which same-day collection is no longer offered, and the notification sender. Save and flush the cache.

Step 3: Create Your Locations

Open Sales > MageRa Store Pickup > Manage Locations and add each physical store. For each location, enter the address, opening hours (including any holiday closures), contact details, and link it to its corresponding MSI source, which is what powers the real-time inventory check. On save, the geocoder resolves the address to latitude and longitude and caches them on the location row, so the finder can sort by distance without a per-request API call. If a location's inventory lives in a specific MSI source, make sure that source has accurate stock quantities, because the finder will only show stock that MSI reports as available.

Step 4: Configure Time Slots

For each location, configure the available collection time slots, the capacity per slot (how many orders can be collected in a given window), and the lead time (how long the store needs between an order being placed and being ready to collect). The TimeSlotManager uses these to compute which slots are actually bookable on a given date, which means a slot that is full or that violates the lead time simply does not appear at checkout. Be realistic about capacity and lead time: a store that promises 1-hour pickup but cannot reliably fulfill it will generate exactly the kind of bad experience that destroys trust in BOPIS.

Step 5: Verify the Store Finder and Inventory

On the storefront, open the store-finder page and search from a known location. Confirm that nearby stores appear sorted by distance, that the map embed renders if you enabled it, and that the stock figure shown for the requested item matches what MSI reports for that source. Test the failure case too: search for an item that is out of stock at all nearby locations and confirm those locations do not appear or are clearly marked unavailable.

Step 6: Test the Checkout Flow

Add an in-stock item to the cart and proceed to checkout. In the shipping step, confirm the store-pickup option appears, that selecting it reveals the location and time-slot picker, and that the bookable slots reflect the capacity and lead-time rules from Step 4. Complete the order and confirm it is tagged with the chosen location and slot. Then open the pickup-order grid in the admin and confirm the order appears in pending status.

Step 7: Exercise the Fulfillment Workflow and Notifications

In Sales > MageRa Store Pickup > Pickup Orders, move the test order through the workflow: mark it ready, which should fire the ready-for-pickup email to the customer, then mark it collected, which closes the loop. Test the reminder email on an order that sits in ready status past the configured reminder window. Only open BOPIS to live customers once the full round trip, from finder to fulfillment to notification, works end to end.

MageRa Store Pickup for Magento 2

MageRa Store Pickup is built for Magento 2.4.6 and later, running on PHP 8.1, 8.2, or 8.3. It works on Magento Open Source and Commerce and integrates with Magento Inventory (MSI) for real-time per-location stock. It ships dedicated Hyva templates and layout handles alongside Luma, so it fits either theme stack.

Key differentiators:

  • A Google Maps store finder with Haversine distance sorting that only shows locations with the item actually in stock, so customers never drive to an empty shelf
  • Real-time per-location inventory checked against MSI per request with no stale locks, which is the core correctness property of any trustworthy BOPIS system
  • A layout-processor checkout integration that adds location, date, and time-slot selection to the native shipping step, preserving your other checkout customizations
  • A TimeSlotManager that enforces capacity and lead-time gating, so the store never accepts more pickups than it can fulfill in a window
  • An admin fulfillment workflow with ready-for-pickup and reminder notifications that close the loop between the online order and the in-store shelf

For pricing, visit magera.ca.

Store Pickup Tips and Mistakes to Avoid

The technology is the easy part. The operational discipline is what makes BOPIS profitable rather than a source of complaints.

Keep inventory accurate, or do not offer pickup at all. The single fastest way to destroy trust in BOPIS is to let a customer book a pickup slot, drive to the store, and find the item is not there. Real-time inventory accuracy is non-negotiable. If your MSI sources do not reflect what is actually on the shelf, fix the inventory process before you launch pickup, because the store finder is only as honest as the stock figures it reads. Cycle counts and tight receiving discipline matter more than any software feature here.

Set honest lead times. A one-hour pickup promise that you cannot reliably keep is worse than a four-hour promise you always hit, because the broken one-hour promise produces a disappointed customer and the met four-hour promise produces a happy one. Set your lead time to the duration your slowest store needs on your busiest day, then tighten it later if your data shows you consistently beat it. Under-promise and over-deliver is the rule for pickup windows.

Offer pickup as a free option. Customers expect pickup to be free or cheap because it saves you the last-mile delivery cost, and charging full shipping rates for collection reads as a money-grab. Free pickup is the strongest conversion lever you have, and even a nominal fee is fine if it is clearly lower than delivery. The incremental foot traffic and the avoided shipping cost usually more than make up for waiving the fee.

Use reminders to prevent abandoned pickups. Orders that sit ready but uncollected occupy shelf space and staff attention. A reminder email, sent a day or two after the ready notification, meaningfully reduces the number of orders that linger. Pair it with a clear cancellation policy for orders that are never collected, so the stock can return to sellable inventory rather than sitting in the back room indefinitely.

Match the in-store experience to the online promise. BOPIS only works if the in-store handoff is as smooth as the online ordering. Train staff on the fulfillment workflow, designate a clear collection point, and make sure the customer can find it and get served quickly when they arrive. A customer who waits in a checkout line to collect a prepaid order has been given a worse experience than if they had just had it delivered, and they will not choose pickup again.

Start with one or two stores, not all of them. Roll out BOPIS at your highest-volume, best-staffed locations first, work out the operational kinks, then expand. Launching across a large store network before the process is proven multiplies your risk and your complaints. A focused rollout lets you refine the time slots, lead times, and staff training where it matters most before you scale.

Conclusion

Buy Online, Pick Up In Store is no longer a differentiator. It is a customer expectation, and stores that meet it convert inventory and foot traffic into a competitive advantage while stores that do not lose those sales to retailers who can. Native Magento 2 gives you the inventory foundation but not the customer-facing or operational layer.

A proper BOPIS experience needs a store finder that only shows locations with the item in stock, real-time per-location inventory, a checkout picker for location and time slot, capacity and lead-time gating, an admin fulfillment workflow, and proactive notifications. MageRa Store Pickup delivers all of it on top of Magento Inventory in a single module.

Ready to offer click and collect on your Magento 2 store? MageRa Store Pickup adds a Google Maps store finder, real-time inventory, time-slot booking, and a fulfillment workflow to your Magento 2 store. Get started today.

For the delivery side of your fulfillment, pair it with MageRa Table Rate Shipping to model real shipping costs for orders that are not picked up, and with MageRa Estimated Delivery to show customers a precise collection or delivery date at the product page.

FAQ

Q1: How does the store finder know which stores actually have the item in stock?

The finder queries Magento Inventory (MSI) per request, with no stale locks, to get the live stock quantity at each location's linked source. Locations that do not have the requested item in stock are either hidden or clearly marked unavailable, so a customer never drives to a store to find an empty shelf. This real-time accuracy is the single most important property of any trustworthy BOPIS system, and it depends on your MSI sources reflecting actual shelf stock.

Q2: How do time slots work, and can a slot sell out?

Each location has configurable time slots, a capacity per slot (how many orders can be collected in a window), and a lead time. The TimeSlotManager computes which slots are actually bookable on a given date by subtracting existing bookings from the capacity and removing any slot that violates the lead time. A slot that is full does not appear, and a slot the store could not prepare in time does not appear, so customers only ever see slots the store can actually fulfill.

Q3: Does this replace the checkout, or integrate with the native one?

It integrates with the native checkout. A layout-processor plugin adds a store-pickup option plus a location, date, and time-slot picker to the standard shipping step. This means your other checkout customizations, your payment methods, and your checkout extensions are all preserved. It is an addition to the shipping step, not a replacement of the checkout flow.

Q4: How are customers notified, and what happens to uncollected orders?

Customers receive a ready-for-pickup email the moment the order is marked ready by store staff, and a reminder email if the order sits uncollected past a configured window. The reminder meaningfully reduces the number of orders that linger on the shelf. Pair the reminders with a clear cancellation policy for orders that are never collected, so the stock can return to sellable inventory rather than occupying space indefinitely.

Q5: Does it work with Magento Open Source, and does it need MSI?

It works on both Magento Open Source and Commerce. It does require Magento Inventory (MSI) to be enabled, which it is on any current Magento 2 install, because MSI is what powers the real-time per-location inventory check. Each physical store is configured as a location linked to an MSI source, and the finder reads live stock from that source.

Internal Links

End of post

Comments (0)

Be the first to comment.

Ready to ship better Magento 2 stores?

64 premium extensions, one quality bar. Composer install, 30-day money-back guarantee.