Skip to content
← ALL WRITING

2026-04-23 / 9 MIN READ

The Shopify App Stack: Decisions That Age Well

The app-stack decisions DTC brands on Shopify make at 2M that still look right at 10M: checkout, subscriptions, support, lifecycle, reviews, and the apps nobody needs.

Every DTC brand I've opened past the $2M line has the same inventory problem nobody talks about: the app stack. Forty installed apps, fourteen billed monthly, six doing real work, and at least two that are silently eating the cart. The question is never whether you have too many apps. You do. The question is which apps you keep, which you replace, and which you uninstall tonight.

This is the hub article for the app-selection lane. If you're looking at theme architecture, the DTC Shopify theme architecture pattern past 2M covers the Liquid side. This one is about the app layer, and the decisions that still look right in two years.

Five app-stack decisions/DTC on Shopify

The five decisions that actually matter

Most app-stack conversations get stuck in the weeds. Operators compare feature matrices between ten options in a category where the top three are already fine and the real cost is elsewhere. The meaningful decisions happen at five layers:

  1. Checkout-adjacent apps. Anything that rewrites cart or checkout. Get this wrong and you hold your own Plus roadmap hostage for years.
  2. Subscriptions. Recharge versus Shopify Subscriptions versus Bold. A classic case where the incumbent looks safe and the newer native option is quietly catching up. The Recharge to Shopify Subscriptions migration playbook has the specific tradeoffs, and replatforming off Recharge after a price change covers the forced version.
  3. Support inbox. Gorgias, Zendesk, Help Scout, Front. The cost here is portability. Gorgias or Zendesk for a DTC stack walks through the decision.
  4. Email and SMS. Klaviyo, Omnisend, Attentive, Postscript. The lifecycle layer is where duplicate systems creep in. Klaviyo or Omnisend for a sub-500 SKU catalog and Postscript or Attentive for small DTC cover the two common forks.
  5. Reviews and UGC. Stamped, Yotpo, Judge.me, Okendo. The cost is migration lock-in. Stamped to Yotpo reviews migration cost covers the hidden part.

Everything else is secondary. Loyalty, bundling, upsell, gift cards, quiz flows, wishlist, back-in-stock. These matter less than operators think, and some of them don't pay back at all. Why loyalty apps rarely pay back under $5M and bundling apps versus native Shopify bundles cover the two biggest false-positive categories.

What "ages well" actually means

A decision that ages well has three properties, and I've watched brands regret picks that missed any one of them.

Portable data. You can export the full customer and event record to a clean format (CSV, JSON, well-documented schema) without a six-week project. If the vendor holds your subscription data in a proprietary model and their "export" is a scraped PDF, you own an exit liability, not a tool.

Clean API surface. The app has a public API you can read from and write to without begging support. Your warehouse ETL, your Klaviyo flows, your CAPI server can all integrate without a custom connector that only one freelancer understands.

No checkout lock. The app does not rewrite the cart, the checkout, or the confirmation page. If it does, you cannot move to Shopify Plus Checkout Extensibility without a replatform. This one rule eliminates about 40 percent of apps DTC brands actually install.

Portable data, clean APIs, no checkout lock. Three filters, and most app-stack regrets disappear.

Run every app you're evaluating through those three filters before you read the feature list. If any of them fails, the feature comparison is moot.

The stack DTC brands actually run

Across the mid-market DTC brands I've either audited or operated on, the real stack converges on something close to this:

  • Shopify (Plus if past $5M or subscription-heavy). Base platform.
  • Klaviyo. Email and SMS, unless the SMS volume is high enough to justify a dedicated SMS vendor.
  • Gorgias or Help Scout. Support inbox. Rarely Zendesk at this size.
  • Yotpo or Judge.me. Reviews. Stamped if they inherited it and haven't paid the migration cost yet.
  • Shopify Subscriptions (new builds) or Recharge (legacy). Subscription management.
  • A CAPI gateway. Either theme-owned or a server-side container like Stape.
  • One merchandising app. Collection filtering, search, or quiz. Rarely all three.

That's seven to eight apps doing real work. Compared with the 20 to 40 I routinely see installed, the gap is mostly legacy noise. Most DTC brands run twice the apps they actually need unpacks where the bloat comes from and how to cut it without breaking anything.

