DEV Community

Fahad Azhar
Fahad Azhar

Posted on

I replaced a brand's Shopify app stack with code. Here's what it really costs

The usual Shopify answer to "can the store do X?" is "there's an app for that". Install it, pay monthly, live with its widget, its script weight and its idea of how your store should look.

For a publisher I run tech for (4 stores, 4 countries, 4 currencies), I stopped saying that. Most of what would normally be an app is now code we own. AI didn't write it for me, but it made one engineer fast enough to build and maintain all of it.

What we built instead of installing

Need What runs now
Frequently bought together Sets mined from real orders + a Shopify Function that discounts only complete sets
Bundle builder A guided quiz that builds a 2–4 book library, discount applied at checkout
Cart upsell "Complete your library" in the cart drawer
Prepaid nudge Order discount + a payment customization that hides cash on delivery when the customer opts in
Split-shipment fee Orders split across parcels pay one fee, by total weight
International upsell A cart bar showing weight against 5/10/20/30 kg shipping slabs
Back in stock Notify-me on product cards and pages
AI shopping assistant Claude-based, with every sale it creates tagged on the order
WhatsApp inbox Our own CRM on Meta's coexistence API
Inventory A ledger that records who changed stock, with daily drift checks
Reporting P&L and a multi-store sales dashboard
Control panel One embedded admin app to switch features on or off and change percentages, no developer needed

All of these are live. Some run on all 4 stores, others only where they make sense (cash on delivery is a Pakistan problem, shipping slabs are an international one).

Why code beat apps here

  • Logic apps can't express. "Discount only when the full set is in the cart" and "hide COD only when the shopper chose to prepay" aren't settings in an app. They're business rules.
  • One brand, one design. Nothing looks bolted on, because nothing is.
  • Speed. Every app adds its own script. Ours load only where they're used.
  • The data stays ours. Orders, stock history and chats sit in our database, not in a vendor dashboard we rent.

What it actually costs (the honest part)

Owning the code means owning the bugs. These are the ones that cost us:

  • The 25-discount ceiling. Shopify allows 25 automatic discounts per store. We had hundreds of real product sets, so I pack them into "shards" to stay under the limit and the config size cap.
  • Plus gating. Payment and delivery customizations from a custom app need Shopify Plus. I learned this on another, non-Plus store after building and deploying a Function. Now the plan check happens before any code.
  • Bundles that oversold. A bundle was its own product, separate from the books inside it. Without the right inventory settings, Shopify let 100 bundles into a cart when only 1 real book was in stock. App vendors absorb bugs like this for you. We don't have that buffer.
  • Discounts that fight. A welcome code that didn't combine with product discounts quietly cancelled a discount we'd promised. Now every active discount's combinesWith gets checked before we promise anything.
  • Maintenance never ends. API versions change, and someone has to read the changelog. Here, that's me.

When I'd still install an app

When the feature is a commodity (reviews, email, subscriptions billing), when nobody on the team can own the code, or when the store is small enough that one app costs less than one day of development.

For a multi-store brand with rules no app understands, the maths flips. You stop paying rent on features and start owning an asset.

I build these systems for Shopify brands. More at fahadazhar.site.

Top comments (2)

Collapse
 
steven_mock_afbb801174fc3 profile image
Steven Mock •

This is a useful honest accounting. The monthly app fees are easy to see, but the hidden cost is usually the opposite one — every app doing the job slightly differently than your business actually works, plus another script slowing the store down. Your point about owning the bugs is the real trade-off. Saving the subscription only pays off if someone is actually going to read the changelogs and own the maintenance, and checking the plan limits before building is a lesson most people only learn once.

Collapse
 
fahadazhar1 profile image
Fahad Azhar •

Thanks Steven, really appreciate it. You're right, the monthly fee was never the real problem. It was the small gaps where an app almost fit how the brand works, and someone filled them by hand every day. And yes, owning the code only makes sense if someone actually looks after it. Here that's me, so reading changelogs is just part of the job now.