How to Build an Easy Subscription Tracker in Notion

Red Gregory walks us through how you can setup a subscription tracker in Notion using formulas, databases and more.
Tools mentioned
No items found.
Tutorial overview

I. Introduction

  • Building a subscription tracker in Notion
  • Need for original payment date to calculate reoccurring payments

II. Creating the database

  • List of example subscriptions
  • Properties: name, original payment date, cost, remove checkbox
  • Frequency property with options: monthly, quarterly, yearly

III. Calculating the next payment date

  • Using an if function for different frequency options
  • Using the date between function to calculate number of months between original payment date and current date
  • Adding one month to account for payments already made

IV. Creating a database view for subscriptions to cancel

V. Calculating the last payment made

  • Subtracting one month from next payment date to find the last payment date
  • Account for subscriptions that have not yet had their first payment

VI. Conclusion


Today, I'm going to build a subscription tracker inside of Notion. Specifically, I want to show you how we can return recurring monthly payments and how we can do this automatically. All we'll need is one date property. We'll have to find the original date that we started paying for this subscription. From there, we can find the next payment we need to make from right now and the last payment made. What we'll also do in this database is create a database view for subscriptions we wish to cancel.

So, I went ahead first and I created a list of example subscriptions. Inside of this database, we're starting with the name of the subscription, of course, the original payment date (so this is a date property we will need to create these reoccurring payment schedules), the amount it costs, and a remove checkbox. This is going to be helpful when we create that database view for all the subscriptions you want cancelled.

So, let's get started with a select property called frequency. This is important because not all subscriptions are monthly. We're going to use the examples monthly, quarterly, and yearly. The next thing we want to do is create that formula for the next monthly payment. Let's just hide some of this. I'd remove and create next payment. Make sure the property type is a formula. Down in advanced, and let's get started.

Firstly, what we want to do is determine if the frequency is monthly. We're going to use an if function here. If the frequency equals monthly, then we're going to add a certain amount of months to the original payment date. The way date add works is we're going to add a certain amount of whatever (value) we want. Let's say maybe three days. And it will give us three days in the future. So, April 1st will give us April 4th. This is the false condition so basically saying every single time frequency equals monthly we will add three days. If it doesn't equal monthly (so if it equals yearly or is blank), then just give us right now. And there's where you see in yearly we're seeing the date of today and the time of today. So, we don't want three days in the future. We want every single amount of months from now and the original payment date.

So, instead of three, we're going to say date between right now and the original payment date and I want to see the number of months between it. But I'm not adding the number of days here, I'm adding months. So, we're going to erase days with months. And you'll see that the original payment for Spotify is April 1st, 2016 and the next payment would be April 1st, 2021. The thing is, we need to add one more month so after this date between function I'm just going to say plus one. You'll see everything shift here. Right now that I'm filming this is April 19th. So if we look at April 1st, I've already paid for this month so it's not going to tell me April 1st. It's going to say my next payment is May 1st.

Same goes for Squarespace. We have November 21st, 2019 as the original payment. So the next payment will actually be within this month because it is not the 21st yet. So, it'll say the next payment is this month on the 21st. What we're going to do is create another if statement for yearly. So, let's copy this and paste it below. We're going to change monthly to yearly.

Every single time frequency equals monthly, we will add three days. If it doesn't equal monthly, for example if it equals yearly or is blank, then we just give the current date and time. In the case of yearly subscriptions, we want the original payment date and the number of months between that date and the current date. We don't want to add three days, we want every single amount of months from now.

To make this calculation, we will use a function called "date between." After this function, we will add one more month. The reason for this is that if it is currently April 19th and the original payment date is April 1st, we have already paid for this month and so the next payment date should be May 1st.

We will also create an if statement for yearly subscriptions, and another one for quarterly subscriptions. For the quarterly subscriptions, we will use a function called "format date" to find out what quarter a certain date falls in.

In addition to calculating the next payment date, we also want to calculate the total amount of money spent on each subscription. To do this, we will create a property called "spent" and use an if statement to determine the frequency of the subscription. If the frequency is monthly, we will find the number of months between the original payment date and the current date and multiply that by the amount of money spent. For all other frequencies, the "spent" amount will be set to zero.

Is appropriate for you it is not counting the original payment so an easy fix for this is to go into this date between function right here and we're just gonna add plus one plus one now what I have to do here is also isolate the date between function plus one so we're gonna have a closed parenthesis after one and an open one before date between again doing the same thing we're going to include yearly and quarterly and that's just copying this if statement here like we did before just makes things go a lot quicker instead of monthly let's say yearly and years we have the false condition here with two parentheses at the end and then we're just going to do it one more time for quarterly third parentheses at the end and this is what we have. We can also sort this by descending so we can see what we spent the most of at the top and the least at the bottom.

Let's take a look at how we can find the last payment so this is pretty much identical to next payment just with a slight modification so we'll create a formula because there is such a slight modification I'm just gonna copy next payment paste it into last payment and I'm just removing that plus one whenever do we see a plus one remove it let's hide last payment we'll see inside of these cards of course that it does show up even though we hit it inside of the database view move some stuff around so next what I want to do is I want to create that database view to look at all of our cancelled subscriptions are all the ones we want to cancel so let's just add a view cancelled subscriptions go to list and let's create a filter and simply say if remove is checked have it show up in this view it shows us the original payment date I don't really want to see that let's go to properties I want to see the amount the frequency and the remove checkbox just in case we want to uncheck it to remove it from this view like that let's go back up to recurring payments we'll see uh curiosity stream is still here I don't want to see it in this view once I remove it so I'm going to create a filter that's pretty much the opposite add filter and just say remove is unchecked and you'll see that curiosity stream has been removed from this main view.