How to evaluate a new app before you install it

  • Does it rewrite cart or checkout? If yes, stop.
  • Can you export the full data model to CSV or JSON?
  • Is there a public API with documentation?
  • What does the uninstall process do to the theme? (Most leave artifacts. The uninstall checklist for theme cleanup covers the grep.)
  • What scripts does it inject on the PDP and cart? What is the page weight? The Shopify app page weight audit is the playbook for measuring.
  • What is the realistic total cost at your revenue band? (Not the sticker price. The percent-of-GMV plus the usage fees plus the implementation time.)

Apps that can answer all six confidently are a small set. Apps that dodge two or more of them always cost more than the subscription fee implies.

When to replatform vs patch

Sometimes the right call is to replace the app. Sometimes it's to eat the inefficiency because the migration cost outweighs the annual pain. The threshold I use is roughly this: if the app takes more than 0.5 FTE to operate per year (because its UI is bad, or its data needs cleanup, or it breaks under seasonal load), replace it. If it only takes a few hours a quarter, leave it alone even if a better option exists.

Replatforming off a subscriptions vendor under price pressure is a separate forcing function. When the vendor raises their fee by 30 percent with 60 days notice, the math changes overnight. Replatforming off Recharge after a price change is the case-study version of that scenario.

The audit version

I package the app-stack evaluation as part of the DTC Stack Audit. It runs the six-question filter against every installed app, scores the page-weight impact, flags the checkout-lock risks, and produces a prioritized uninstall/replace list. If your brand has 20+ apps and you can't name what each one does, that's the fastest way to get an external read.

For the full product ladder, including the operator-level bundle, see the products page.

How many Shopify apps should a DTC brand at 2M revenue actually run?

Seven to eight doing real work is the norm on the builds I've audited. The five essentials are: lifecycle (Klaviyo), support (Gorgias or Help Scout), reviews (Yotpo or Judge.me), subscriptions (if the business has them), and one merchandising app for filtering, search, or quiz. Stacks with 20+ installed apps almost always include legacy noise that can be uninstalled with zero revenue impact.

What's the single biggest app-selection mistake DTC brands make?

Picking an app that rewrites cart or checkout. That single decision can block Shopify Plus Checkout Extensibility, tie bundling logic to a vendor roadmap, and force a replatform later. Before feature comparisons, confirm the app leaves the native checkout alone.

Is Shopify Subscriptions mature enough to replace Recharge in 2026?

For new builds with simple subscription mechanics, yes. Pause/skip and recurring billing are solid on the native app, billing APIs are native, and the integration with Shopify Functions and Checkout Extensibility is better than any third-party subscription app can match. Recharge still wins on real feature coverage for build-a-box, curated multi-item bundles, prepaid multi-plan setups, and advanced churn tooling (cancellation flows, win-back). If your subscription product is a simple recurring SKU, Shopify Subscriptions is fine. If the product requires the bundling or retention features, Recharge's Standard plan at $99/mo + 1.25% + $0.19/transaction is still the right call.

Do loyalty apps pay back for brands under $5M in revenue?

In most cases, no. The attribution math rarely supports the monthly fee plus the points-liability accounting overhead at that revenue band. Loyalty tends to pay back when repeat purchase rate is already strong and the program amplifies existing behavior, which usually means a brand past the $5M line.

What's the right way to evaluate an app's page-weight impact on the PDP?

Run a waterfall with and without the app installed at a test domain. Measure bytes shipped, JS execution time, and the LCP delta on mobile. Most DTC operators never do this, which is why Core Web Vitals quietly degrade over 18 months as apps pile up. The app page weight audit article walks through the full methodology.

Should a small DTC brand use Klaviyo or Omnisend for email?

Klaviyo for most cases past a thousand customers. Omnisend is cheaper at small scale and competitive for brands under a 500-SKU catalog that don't need Klaviyo's predictive LTV or deep flow logic. The sibling article walks through the specific break-even.

Sources and specifics

  • All revenue-band guidance comes from direct audits of mid-market DTC brands in 2024 and 2025. Specific vendors are named where naming is useful; otherwise generic categories are used.
  • Shopify Checkout Extensibility is the relevant platform milestone for the checkout-lock filter. Apps built against Script Editor or legacy checkout.liquid are on borrowed time.
  • The page-weight methodology assumes a mobile test harness with a throttled 4G connection, which is the worst-case for DTC traffic in most US markets.
  • Product ladder for the audit side of this work lives at /products. The hub covers the app lane; other clusters on the site cover theme architecture and attribution and CAPI.

// related

Let us talk

If something in here connected, feel free to reach out. No pitch deck, no intake form. Just a direct conversation.

>Get in touch