When I signed up for Shopify, I expected leverage. What I felt instead was work... not the kind that grows a business, but the kind that feels like managing another job.
From day one, the UI felt scattered. Products lived in one section of the nav, pages in another, themes somewhere else, and apps in their own layer entirely. If someone asked me how to use Shopify, I wouldn’t know where to start. I’d probably just log in and do it for them.
The moment I realized I genuinely disliked it was when I started configuring pages. The builder felt clunky and fragile, like a modernized version of something from 2010. It worked, but it didn’t feel cohesive. It felt like assembling parts rather than shaping a system.
The deeper issue was the mental model. Shopify starts as a base platform, and then you install apps to unlock real functionality. Digital delivery? App. Subscriptions? App. Advanced workflows? Probably another app. The more serious you get, the more fragmented the stack becomes.
Adding products was fine. There’s nothing fundamentally broken about it. But I would never want to manage products in Shopify from my phone. In Notion, I can update products on my phone without even thinking about it. That difference is everything when your brain thinks in structured databases.
The breaking point came when I sent someone my store link and got a 404. Desktop worked. Mobile didn’t. Everything was configured correctly. That was enough. I cancelled the account. To be fair, I was already building an alternative. Shopify was me studying the terrain. The error just made the decision easy.
The first store I launched with my alternative was my wife’s. It was fully powered by Notion. Initially, I treated the Notion API like a database and hit it directly. That worked until performance didn’t. So I built a Postgres buffer layer and added Redis product caching to eliminate live Notion API calls on every page load. Now Notion is the source of truth, but performance is stable.
Shipping was the first real failure. I hadn’t funded my ShipEngine account correctly. A customer retried checkout several times, Stripe processed multiple attempts, and we ended up refunding and eating fees. That mistake forced me to think like a real operator instead of just a builder.
What surprised me most was how satisfying it felt to update Notion and see the live site update instantly. The backend was my workspace. No syncing across apps. No duplicate entries. No fragmentation. Just update and go live.
Today, I can launch a white-label store in under ten minutes once content is ready. Plug in the Notion databases, configure pages, and publish. For my workflow, that’s dramatically faster than Shopify.
There are tradeoffs. There’s no coupon engine yet. There’s no massive app ecosystem. There’s no merchant-of-record layer for handling global VAT. Shopify is objectively better for enterprise scale, global compliance, and theme customization.
But Shopify is built for scale-first operators. What I built is built for speed-first operators; people who already run their business in Notion and want their storefront to feel like an extension of that system, not a separate universe.
That’s ultimately what became Block Cart: a Notion-native commerce engine I now use to run digital, physical, subscription, and event sales across multiple stores. It’s not trying to replace Shopify at enterprise scale. It’s built for a different kind of operator.