8 min read

Why I Stopped Spreadsheeting My SaaS Subscriptions (And What I Use Instead)


Why I Stopped Spreadsheeting My SaaS Subscriptions (And What I Use Instead)

For about eighteen months, my SaaS subscriptions lived in a Google Sheet.

Three tabs. Personal. Side Projects. Client Work. Twenty-three rows when I last counted. Columns for service name, monthly cost, annual cost, billing date, last review, and a “still using?” yes/no column that I almost never updated. It was the kind of spreadsheet that looks responsible on a Sunday afternoon and ages badly by Wednesday.

The reason I built it was simple. I had quietly accepted a $40 AI tool I forgot to cancel after a trial, and I did not want to do that again. The reason I stopped using it is also simple. The spreadsheet did not actually prevent the thing it was built to prevent.

This post is about why spreadsheets break for tracking developer subscriptions, what a working system needs to do, and the tracker I use now instead.

What the spreadsheet was supposed to do

The job description was modest:

  1. List every recurring charge.
  2. Show me the monthly total.
  3. Warn me before a renewal hits.
  4. Tell me which subscriptions belong to which project.
  5. Let me decide what to cut at any time.

When I describe it like that, it sounds trivial. Five jobs. A spreadsheet can do five jobs.

The problem is not whether a spreadsheet can hold the data. The problem is whether the data stays correct on a Wednesday afternoon when you are deep in a feature branch and a $19 charge hits your card.

Where the spreadsheet actually fell apart

I want to be precise about this, because “use a real tool, not a spreadsheet” is the kind of advice that sounds smug without context.

Renewals do not look at your spreadsheet

Stripe and friends do not ping the cell you set up. They charge the card. The spreadsheet sits there, unaware, until you open it. The reminder lived inside a tool I had to remember to open. That is a circular dependency.

I tried Google Sheets notifications, conditional formatting for upcoming dates, even a small Apps Script that emailed me a weekly summary. The Apps Script worked for three weeks, then quietly stopped after a permission scope change. I did not notice for two months.

Mixed currencies turn the total into a lie

Of my twenty-three rows, six were billed in USD, two in EUR, the rest in KRW. I had a “monthly cost in KRW” column where I pasted whatever the rate was the day I added the row. After a year of exchange rate drift, my totals were off by a meaningful amount, in a direction I could not predict.

Yes, I could have written a GOOGLEFINANCE formula. I did, twice. It broke during weekends, broke during holidays, and broke once for a week when Google changed something on their end. The total was always wrong, just by varying amounts.

Subscriptions do not belong to one project

The most useful question I wanted to answer was not “what is my total monthly spend.” It was “what is project X costing me to run.” A side project that earns nothing should not consume a $25 SaaS budget. A side project that earns $200 a month can absorb more.

A spreadsheet can represent this with a category column. What it cannot easily do is let you filter to “show me the active spend for side-project-3” without me doing manual work. When the answer requires me to filter, sum, and remember which rows are stale, I do not ask the question often enough.

The “still using?” column ages worst of all

This was the killer. The column that decides whether a subscription is still worth paying for is the one that requires honesty, and honesty requires a regular review prompt. The spreadsheet has no nudging mechanism. Nothing forces me to revisit row 14 and admit I have not used that linter add-on in five months.

So row 14 stays “yes” by default. Defaults are policies, and the spreadsheet’s default policy is “keep paying.”

What I needed instead, in seven points

After the second time I noticed a forgotten charge, I wrote down what a working tracker would actually do. Not features. Behaviors.

  1. Sit next to my projects, not next to my budget. If I have to leave my project context to check subscriptions, I never check them. The tracker has to be where I already am.
  2. Group costs by project, not just by category. I want to see what project A costs to operate, separately from project B, separately from personal.
  3. Convert currencies automatically and stay current. I should never have to think about the FX rate of a Tuesday morning.
  4. Show me upcoming renewals before they charge. Not on the day. Three to seven days out, with enough room to cancel.
  5. Let me hide amounts when I am screen-sharing. I share my screen daily. I do not want a “JetBrains $24.90” line item flashing during a code review.
  6. Make the review feel small. A quarterly audit that takes ten minutes is one I will do. A quarterly audit that requires me to rebuild the spreadsheet is one I will skip.
  7. Track personal versus project spend separately. Some of these costs are professional development. Some are operating expenses for revenue-generating projects. They have different tax treatments and different decision criteria.

