Back to blog

Two Years In: The Roadmap Debt of a Small Shopify App

Two years building a Shopify app taught us that roadmap debt is real. What we cut, what survived, and how a small team decides which discount features to build.

Discount Prime Team
Discount Prime Team
· 5 min read
Two Years In: The Roadmap Debt of a Small Shopify App

The hardest part of a roadmap is not the list of what to build. It is the quieter list of what you have implied you will build and quietly hope everyone forgets.

Two years ago this week, the first commit for Discount Prime landed. The app has been live on the Shopify App Store for about eighteen of those months, and in that time it has grown from two discount types to a full pricing toolkit. But the more useful anniversary reflection is not about what we shipped. It is about what we did not, and why the pile of unbuilt promises is its own kind of debt.

What roadmap debt actually is

Everyone in software talks about technical debt: the shortcuts in the code that slow you down later. Roadmap debt is the same idea one level up. It is every feature you told a merchant "yes, that is coming", every half-finished idea in the settings, every direction you pointed the product toward without committing to it. It does not show up in the codebase. It shows up as pressure, the slow accumulation of expectations that narrow what you can do next.

Two years in, we can say plainly that roadmap debt hurt us more than technical debt did. The code we could refactor. The promises we had to either keep or unwind, and unwinding one always costs a little trust.

What we cut

We killed more than we shipped. A short accounting of the bigger cuts:

A rules builder with unlimited nesting. Early on we imagined letting merchants compose discounts with deeply nested conditions. We built a prototype. It was powerful and nobody could use it. We cut it and kept rules flat, and the app got better the day we did.

Per-customer manual price overrides. Requested often, but it pulled the app toward being a spreadsheet with a Shopify skin. We solved the real need with tag-based B2B pricing instead, which scales, where per-customer overrides never would.

A dozen display themes. We almost became a theme app by accident. Merchants wanted the tier table to match their store, which is fair, but every theme we added was a surface we then had to maintain forever. We shipped a few clean defaults and stopped.

Each of those was a reasonable idea. That is exactly why they were dangerous. Bad ideas are easy to reject. Good-but-off-mission ideas are the ones that quietly bloat an app.

What survived

The features that lasted all share one trait: they serve the promise the app is actually about, which is protecting margin while you discount. Volume discounts survived because they are the highest-leverage discount most stores never run properly. The discount combinations controls survived because uncontrolled stacking is where margin leaks. Profit analytics survived, and last month margin-based rules for dropshippers survived, because they are the same promise pointed at cost instead of revenue.

The test we use now is simple. A year after a feature ships, is it still earning its place, or is it a toggle nobody touches? The survivors pass that test. The cuts would have failed it.

The debt we are still paying

We are not clean. Two honest examples. We shipped a lot of discount mechanics before we shipped a way to measure them, which meant merchants ran campaigns for months without knowing which ones made money. We wrote about that regret at the one-year mark, and it is the debt we most wish we had paid earlier. And we still have settings that exist because removing them would break a handful of stores, even though we would never design them that way today.

That is the trade every small app lives with. You cannot ship nothing, and everything you ship you then owe maintenance and coherence to.

What year three has to be about

If the first year was about breadth and year two was about profit, year three is about restraint with intent. The platform is moving fast underneath every Shopify app right now, and the temptation when the ground shifts is to build in every direction at once. We would rather keep the app narrow and make the few things it does defensible.

Roadmap debt does not get paid off by working harder. It gets paid off by saying no earlier, and meaning it. Two years in, that is the discipline we are still learning.

build-in-publicproduct-strategyshopify-approadmap
Discount Prime Team

About the author

Written by the Discount Prime Team - the people building and supporting Discount Prime, the smart discount and pricing app for Shopify. We share what we learn from helping merchants run volume discounts, tiered pricing, and high-converting promotions every day.

Frequently asked questions

What is roadmap debt in software?

Roadmap debt is the accumulated weight of features a team has promised, implied, or half-started but not finished. Like technical debt, it compounds: each open commitment narrows future choices and pressures the team to keep building sideways instead of deepening what already works. Cutting it means formally saying no.

How does a small Shopify app decide what to build?

A small app builds from repeated merchant demand, not one-off requests. Discount Prime prioritizes features that many stores ask for in the same words, that fit the app's profit-first focus, and that Shopify Functions can support natively. Requests failing all three get declined, which keeps the product coherent.

Why build profit analytics before advanced discount types?

Because a discount you cannot measure is a guess. Discount Prime shipped many discount mechanics first, then realized merchants needed to see which ones made money. Profit analytics and margin-based rules came later but arguably should have come sooner, since measurement tells you whether every other feature is earning its place.

Should a small app say yes to most feature requests?

No. Saying yes to most requests produces a bloated app with fifteen toggles and no opinion. A focused app says no to features that do not serve its core promise, even good ideas, so the features it does ship stay simple, well tested, and easy for merchants to understand and trust.

What survives two years of a Shopify app roadmap?

The features tied to a clear promise survive. For Discount Prime that promise is protecting margin while discounting, so volume discounts, combinations control, and profit tooling stayed central. Novelty features and edge-case toggles got cut. The test is whether a feature still earns its place a year after shipping.

Run profit-first promotions on Shopify

Discount Prime brings eight discount types, margin analytics, and conflict detection into one Shopify-native app.

See pricing

Or see it live in our demo store and watch every feature working on a real Shopify store.

Related articles