Dev.to AI 🤖 Ai 👁 0 📖 3 min read

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

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.

📰 Read the original article on Dev.to AI

Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.