Looking at that list, only point 1 is genuinely hard. Everything else is a feature a tool can ship. Point 1 is a workflow constraint: the tracker has to live where my projects live.

The tracker I use now

I built STACKFOLO partly because I needed exactly this, in exactly that context. Subscriptions live inside the same Chrome extension where my projects, tasks, and resources already live. They sit in the new tab dashboard I already open dozens of times a day.

Here is how it maps to those seven points:

  • Project-attached. Every subscription can be tagged to a project, or left as “personal.” When I open the Quasar test runner project, the SaaS costs for that project are visible right there. When I open the personal dashboard, I see personal spend.
  • Project-level grouping. The Subscriptions panel groups costs by source. Personal versus per-project costs are tracked separately. I can see at a glance that project A runs me $34 a month and project B runs me $12.
  • Multi-currency, auto-converted. Charge currencies are stored as-is. The monthly total converts to my display currency using live rates. KRW, USD, EUR, JPY are all supported. I never paste an exchange rate again.
  • D-day badges on upcoming charges. The “Upcoming Payments” section shows what is about to hit, with a D-day label. I see “Notion D-3” before I am surprised by a charge.
  • Private Mode toggle. One click hides every amount when I screen-share. The list structure stays, the dollar figures vanish. I can still talk about subscriptions without leaking exact costs.
  • Quarterly review prompts inside the new tab. Because the panel is in my new tab, the review is something I do passively. I do not have to remember to open a spreadsheet.
  • Source filters for personal versus project spend. Filter chips at the top of the panel let me switch between “all,” “personal,” and “by project.” Different decision criteria, different views.

This is not magic. It is a spreadsheet’s job done by something that lives where I already work, and that does the boring conversion and reminder work for me.

What changed in my actual behavior

The thing I track now is not “did I save money this month.” It is whether I keep doing the review. Three things changed:

  1. I notice trials before they convert. The D-day badge for a trial-converted-to-paid subscription is visible during my normal new tab flow. I cancel two or three a quarter that I would have forgotten.
  2. I make project-level decisions faster. When a side project is not earning, I can see exactly what it costs to keep running. The decision to pause or kill becomes concrete instead of vague.
  3. Quarterly audits actually happen. Because the friction is low (no spreadsheet to open, no formulas to rebuild), I do them. The Sunday afternoon ritual is now ten minutes, not an hour.

The first two are obvious wins. The third is the one that compounds. The reason most subscription waste accumulates is that the review never happens. The system that makes the review easy is the one that pays for itself.

If you are still spreadsheeting, you do not have a tooling problem. You have a friction problem. The spreadsheet does not break because spreadsheets are bad. It breaks because the cost of opening it, fixing the formulas, and updating the “still using?” column is higher than the cost of just paying for another month.

Build a system where the review is the default, not the exception. That is what the seven points are really about.

If you want to try the same setup

STACKFOLO is free on the Chrome Web Store. The Subscriptions feature is included in the free plan. The multi-currency conversion, D-day badges, project grouping, and Private Mode all work without a Pro account. If you want cloud sync across devices, that is what Pro adds.

For a complementary read, see How to Build a Weekly Retrospective System for Side Projects, which covers the review cadence side of the workflow.

Try STACKFOLO free on Chrome Web Store: https://chromewebstore.google.com/detail/stackfolo/gakjkkjgbekgmdkijbgdpdmmhenjejpb?utm_source=blog&utm_medium=article&utm_campaign=2026-05-w20-recovery&utm_content=blog25-subscription-cost-bottom

STACKFOLO turns your Chrome new tab into a project dashboard. Manage side projects, track tasks, save resources with AI, and stay focused.

Try STACKFOLO Free →