Should you build a subscription tracker in Notion or Airtable?

Both handle the list well. The difference is automation, and the shared limitation is the one that matters — recurring date arithmetic.

Answer

Airtable if you want the reminder to actually fire, because its scheduled automations can send email on a date condition. Notion if the list lives alongside your other notes and you will open it anyway. Both struggle with the same thing: recalculating the next renewal date after each cycle, which is a formula you have to maintain.

LM

Leutrim Miftaraj

Founder, SubTracker · Updated September 5, 2026

The short answer

These are databases with alerting attached, not systems built around a renewal date. That is fine for a list and it is the wrong shape for the one job that changes an outcome — being told thirty days before an annual charge, reliably, without you opening anything.

The schema is the same in both

Eight fields, whichever you pick:

FieldTypeNote
NameTextProvider as it appears on the statement
AmountNumberIn the currency charged
CurrencySelectSkip only if genuinely everything is one
CycleSelectDay / Week / Month / Year / Once
EveryNumberMultiplier: 1 monthly, 3 quarterly, 18 for eighteen months
Anchor dateDateThe original billing date, never edited
Next renewalFormulaDerived from anchor — see below
StatusSelectActive / Paused / Cancelled / Trial

Cycle plus Every rather than one Frequency field. Same reasoning as in a real schema: "Quarterly" as a text value cannot be arithmetic on, and the moment something bills every two months a single field has no answer.

Anchor date separate from Next renewal. Deriving forward from a fixed anchor is what stops a 31st-of-the-month subscription drifting to the 28th after one February.

Where they differ: automation

Airtable has scheduled automations. A daily trigger with a condition on the next-renewal field can send an email or a Slack message. That is a real reminder, and it is the reason to pick Airtable for this.

Notion ties reminders to date properties. They work loosely and they are not built for "thirty days before this rolling date, by email, reliably". For a monthly plan you will probably notice; for an annual one with a thirty-day notice period you probably will not.

If the reminder is the point — and it is — that difference decides it.

Where they are the same: the date maths

Both need a formula for the next renewal, and keeping it correct across monthly, quarterly, annual and every-eighteen-months plans is more work than the rest of the build.

The Airtable shape:

""` IF( {Cycle} = "Month", DATEADD({Anchor}, {Every} * CEILING(DATETIME_DIFF(TODAY(), {Anchor}, 'months') / {Every} + 0.001), 'months'), IF( {Cycle} = "Year", DATEADD({Anchor}, 12 * {Every} * CEILING(DATETIME_DIFF(TODAY(), {Anchor}, 'years') / {Every} + 0.001), 'months'), {Anchor} ) ) ""`

Ugly, and it means the date is never stale. A hand-maintained renewal column is wrong within two months, and a tracker with wrong dates is worse than none because it is trusted.

Normalised monthly cost is the easier one:

""` IF({Cycle} = "Once", 0, IF({Cycle} = "Year", {Amount} / (12 * {Every}), IF({Cycle} = "Month", {Amount} / {Every}, IF({Cycle} = "Week", {Amount} * 52 / (12 * {Every}), 0)))) ""`

"Once" normalising to zero is deliberate: a one-time payment is not recurring spend and including it produces a monthly figure that reconciles against nothing.

What neither does

Price history. Overwrite an amount when a price rises and the previous figure is gone. You lose the ability to notice the increase at all, which is one of the more valuable things a tracker does. Airtable can approximate this with a linked change-log table and an automation; it is real work.

Multi-currency totals. Both need a rates table you maintain by hand, and a converted figure drifts as rates move.

A calendar feed. Neither publishes an ICS feed of renewals that updates as rows change. Individual calendar events, created manually, are the workaround — twenty of them.

Shared household reminders routed to the right person. Possible in Airtable with enough automation work. Not the default in either.

When this is the right answer

You already live in one of them daily. A tool you open beats a better one you forget. This is the strongest argument and it is often decisive.

Fewer than about fifteen subscriptions. The formula maintenance stays trivial.

You want to own the data completely, with no third-party service in the path beyond the one you have already chosen.

You enjoy this. Genuinely a reason. Building it teaches you the shape of the problem, and the shape is more interesting than it looks.

When to stop: the first time an annual renewal you meant to cancel goes through despite being correctly recorded. At that point the list was right and the alerting was not, and no amount of formula work fixes the part that failed.

Die ehrliche Bau-oder-Kauf-Linie

Das Schema ist der einfache Teil. Es ist auch der Teil, der sich nach Fortschritt anfühlt — weshalb das Projekt unmittelbar danach aufhört, Spass zu machen.

Was tatsächlich Zeit kostet, in der Reihenfolge, in der es zubeisst: geplante Erinnerungen mit Idempotenz und Zeitzonen, Wiederholungs-Arithmetik über unregelmässige Intervalle, Währungsbehandlung, und ein Import, aus dem heraus überhaupt etwas entsteht.

Nichts davon ist intellektuell schwierig. Es ist schwierig im Sinne von vier Wochenenden, und das vierte ist das, an dem das Projekt stirbt.

Wenn das Ziel Lernen ist: bau es. Der Code hier ist echt und funktioniert. Wenn das Ziel ist, kein Geld mehr an vergessene Abos zu verlieren, ist der Bau ein Umweg.

Was SubTracker damit macht

Zur Einordnung, weil die Entscheidungen oben aus einem laufenden System stammen und nicht aus einer Entwurfsübung.

SubTracker ist eine Next.js- und PostgreSQL-Anwendung (Supabase), die Abos manuell verfolgt — es gibt keine Bankverbindung, jede Zeile stammt aus einem Formular oder einem CSV-Import. Diese Einschränkung prägt das Schema: kein „erkannt"-Zustand, kein Konfidenzwert, keine Händler-Zuordnungstabelle. Jede Zeile ist eine Behauptung, die jemand aufgestellt hat.

Der kostenlose Plan verfolgt unbegrenzt viele Abos inklusive CSV-Import und Live-Kalender-Feed. Erinnerungen und Preis-Alarme sind Plus für $5.90/Monat; Family kostet $9.90/Monat und fügt einen geteilten Workspace für bis zu zehn Personen hinzu — an dem Punkt hören die Besitzverhältnisse im Schema auf, theoretisch zu sein.

Frequently asked questions

Is Airtable or Notion better for a subscription tracker?+

Airtable, if the reminder matters — its scheduled automations can send email on a date condition. Notion is better only if the list lives alongside notes you already open daily, which is a real advantage but not an alerting one.

How do you calculate the next renewal date in Airtable?+

Derive it from a fixed anchor date with a formula rather than editing a date column by hand. A hand-maintained renewal date is wrong within two months, and wrong dates in a trusted list are worse than no list.

Can Notion remind me before a subscription renews?+

Only loosely. Reminders tie to date properties and are not built for reliable "thirty days before a rolling renewal, by email" alerts — which is exactly the timing that prevents an unwanted annual charge.

What can neither Notion nor Airtable do easily?+

Price history, multi-currency totals without a hand-maintained rates table, and an ICS calendar feed that updates as rows change. The first is the costly one: overwrite an amount and the ability to detect an increase is gone.