Every commerce project starts with the same conversation. Shopify or custom? Hydrogen or vanilla? Stripe with your own storefront or the full platform? We've shipped ten commerce builds across the spectrum. Here's the decision tree we actually use.
Start with what the merchant does
Not what they want the storefront to look like. What their day looks like. If the merchant already runs their business in Shopify — orders, inventory, taxes, fulfillment — you don't take that away. You go headless with Hydrogen, keep the admin they know, and change only the customer-facing surface.
If the merchant is starting fresh, has no ops baggage, and needs one weird thing Shopify won't do — subscriptions with a specific proration rule, multi-brand SKUs under one checkout, invoice-based fulfillment for a specific country — then custom starts to make sense.
The three archetypes we ship
1. Headless Shopify (Hydrogen)
Best when: the merchant runs Shopify already, has good photography and wants a bespoke storefront that beats every theme they've seen. Custom cart, custom PDP, Shopify checkout handoff. Zero ops disruption.
2. Next.js + Stripe + Supabase
Best when: the product mix is small (one to a few dozen SKUs), the subscription/pricing logic is unusual, or the customer experience needs to blend commerce with content (courses, memberships, physical + digital). Full ownership, more responsibility.
3. Shopify with a theme
Best when: the merchant's differentiator isn't the storefront. Speed of launch matters more than pixel control. This is the right answer more often than agencies want to admit.
The traps
Custom because it's fun. Custom to justify the invoice. Custom because 'Shopify is limiting' when nobody has actually asked what's limiting. Headless because it sounds modern. Every one of these ends up with a merchant who can't update a product page without a developer.
The right stack is the one that leaves the merchant able to run their business without you.