Case study
Click & Collect across a 50+ store retail chain
A retail chain's Click & Collect ran through its POS and kept losing orders. We moved it onto Shopify's in-store pickup, and I built one app that runs each order from shelf to handover and keeps Shopify and the ERP in step. It went live in 51 stores.
- Client
- Retail chain, 50+ stores across several states
- Role
- Architecture and build, at Comet CX
- Stack
- Next.js on Vercel, Auth0, Shopify, Business Central, Salesforce, MongoDB
The business problem
Click & Collect sounds simple. A customer orders online, picks a store and comes in to collect. Behind the counter there's more to it.
Someone in that store has to notice the order arrive. They have to find the stock, which might not be there yet, and set the order aside. They have to tell the customer it's ready and hand it to the right person when they turn up. Then head office needs the sale recorded properly in the ERP.
The chain already offered it, through a Click & Collect system built into its point-of-sale software. That system was the problem. It was constantly losing orders and it was extremely slow, so a large share of orders ended in refunds and unhappy customers.
The retailer ran its online stores on Shopify, its back office on Microsoft Dynamics 365 Business Central and its customer data in Salesforce. Rather than patch the POS system or build order handling from scratch, we moved Click & Collect onto Shopify's in-store pickup. Shopify already handled the order side well. What none of these systems gave a store employee was what they actually needed:
One screen that shows a store its orders and what to do next with each of them, and that keeps every other system up to date.
Every step crossed systems that didn't talk to each other, and it had to work the same way in more than 50 stores run by staff who aren't technical.
The solution I built
A workflow built around the counter
I built a single web app for store staff. Before building anything, I interviewed store and head-office staff and visited stores to see how they ran Click & Collect day to day. From there we prototyped rapidly and kept iterating until the screens were easy and intuitive for store staff to navigate.
Each store gets its own queue. Staff see only their own store's orders, sorted into four tabs with counts: all open, incoming, ready for pickup and on hold.
When stock hasn't arrived, one button puts the order on hold with an optional note, so nobody goes looking for it. If two of three items are in, staff can split the order: the ready items go to pickup and the rest stay on hold. Staff can tick off single items, and an order can only be collected once everything in it is ready.
Comments typed in the app are merged with Shopify's own order history into one timeline, so the next person on shift sees the whole story in one place.
A printable pick slip lists only the items in that part of the order. "Customer collected" completes the fulfilment in Shopify and records which staff member handed it over.
Shopify owns the order
The app doesn't keep its own copy of orders. The queue asks Shopify directly each time, and every button maps to a Shopify action: put on hold, release hold, split, mark ready for pickup, complete. A store can never be looking at a stale or out-of-sync version of an order, because there's only one version.
The app's own database holds only what Shopify doesn't track: users and their store access, staff comments, who did the handover and a log of ERP syncs. Access is checked on every request, so staff can only ever act on their own store's orders.
Sales posted to the ERP automatically
When a Click & Collect order comes in, the app creates a sales order at the right store's location in Business Central, then posts it when the customer collects. Nobody re-keys anything. Matching each order to a real customer record was added later, behind a feature flag.
Around it the app grew the pieces head office needed to run it: email alerts to stores when a new order arrives, voucher lookup, customer sync from the ERP to the CRM, and an admin console for users and store access.
Results
51 stores live. We started with a pilot in a single store to shake out the problems a demo never shows: location codes that didn't match between systems, and timezones, because the chain spans several states. Once that store was solid, the rollout went from five stores to 51 in 24 days, mostly in batches of four to six. A second brand's stores followed a week later.
One screen per store. Staff work every Click & Collect order, including holds and part-ready orders, from one place, with a full history of who did what.
No double entry. Sales post to Business Central on collection, so head office's records match what happened at the counter.
A platform to build on. The same app has since grown into inventory sync across several storefronts and tens of thousands of products.
Wireframes are simplified drawings of the real screens. Store names, customers, order numbers and figures in them are examples, not client data. The rollout chart uses real dates and counts.