How to decide when to sunset a product

We have sat in the planning meeting where a product review turns into an argument about feelings instead of numbers. Someone says "people still use it." Someone else says "but nobody's used it in months." Both statements can be true at once, and neither one, by itself, tells you whether to keep paying for it.
In the work we do, the products that get sunset well (shut down in a planned way, with notice, a data export and a set date) share one thing: the team separated two questions that usually get mixed together. What does this cost to keep running? And what is it actually returning, in revenue or in real, active usage? Answer those separately, compare them, and the shutdown decision is based on numbers instead of feelings. What follows is that decision rule, and the operational plan that keeps a planned shutdown from turning into a product that is simply left to fail.
Start with the true cost of keeping it running
Every running product has a maintenance bill, and most teams underestimate it because it is spread across a dozen small tasks instead of one line item.
Add up the engineering hours spent on it in a normal month: bug fixes, dependency upgrades, security patches, the alerts it sends to the engineer on call. Add the infrastructure cost it carries on its own, not shared with anything else. Add the support tickets tied to it and the time it takes someone to answer them. None of this needs to be exact. An approximate total, added up honestly, is enough to compare against what the product returns.
The part teams miss most often is the cost of keeping it up to date. A dependency with a known vulnerability has to be fixed now, even when the team is busy. If a product still has active users, someone has to patch it anyway, whether or not anyone on the team wants to spend time on it. That work is not on any roadmap, but it appears on every on-call schedule until the team either invests in the product properly or shuts it down.
Compare that cost with usage and revenue, and leave feelings out
Once you know what a product costs, put it next to two numbers: how much revenue it generates, directly or as a dependency for something that does, and how many people actually use it, measured by real activity rather than by account count.
A product can fail this test in either direction. Low usage with low maintenance cost is often fine to leave alone. It is not hurting anyone and it is not costing much to keep running. The products worth shutting down are the ones where the maintenance cost is out of proportion to the return: a feature that takes real engineering time every month, that creates support work, and that a small and shrinking group of people actually use.
This is also where feelings are kept out of the decision. A product can be loved by a small group of users who speak up often and still be the wrong thing to keep funding, if the cost of keeping it running is paid by every other project the team could be working on instead. That tradeoff is real whether or not anyone says it out loud in the meeting.
Revenue and usage do not always agree, and when they disagree, read them together rather than picking whichever one makes the decision easier. A product with falling usage but a handful of large accounts still paying for it might be worth keeping, at least until those contracts end. A product with steady usage but no direct or indirect revenue, and a support queue that keeps growing, might be the one to shut down even though the usage chart looks good. Neither number decides alone. The question is always the same: does what this costs to run still make sense next to what it returns, this quarter, not the quarter it launched.
Once the numbers point to a shutdown, plan it like a launch
This is the part most teams skip, and it is the part that determines whether users trust you the next time you release something new.
A well-planned shutdown has three parts, decided before anyone outside the team hears about it:
A data export. Every user gets a real way to take what they put into the product with them, in a format they can actually open and use somewhere else. Test this yourself before you announce anything. If you cannot make sense of the file the export produces, your users will not be able to either, and you will spend the notice period answering support tickets instead of giving people time to leave in an orderly way.
A way to move to another product, if one exists. If there is a replacement, your own product or someone else's, direct people to it instead of leaving them with an export file and nowhere to go. If there genuinely is no replacement, say that plainly rather than implying there is an option that does not exist.
For a business tool, a way to move usually means more than a link to a competitor. It means documenting the fields in your export well enough that a user can match them to the fields of whatever they move to next, and it means giving your support team a script to follow when someone asks "what do I do with this file." A move plan that is only one sentence in a shutdown email is a suggestion, and most users will not have the time to turn a suggestion into a working setup somewhere else before your service shuts down.
A real date, communicated early. Google's shutdown of Stadia is a useful example of the steps done in public: the company announced the shutdown on September 29, 2022, set the actual end date for January 18, 2023, and committed to refunding every hardware and software purchase. Users had a fixed period to plan around, a clear statement of what would happen to their money, and no ambiguity about the end date. Whatever you think of the product decision, that is what a communicated shutdown looks like: a date, a commitment, and enough time between the two for people to act on it.
Without a plan, a product is slowly abandoned
The usual failure is a team deciding to shut a product down, then letting the plan be delayed because nobody is responsible for it once the "real" work starts again.
An abandoned product and a planned shutdown look different, to the team and to users. Inside the team, abandonment looks like a product quietly disappearing from the roadmap: updates stop, fewer engineers are on call for it, and nobody schedules the export tool because there is always something more urgent. From the outside, it looks like a service that used to work and now does not, with no notice and no way to recover what was in it. Users do not experience the difference between "we decided to shut this down" and "we stopped paying attention to this." They experience a thing that used to work and no longer does.
The fix is treating the shutdown plan the way you would treat a launch plan: written down, with an owner, a checklist for the export and the move to another product, and a date on the calendar that the team is accountable to as a group, not to whichever engineer happened to build the thing originally.
The decision rule, in short
Add up what a product costs to keep running this month. Put that next to what it earns and how many people actually use it. If the cost is out of proportion to the return, that is your answer, and it does not need to be made to look more complicated.
What takes real effort is everything after the decision: the export that works, the way to move to another product if one exists, and the date announced with enough notice that people can act on it. A product shut down with all three has had a planned shutdown. A product that just stops getting updates is what happens when nobody made a decision at all.
The teams that get this right treat the ending of a product with the same care they gave its start. Users remember that care more than the decision itself.
Sources
- Gematsu, "Stadia to shut down on January 18, 2023; all purchases to be refunded": confirms the announcement date, the final shutdown date, and the refund commitment used as the example of how to run a shutdown.


