How to Build Notion Formula for Subscription Renewal Reminder Logic
🔍 WiseChecker

How to Build Notion Formula for Subscription Renewal Reminder Logic

You want to avoid forgetting when your Netflix, Adobe, or other subscriptions renew each month. Notion databases can calculate renewal dates and show reminders, but writing the formula can be confusing. The core challenge is converting a start date and billing cycle into a future renewal date, then comparing it to today. This article explains how to build a Notion formula that calculates the next renewal date and flags subscriptions that are due soon or overdue.

Key Takeaways: Notion Formula for Subscription Renewal Reminder

  • dateAdd(Start Date, Billing Cycle, ‘months’): Calculates the next renewal date by adding the billing cycle length to the start date.
  • if(dateBetween(Next Renewal, now(), ‘days’) <= 7, 'Due', 'OK'): Flags subscriptions as “Due” when the renewal is within 7 days.
  • Select property for Billing Cycle: Use a Select property with options like “Monthly” or “Yearly” to keep the formula clean and avoid hardcoding numbers.

ADVERTISEMENT

Understanding the Subscription Renewal Formula Structure

The formula you build will rely on three database properties: a Date property for the start date, a Select property for the billing cycle, and a Formula property that outputs the next renewal date and a reminder status. Notion uses the dateAdd function to add a specified number of days, months, or years to a date. The dateBetween function then calculates the difference between the renewal date and today.

The billing cycle must be stored as a number that the formula can use. A Select property works well because you can assign a numeric value to each option using a nested if statement. For example, “Monthly” equals 1 month, “Quarterly” equals 3 months, and “Yearly” equals 12 months. The formula will then add that number to the start date using the dateAdd function with the ‘months’ unit.

To show a reminder, the formula compares the calculated renewal date to the current date using now(). If the renewal is within the next 7 days, the formula outputs “Due”. If the renewal date has already passed, it outputs “Overdue”. Otherwise, it shows “Upcoming” or the renewal date itself. This logic gives you a clear visual indicator in your database.

Steps to Build the Subscription Renewal Reminder Formula

  1. Create the database properties
    Create three properties in your Notion database: a Date property named “Start Date”, a Select property named “Billing Cycle”, and a Formula property named “Next Renewal”. The Start Date should be the day the subscription began. The Billing Cycle options should include “Monthly”, “Quarterly”, “Semi-Annual”, and “Yearly”.
  2. Set up the Billing Cycle select options
    In the Billing Cycle property, add the following options: Monthly, Quarterly, Semi-Annual, Yearly. Do not add numbers to the option names — the formula will convert them. Keep the names clean so the database remains readable.
  3. Write the formula to calculate the next renewal date
    Click the “Next Renewal” property and select “Formula”. Enter the following formula:

    dateAdd(prop("Start Date"), if(prop("Billing Cycle") == "Monthly", 1, if(prop("Billing Cycle") == "Quarterly", 3, if(prop("Billing Cycle") == "Semi-Annual", 6, if(prop("Billing Cycle") == "Yearly", 12, 0)))), 'months')

    This formula checks the Billing Cycle value and adds the corresponding number of months to the Start Date. If no cycle is selected, it adds 0 months and returns the Start Date itself.

  4. Add a reminder status formula
    Create a second Formula property named “Reminder Status”. Enter this formula:

    if(dateBetween(prop("Next Renewal"), now(), 'days') < 0, "Overdue", if(dateBetween(prop("Next Renewal"), now(), 'days') <= 7, "Due", "Upcoming"))

    This formula compares the Next Renewal date to today. If the difference is less than 0 days, the renewal is Overdue. If it is 0 to 7 days away, it shows "Due". Otherwise, it shows "Upcoming".

  5. Test with sample data
    Add a test row. Set Start Date to today's date minus 30 days and Billing Cycle to "Monthly". The Next Renewal should show a date about 0 days from today. The Reminder Status should show "Due". Change the Start Date to 60 days ago, and the Reminder Status should show "Overdue".
  6. Adjust the reminder threshold
    If 7 days is too short or too long, change the number 7 in the Reminder Status formula to your preferred number of days. For example, change it to 14 for a two-week reminder.

ADVERTISEMENT

Common Mistakes and Limitations

Formula returns "Overdue" for subscriptions that renew indefinitely

The formula above calculates only one renewal date from the start date. For recurring subscriptions, you need to loop the calculation. Notion formulas do not support loops. A workaround is to add a "Next Renewal Date" property and manually update it after each payment. Alternatively, use a formula that adds the billing cycle multiple times based on how many cycles have passed. For example, dateAdd(prop("Start Date"), month(now()) - month(prop("Start Date")) + 12 (year(now()) - year(prop("Start Date"))), 'months') calculates the next monthly renewal by adding the number of months since the start date. This works only for monthly cycles and becomes complex for quarterly or yearly cycles.

Billing Cycle property is empty and the formula breaks

If a row has no Billing Cycle selected, the formula returns an error because the if chain does not handle empty values. Add an initial check at the top of the formula: if(empty(prop("Billing Cycle")), "", dateAdd(...)). This returns a blank string when the Billing Cycle is not set.

Renewal date does not account for the current month

The simple formula always uses the Start Date as the base. If you started a subscription on January 15 and it renews on the 15th of each month, the formula works correctly. But if you started on January 31 and the month has only 28 days, Notion's dateAdd function may return March 3 instead of February 28. This is a known limitation of date arithmetic in Notion. To avoid this, use a fixed day number in the formula, such as the 1st of each month, by setting the Start Date to the 1st.

Reminder Status does not update automatically

Notion formulas recalculate only when a property changes or when the database is loaded. The Reminder Status will not update in real time. To force an update, edit any cell in the row or refresh the page. For critical reminders, set up a Notion automation that sends a notification when the Reminder Status changes to "Due".

Notion Formula Options for Renewal Logic Compared

Formula Approach Pros Cons
Single dateAdd from Start Date Simple to write and understand Only valid for one renewal cycle; does not handle recurring renewals
Dynamic cycle count using month difference Calculates the next renewal automatically for monthly subscriptions Fails for quarterly, semi-annual, and yearly cycles; complex formula
Manual Next Renewal Date property Works for any billing cycle; no formula errors Requires manual update after each payment; not automated
Rolling formula with dateAdd and cycle count Handles multiple cycles if you add a count property Requires extra property for cycle count; still complex for irregular cycles

For most users, the single dateAdd formula with a manual Next Renewal Date update is the most reliable method. It avoids formula complexity and works with any billing cycle. If you want full automation, consider using a third-party tool like Zapier to update the Next Renewal Date automatically when a payment occurs.

Now you can build a Notion database that tracks subscription renewals and shows reminders. Start by creating the three properties: Start Date, Billing Cycle, and Next Renewal. Test the formula with a few subscriptions to confirm the dates are correct. For a more advanced setup, add a Rollup property that counts how many times the subscription has renewed, then use that number in the formula to calculate the next renewal date accurately.

ADVERTISEMENT