Tuesday, September 22, 2026

From Bespoke Booking Flows to In-Store Portals: What Custom Web Apps Unlock That Shopify 'Alone' Can't

Amitav Roy

By Amitav Roy · Practice Manager | Commerce & Applications · Comet CX


Shopify is genuinely excellent and the best in the game at what it was built for: stunning storefronts, taking payment, managing catalog and inventory, unified commerce and giving customers a fast, trusted checkout. What makes it more than just a checkout, though, is how extensible it is; a well-documented API surface, a flexible product and variant model, and a checkout you can hand off to from anywhere. That extensibility is exactly what makes it possible to build things Shopify was never designed to do out of the box. This is where our Custom Development practice lives: not working around Shopify's limits, but building on top of its architecture using Next.js, React, TypeScript and Vercel.

Here are two shapes that takes.

Booking flows built on Shopify's architecture, not around it

Out of the box, Shopify sells products, not time slots, group sizes, or sessions with add-ons attached. But that's not a gap in Shopify so much as an invitation: its product and variant model, combined with a checkout that can be handed off to programmatically, is precisely what lets a custom booking experience exist at all.

We saw this clearly on a recent project for an entertainment and leisure venue operator. Customers needed to pick a session time, choose from a set of packages, and add extras, all before ever reaching a Shopify checkout page. We built the booking flow as a standalone React application on Vercel, purpose-designed for that journey step by step, then handed off cleanly to Shopify at the point of payment. Shopify's flexibility around what counts as a "product" and how checkout can be triggered is what made that handoff possible in the first place; we weren't fighting the platform, we were building the front door it doesn't come with.

That handoff sounds simple but it's where the real engineering lives. Partway through the project we tracked down a subtle state-persistence bug: customers who navigated back a step were getting bounced all the way to step one, losing everything they'd selected. The fix (moving flow state into sessionStorage rather than relying on in-memory React state) is the kind of unglamorous, technically deep problem that only shows up once you're building a genuinely custom experience on top of a flexible platform.

The counter, the floor, and a layer Shopify's own APIs make possible

Shopify Admin is built for merchandising and configuration; it's a small, focused surface by design, not a floor-ready tool for the fifty times a day a staff member needs to check stock across four locations or hand off a click-and-collect order. But Shopify's API depth is exactly what lets you build that floor-ready layer yourself, with full access to the same order, inventory, and customer data Admin runs on.

We've been building a lightweight, staff-facing web app that sits directly on top of a Shopify store's data to do exactly this. It gives store teams one purpose-built screen for the jobs they actually do at the counter: a live board of pickup orders, real-time stock and reserved-quantity lookups across every store location, inter-store transfer requests they can track from pending to completed, and fast customer and discount lookups without ever opening Admin. Order handoffs get a proper audit trail, ID verification included, and every single action writes straight back to the Shopify order, so Shopify stays the system of record even though the counter is running an entirely custom interface. Staff can even build a draft order and get an invoice into a customer's hands before they walk away, with a printable slip and scannable QR to match.

None of that is a feature you can toggle on in Shopify. It's a separate, purpose-built application, made possible only because Shopify's data and APIs are open enough to build on.

Why build it custom instead of buying an app

It's a fair question, given how deep the Shopify App Store runs. Three reasons this keeps being the right call:

  • The workflow is the point. An off-the-shelf app is built to be generic enough for thousands of merchants. A custom app is built for exactly how your staff, your stock, and your customers actually move, using the same Shopify data underneath.
  • You're not boxed into one platform's data model. A Next.js/TypeScript app can talk to Shopify today and your ERP, POS hardware, or staff auth system tomorrow, without waiting on a third party's roadmap.
  • No per-transaction toll, no plugin lock-in. You own the code and the infrastructure outright, while Shopify remains the commerce backbone underneath it.

The takeaway

Shopify handles commerce brilliantly, and its extensibility is precisely what makes it a platform worth building on rather than just a checkout you're stuck with. The booking journey before checkout and the operational grind after the sale are often where a business's real competitive edge lives; and building for that edge is exactly the kind of work our Commerce & Applications practice was built to do, on top of Shopify, not around it.