Transcription
Notion can be a really powerful tool to stay on top of your finances, both in your personal and professional life. However, there's usually one big hurdle: getting the data into Notion. I mean, who really has the time to sit down and input all of their expenses into Notion?
Luckily, you can easily automate the whole process. In this video, I'll show you how to build a fully automated finance tracker.
Here's a little preview: it's a simple but really effective overview that will show you your most recent expenses, your current financial status for the month (right, so how much you spent and how much you made), and then some nice insights into how much you spend across certain categories or how your month-by-month breakdown in terms of finances looks.
Again, everything is fully automated. You won't have to do a single data input in order for this to populate in your Notion workspace.
To build this yourself, we first need to set up your databases. For this setup, you want to have three databases: one for your cash flow items, a second one for the individual months, and a third one for the years. It will become very clear why we need the latter two in a second.
So, let's type "/database" and create our cash flow items. Here, the properties that we need for sure are, of course, the amount. We need a number property called "Amount," and we can just call this "USD" or whatever currency you use.
Then, we want another property for the date, right? When that transaction happened. Last but not least, we need a select property in order to determine whether this is an inflow or an outflow. So, let's just call this "Type," and then as options, add "Inflow" and "Outflow."
The reason we want to have this in one database and not in several databases is that if you plan on using the new Notion charts, it's much better to have all the information in the same database. That makes it much easier to visualize than, you know, the rate, for example, of inflow versus outflow.
That's pretty much the reason for that. If not, you could, of course, also split this into two databases, but overall, this is just a nice and scalable setup.
Now, you can add more complexity to this. For example, we could add another select property and call this "Category." We want to break down our spending into different types of spends. We could do that, so let's call this "Groceries," "Travel," and "Dining Out."
In case this is a private tracker, if it's a business tracker, you might want to add categories for your different departments in the team.
Next up, let's add our next database, and this will be the database for the months. This one is much simpler. We can just delete the existing property for now, and we just need a relation of the month to our different cash flow items.
We can show it on both sides and can just call this "Items" here and "Month" on the other side. This will allow us to group our elements by a different month.
So, we can just quickly go in here and actually swap out the icon for a calendar icon. For the item one, we can swap that for a list icon to show different line items.
Now, let's say we have here September, October, and November. Let's say we have, just to give an example, opening at Costco, we have coffee, and we have ice cream.
So, let's say $55 for Costco, $5 for coffee, and $30 for ice cream. What we can do now is set the month, and later this will all happen automatically.
Right now, it's just to show you the reason why we set up the databases that way. We can set a category, so let's say "Groceries" here, and then both coffee and ice cream were both during a travel.
What we can now do is create some aggregation here to see at a glance how much we spend across the board.
First, let's stop here and then create a new formula property. This formula property, first, what we want is, of course, our total spend. So, let's call this "Total Spend," and then we can use an arrow to indicate that this is the money that goes out.
On top of the formula, what we want to do is say, "Okay, give me the items, then filter them." We want to filter them where the current category type is equal to an outflow.
Because if we have later inflows and outflows in there, we only want to catch the ones that are outflows. After that, we need to map and get the current amount, and last but not least, we need to sum this.
If this is a bit complicated, don't worry. You can always pause the video, type it down, or you can check out the blog post in the description where you have all these formulas to copy-paste.
So, let's click done. Now, this should show nothing because currently, we haven't set our types here. So, let's just set "Outflow" on all of these, and now we have our sum of $90.
We just need to adapt it and make sure that here our number format is also in USD. We see, okay, across the board, we spent currently $90 in September.
Now, since we can then for the next month map a different month, we'll have this overview of how much we spend each month overall. We can also create category breakdowns.
To do that, let's just duplicate this for our general setup and call this "Travel" as one example. We have several expenses, so let's take the plane as an icon.
Now, what we want to do before we sum everything up is to filter a second time. There are two ways to do it: we can just tap on another filter, or we can modify this filter.
So, let's actually do that. We'll put "and" in the brackets, and that means we can add a second condition. We'll say, for one, it should be an outflow, and for two, the current category should be equal to "Travel."
Now, if we click on this, it should reduce accordingly to $35 ($5 + $30). Yes, perfect!
Now, what you could do is, of course, just duplicate this property for whatever category you have, and all you need to do in the formula is swap out where it says "Travel" for whatever other categories you have.
Nearly done! One last database, but this one is super simple. Here, let's create our database for the year just because we probably want to see our spend year over year.
In this one, all we need is the name, and then we need a relation to our different months. Again, show months, show the year, and in this case, the month gets again our calendar.
We can now map these to that. So, let's say we currently have 2024 and then we need 2025 as well. No need to go further for now, and then we map this here to 2024.
Now, we can do the same thing here on the year that we did on the month. We can create an aggregation.
So, we can again say, "Okay, give me a formula property: Total Spend." Here, again, write a very similar formula. We take our months, then we want to filter our months, and we want to make sure that we actually don't need to do the filter.
We can just realize because we take just the whole spend. So, what we can simply do is say, "Okay, from months, please map the current total spend and then just give me the sum of that."
All right, click on okay. Of course, in this case, it's still $19 because we don't have any spend for any other months. But if we had any other months, we would now get the aggregated spend across everything.
We could then break it further down into the different categories if you want to, but I think this is a good starting point for the database backend for our fully automated finance tracker.
One quick note: you can download the whole setup as the finished template, plus a bunch of additional Notion templates, all on my website. The link for that is in the description.
On there, you'll find also a ton of tutorials to learn more about Notion and to really push the limits, so definitely go check that one out.
Next up, a quick step with Google Drive. In Google Drive, we basically want a location where we can have two folders: one folder for all our income and one folder for all of our expenses.
Now, if you are using this for a private use case and you work a regular job where you simply get a pay slip and it's the same amount every month, then you can skip the part with income.
In that case, I'll show you in a second where you can just set up a recurring income in Notion. But if your income fluctuates, maybe because you are a business or you track your business income in here and you write invoices and need to have them tracked, or you're a freelancer, so you have a varying income, for that, you can also use this to automatically extract the inflows.
So, in that case, we want to have two folders: one for inflows and another one for our outflows. That's pretty much everything we need to set up here.
Just quickly, as promised, how would you set up your recurring inflow all the time? Well, the easiest way to do that is to set up a new template here on your database and say, you know, like a pay slip or whatever source of income you have.
Let's say we earn $5,000 a month. The type, very important, would be inflow, and the date we can say, "Okay, please do the today's date when duplicated."
Then what we can do is say, "Okay, let's make this template recurring." So, let's say make this repeat monthly or weekly, depending on how many you get paid.
So, every month we want to create this, and then we can save it. That means now every month we will get a new entry of our pay slip here.
Once it is in there, just to show you as an example, so pay slip, we can just fly this template. We'll see we have now a new inflow that has automatically this date associated with it.
It doesn't have the month, right? That we either need to do manually or we can build a separate automation for that. But other than that, it's already in there.
Then we can, of course, expand our calculations here and say, "Okay, let's duplicate our total spend and call this our total income."
Again, if your income is fixed and you don't care about this, you can skip that. If your income is variable and you care about how much did you make every month, you probably want to have this.
The only thing we need to swap out here is, you know, outflow to inflow, and that will give us our total income.
Then we could, of course, have another formula property for our result, particularly relevant if this is for a business use case, where we say, "Okay, total income minus total spent," and then also have this show as dollars.
So, we have a live updating overview of how we are standing with this.
Ready? We can move on to the automation that will automatically extract all our income and expenses and add it to Notion.
The automation tool that we're going to use today is called Relay.app, and they're one of my favorite new and very recent finds in the whole automation realm.
They are great because they have a very easy-to-use interface, a very strong integration with AI in a very useful way, and it's overall a lower learning curve with Relay.app compared to Make.com.
Make.com is the usual automation tool that I use for most of my client workflows, but in particular, if you're newer to automations, this is much easier. So, that's why I'm going to show it to you with Relay, but of course, you could just as well use Make.com to build this.
All right, so this is how it looks like when you sign up for Relay. One thing I forgot: they also have an amazing free plan. Another reason to do a tutorial with them because you can build all of this for yourself for free.
Anyway, this is how it looks like when you sign up, although you probably won't see any workflows because your workspace will be empty.
What you want to do is click on "New Workflow," and then the first thing we can do is title this. So, let's call this "Automated Finance Tracker - Outflows."
If you wanted to have an icon for the money that you spend, you can add that to it. Next, we need to define the trigger, and the trigger basically means when should this automation start.
Now, what we want to have is that whenever we add another expense to our expense folder in Google Drive, we want this automation to extract that information and add it to Notion.
So, what we're going to do is say, "Okay, please Google Drive, whenever there is a file added to a folder."
Now, if you have not used Google Drive with Relay.app before, it will walk you through the flow to authorize it. Once you've done that, you can now select the folder.
So, my folder will be the expense folder, if I recall it correctly. You should ideally add an expense to it or a PDF so we have some data.
I did that right; I have my Whimsical invoice for August and September. We can preview it here, and it just pulls that data in.
With that done, we can click on done, and that is now the first step of our automation. All we're going to use AI to extract the information from the document.
It could be a PDF; it could be an image, right? Whatever you get to document your spend, you can put it there.
Now, the method that I'm going to show you first works best for individual invoices, so it's probably better in a business use case where you have individual invoices for all your expenses.
For more of a private use case, where you might have bank statements or credit card statements, we need to slightly expand this automation. I'm going to show you how that works in a second, but let's first focus on this much simpler use case where you have one invoice for one expense.
In that case, what we want to do is click on a step and say, "Please give me the AI," and I want to write a custom prompt.
Now, a custom prompt will be to tell you, "You are a personal finance assistant. It is your job to take a look at the attached document and extract the most relevant information for our finance tracker. Please extract the purpose of the invoice, the product name, the amount, and the date of the purchase."
Perfect! Very simple prompt. You're going to, of course, adapt it if you want to extract more information, but this gives us a great starting point.
Now, again, the reason why Relay is so good with that is because it makes it really easy to get these more advanced AI workflows without knowing too much about how it actually works behind it.
So, all we need to do is now under additional context go in here and say, "Okay, please attach the file that we get in step one to it," so that we have the prompt together with the file.
We don't need to search Google or access any websites, but what we want to do is define the output. This again makes it much easier.
For example, if you use this with Make, then what you would need to do here now is define exactly, "Okay, please output this in JSON output." You would need to write it in the prompt here.
What we can do is simply go in and say, "Okay, please give me first a text field. This will be the name. Then give me a number field. This will be the amount. And last but not least, please give me a date field."
So, under more types, we can take "Date," and this will be the transaction date. Let's just call this "Date."
You want to make sure that if you have more complex prompts and want to extract something specific, you should match or at least explain here in your prompt what should be filled in here.
If the model returns an error, we will fail. All we need to do is click on "Test the Step," select our file from the Whimsical invoice, and then we can click on "Test" to see whether it extracts the data the way we think it should.
All right, and after a few seconds, we see the automation has been completed successfully. We see, okay, date: 28th August, name: Monthly Plan, amount: $12. Perfect!
Now, one thing that we see, though, is like "Monthly Plan." We can't figure out from this what monthly plan, so we should expand our prompt a little bit and say, "So we want a product bought, name, and company," so that also adds Whimsical in there.
We know that, and then the amount. But we don't need to test it again, so we can just click on "Continue" with the next step.
All right, we want to now create a new entry in Notion. So, we click on plus and select Notion from our connections and say "Add a page to a database."
Now, again, if you use Notion for the first time with Relay, you will have to go through the authorization process and connect it.
During this connection step, it will ask you what pages or databases should it have access to. Ideally, you already give it access to that database with the cash flow items.
If you forgot that or you have already used Relay and now need to connect this, then you need to go over to Notion and make sure that Relay can access that specific database.
To do that, you can simply navigate to the parent page in which all your databases live and click on the three dots in the top right corner. Under connections, you want to make sure that Relay.app shows.
If it doesn't show, go on "Connect to" and search for Relay. Here, you'll be able to connect it.
If you authorized Relay already for your Notion package, I can now go into my database and say, "Please give me my cash flow items."
On cash flow items, I can now choose which fields populate. So, I can say, "Please map our name field here on our database. Please map this to the AI output for the name. Then please map the date for again our AI output for the date. And last but not least, please map the amount to the AI output from the amount field."
That's the very basic setup where we just now push over the entries from the extracted PDF or image to Notion. That would be a great starting point.
But we probably also want to automate the part where it has to select the corresponding month. So, let's add that quickly.
In order to do this, we need to add two steps to our mod. We need to first figure out what month a transaction happened in, and then we need to search that month as a database item in our month database in Notion.
Now, we could actually just expand our prompt and ask ChatGPT or whatever AI model we use, "Please also output the month," and then map it to a field and then use that.
But let's learn a little bit about Relay and how it works. So instead, what we're going to do is we're going to use a data transform.
Under utilities, we want to transform data, and we want to say, "Please take the AI output of the date and transform this."
Now, what we want to do is we want to make sure that we format this as text, and we want to format it as the actual month.
So, we can scroll down until we see, "Okay, we want to format this month at this date as the January option," and we can click on that.
That's the first step. Then the second step is we want to search that month in Notion.
So, let's go in and say, "Okay, we want to use the find pages of..." We want to search in our months database and filter by which we want to search.
We want to make sure that the name of that month is exactly the transformed data text output.
We can also say, "Okay, what should happen if nothing is found?" In this case, let's say, "Let's fail." If more than one page is found, pick the first one.
As you might know, this can, of course, start to fail once you have your next year and the next months with the same name.
There are a few ways to troubleshoot this. The easiest is to simply, when you go to the next year, add a filter here that you always do that for the current year.
But let's keep it simple for now and just pretend we only have every month once in here.
We have our general structure ready, so we can actually start a test run and just see that this actually works as intended.
So, let's click on "Start a Test Run." We can pick a file to test it with and click on "Test Run." This will open this other module where we can have it run all steps.
Now we can see, hopefully in real time, how it will extract the information using ChatGPT, then transform the data, and then hopefully find the month where the date was August.
Actually, throw an error. Okay, so now we can do some troubleshooting and we can see why did this automation fail.
Okay, error from Notion request to integration timed out. This is actually a fairly common error that you might run into when you build an automation, so it's great that we have it here.
That's because the Notion API rate limits how many requests you can do, and sometimes that just means when you send too many requests at once, it will time out.
Now, here we actually only send two requests, so it's probably more because the Notion API is a bit under heavy load.
So, what we can do in this case, just to be on the safe side, we can add a delay or sleep in here.
So, let's look for "Sleep" or actually "Delay." I always forget how it's called. Is it under flow control? Yeah, "Wait for Time" it's called.
Okay, let's say we want to wait for one minute before we run the next step. That would fix it, particularly if you have a lot of requests and the Notion API is overloaded.
It doesn't happen often, but we just need to rerun the automation.
Let's do it with this, publish, and upgrade the active run. Publish, and then let's go back and start another test run.
All right, this is looking better. The run is complete, and if we head over to our Notion database, we see we have now the monthly plan with Whimsical, $12, and the 28th of August.
It connected it to August. I did create August, of course, before I did that so that it could find that month.
If you wanted to create a month in case it doesn't find it, that would expand the complexity a little bit.
But that's just one last thing that we need to change for sure. We need to make sure this is labeled as an outflow.
So, let's go back to the workflow, update it, and make sure that when we add a page to our cash flow items, we also, as one more field, set the type always to outflow.
That doesn't change across tabs; that's always the same.
So, this is now your base template to extract all the expenses that you will have where you have an individual invoice.
You can, of course, easily adapt this to, on the other hand, extract your inflow. If you have varying inflows, the same process, right? You would upload it to the different folder.
You would duplicate this whole automation, and you just make sure that it looks at the file in the inflow folder.
When it creates a new page item, it labels it as inflow rather than outflow.
But what about if you have, for example, a credit card statement and you need to extract a lot of line items from it?
Well, it's a bit more complicated, but it's also possible. In order to do this, let's actually take this workflow, duplicate it, and then modify it accordingly.
So, this one will be our automated finance tracker outflows or line items. The typical use case is you have a credit card statement, and you have a lot of individual things.
You don't want to just have the sum, but you actually want to see what you spent things on.
In this case, what you need to do is modify your prompt, and we need to ask it not to only extract like a sum, but we need to ask it to create a JSON object and an array of all these individual elements.
Which might sound complicated, but don't worry. Again, this will make it super simple.
So, your job is to take a look at the attached credit card statement and extract every single line item.
For every line item, please provide the name, the amount, and the date of the transaction. Output the result in a JSON object.
Then we need to redefine our output. So, we're actually going to remove these elements here, and instead, what we want it to do is under more types, we want it to give us a JSON array.
This array will be an array of JSON objects. A bit complicated, but again, don't worry. This will make sense in a moment.
So, let's call this "Line Items." Save it, and then in here, we can now define the nested structure.
So, what are the elements for each individual item in that list? That would be, again, the name, the number, and the date.
All right, perfect! So, this is the modification that we need to make on the AI prompt level, and this would then give us the desired output of having all the individual items extracted.
Now, very importantly, if you have a mixed situation where you have some line items and some individual invoices, the easiest way to do this would be to have just different folders for that.
Then different automations: one that looks at the individual outflow, one for the other. Of course, you could make this automation more complex and first determine which one of the two it is, but it's much easier to do that sorting step manually and just upload your credit card statements to one folder and your individual invoices to another.
Next, after we extract this list, we need to make sure that we iterate over the list so we process every single line item separately.
In order to do that, we need to click on plus here and then go under flow control. There we have an iterator, and here you see that we can now select a list.
So, we can select our AI output and our line items from before. One important limitation currently with Relay.app is that you can only have 100 iterations per run.
So, if your credit card statement has more than 100 individual line items, you need to add a bit more complexity to this. You might have to split the array into several arrays.
There are a lot of workarounds to it, but let's focus on the base version here just to get this up and running.
Now, as you can see, we have inside our iterator, we can now define different steps for it to go through.
We need to make sure that we transform the data, find the month, wait, and add the page to the cash flow items for every single item here.
So, all we need to do is drag it inside. We say, "Please transform data, please find the page, have this in different order, and then last but not least, add the page."
That didn't work with the resorting, so let's try it this way. Can we grab it here? Perfect!
Transform data, find the page, and add the page. Of course, we have alerts on all of them because we need to remap the data.
So, instead of taking this date, we need to have the JSON data date. For finding the page, we will still say, "Okay, please find exactly from the transformed data the text element."
That works, and then last but not least, under the cash flow items, we need to make sure it's not the general cash flow. Sorry, cash flow item is correct, but here we need to then go in and swap out the always for the JSON data.
So, this would be the name, the date would be the date in the JSON data, and then the amount would be also the amount from that JSON data.
Perfect! That's pretty much it. Oops, got to save time. Date, save, and then everything should be correct.
Oh, let's see. Yeah, we need to also authorize Notion. Sometimes it asks you to reauthorize a different tool because your permissions are set to account.
So, we just click on authorize, and then perfect! Now we should be able to confirm everything, and we can test this workflow as well.
As last time, we click on "Start Test Run." We can then again look for our files, so we have a sample credit card statement. We create a test run, and again, we'll go through it to see whether ChatGPT can correctly extract data and then iterate through all of our elements here.
Right, and we see now the iterations are currently running. For every single iteration, it will go now through and patch the data from Notion.
We actually forgot to add the wait part, so we should make sure to fix that. But it will grab every single element and hopefully add it correctly to our database.
Perfect! So, we have all our sample credit card expenses in here now, and of course, our months automatically calculate our total spend across them.
If we had categories on them, we would categorize accordingly also the breakdown here.
Now, I did say fully automated, and there's still one manual step that we have to do in our current setup, and that's to apply a category to it.
Now, it might, of course, be a good idea to go through your items and apply these categories yourself just to be sure you're very specific with them and actually realize what you're spending your money on.
But in case you also want to automate it with the help of AI, well, you can!
For this one, what we need to do is first start this trigger with Notion, and we want to make sure that a new page is added.
So, we basically trigger this off anything being added to our database, and we'll pick, of course, our cash flow items database.
We could add a filter to it, and we actually should because we probably want to look at the ones where the type is an outflow.
Then, as we'll in a second, pull all our example credit card statements in here. So, perfect! We can click on done here.
That's the trigger, and then the action that we want to take is again an AI action, and we want it to look at our expense and tell us, "Okay, what was this expense about?"
So, in this case, we'll ask it, "Please look at the expense provided and identify the best category to categorize it within our finance tracker."
Now, very simple prompt. You can, of course, expand that. A good idea would be to give it some guardrails and to make sure that it only selects certain categories because otherwise, you risk it keeps labeling things differently.
So, what I would recommend, the easiest solution, is to just in here write your categories that you want to have labeled.
So, let's say we want to have categories to choose from, and that could be travel, groceries, subscriptions, and other if no specific category applies.
Now, of course, you can make this even more robust. You could have a database of your categories in Notion, pull that in dynamically to have it choose from it, and so on and so on.
But this is a very good starting point. And, of course, another tip for your prompt writing: if you do this for business and you want to label it for that, adding more context around your specific situation helps it to be more precise.
The context that we want to put in will be from the page, the name, and that should be pretty much it.
Then we can just have it render some text, and this should be the category.
Perfect! Now, with this category saved, we can then go to the next step and say, "Okay, please now in Notion update the page."
So, please update the page that we had from the first step and please update the category field and set the category to our output.
You get a warning here that it might result in an error if this is the wrong type, but for this case, Notion will accept the text version, so that should be fine.
Now, let's just start a test run again to see whether it works properly.
So, we have here just our sample credit card expenses. Here, of course, it won't be able to pick the specific category, but it should actually just tell it that it is an "Other" expense.
So, let's see where it works. All right, this looks good! If we move over here, we see, okay, sample credit card expense. It has now correctly been identified as "Other."
Now, all that's left is to build a finance dashboard in Notion.
In order to do that, we will first turn all our databases into pages. That's usually what I like to do while building. I like to have them as inline options, so it's just easier to jump between them.
But then when it's time to build a dashboard, it's best to have them in their separate pages and move them in the backend.
So, for cash flow items, I'll probably take the list item for the month, and we have the calendar with the specific one.
Then for the year, probably just take the big calendar. Perfect! Then we can save this and call this "Backend" and move our pages in there.
Of course, if you have your own prop backend set up in your Notion workspace where all your central databases live, then you should move them there.
Next, let's get a bit more space and turn on full width on the page. Perfect!
Now it's time to think about what are the most important things that we need to see when we open this page.
So, what I would like to see is I would like to see my last 10 expenses and then the current state of the month.
To do that, I will type "/call," and actually, let's do three up here. So, let's do here our quick H2 for last expenses, H2 for current finance status, and then another one for analytics or something like that.
Of course, if you have a smaller screen, you might want to stick with two columns, but I have quite a bit of screen real estate to work with here, so I like this three-column layout.
Let's add a divider below them just for some nice visual parts on there.
Then let's add our lists. So, actually, here on the last expenses, let's create a linked view database, and we want to add our cash flow items.
Let's take this as a table view. That's perfect!
Then what I want to do is I want to first add a load limit, so I only see 10 pages. Then I want to add a sort, and I want to sort this by the date, and I want to sort it by date descending.
This makes sure now that I only see the last, the newest 10 items. I can then hide my database title just for a cleaner view.
To make it even cleaner, I can go in here and just add a space as the view name and then the icon for it, and this creates this really, really nice minimal layout here.
Now, in order to see just the relevant info, I will resize these columns a little bit. The date is great; that's super useful.
Then I will hide all the properties I don't need. So, I go into properties, and I want to hide the type and the month.
The category I want to see because I might want to be able to assign it, so I'll actually make this a bit smaller.
That way, we have more space to actually apply the categories here, and it all still fits on this screen. Perfect!
That looks pretty good. Now, let's go to the current financial status.
So here, again, we will say create a linked view of the database, and this time we want to pick our months.
Now, for months, let's choose a different way to display this. We could, of course, use this with a table, but in particular, if you only want to show one month, it's a bit of overkill, and it's hard to fit all the information here.
So instead, what we're going to do is create some helper properties. These help properties will just help us to make sense of the data that we're displaying.
You'll see in a moment why. So, let's call this "Display Total Spent." All I want it to say is "Total Spent," and then I would also like this to be bold.
So, I'm going to add style, and then in the brackets, I will just add a "b" to it, which makes the whole thing bold.
You see, in a table view like this, it's not very useful, but it will make sense in a second.
So, we have this, and then I want to see maybe also my total income. Sure! So, let's take our duplicated property here and just call this "Total Income."
Actually, in order to make this a bit more colorful, let's have our income in green and our spent in red.
Perfect! Now what we can do is we can go in here and say, "Okay, layout, please show this to me as a gallery."
I don't want to show the database title; I don't want to show a page view. I just want to have the individual card.
You might already see where I'm going at here. I will change again this to the minimal look, and now what I'm going to do is I'm going to turn on as the properties the total spend and total income.
Then we turn both of these on and then drag these numbers below.
Now you see why I have these divider properties because otherwise, we just see the number here, and it's very hard to make sense of the number to see, "Well, is this income or not?"
All right, but like this, it's much better. Then all we need to do is make sure we only show the current month.
So, for that, we have a few options where we can do it dynamically. Let's put this one just actually use a very simple filter.
We want to have the month currently, what is it? It's September. That's all I want to see.
But of course, if you set up a smart filter, you just set the date that the month lasts for and then have it filter for the current month.
But again, this does the trick here. Oops, let's put this back.
All right, this is taking shape nicely. All that's missing is now some analytics.
For analytics, let's go ahead and create another linked view database, and now I want to have my expenses.
So, we're going to take my cash flow items again, create a new view, and this time let's add a chart.
So, we don't want to show a title here, and then let's say "Edit Chart."
What I want to show is I want to show first a breakdown of the categories that I spend on. So, I will show the category. That's perfect!
But then what to show? I don't want to show the count; I want to show the sum of the individual expenses.
We can see, okay, most of the categories we currently have not categorized, but it's also because we can't show both expenses and inflow and outflow.
So, what we need to do is add a filter to this and say, "Okay, only show me things where the type is outflow."
Of course, we could also filter for the current month, so we say, "Okay, and the month is September."
Again, if we do it like this, we need to update it on the individual months to update for the current month.
But if you have a date behind the month, you can also just say, "Okay, wherever this is the current one."
Perfect! So now I see at a glance, "Okay, this is how I spend across the categories."
Then let's call this "By Category," and then let's create actually a second chart.
For this one, we just want to see maybe our month-over-month expenses.
So, let's duplicate this view, call this "Month Over Month," and here what we want to show is we want to show the month.
We want to make sure that we don't show any months that don't have anything, and then within the month, I want to show the sum of what we spend in each month.
Now, this again shows still filtered for September, right? So we need to actually go in here and remove that filter.
Remove it. Perfect! So now we have our different months. They are in the wrong order, so we need to go sort and make sure we don't sort A to Z but manually.
So we want to have July, August, September. Perfect!
Then if we wanted to, we could then further say, "Okay, please break it down by categories."
So under group, we pick category, and then we now have the individual categories broken down.
We see, okay, no categories because in July and August we didn't assign categories, but for September, we see, okay, groceries, travel. This is how it stacks up.
All right, perfect! This is looking already pretty good for a simple financial dashboard that shows you pretty much everything you need at a glance.
But since I promised you this would be fully automated, let's now also build this thing where the months update automatically.
In order to do that, let's go first to our month and make sure that they have actually a date property.
So, we will add a date and call this "Duration." For every month, we will set, actually, when this month is.
So, let's do it for now just for September, but you would, of course, do it for every single one.
In order to automate fully, you can automate also the month creation, but for now, let's just do this manually here for this one.
Then we can go back to our finance tracker and can go to cash flow items.
On cash flow items, we can now pull in the actual duration via a roll-up.
So, we can say, "Okay, please show me the month duration." Since this is a helper property that we actually don't really need for this, it just powers some other features, I often like to add "Helper" in front of it and give them this generic gear sign just as a visual way to separate them from other properties that actually do something.
If you work in a team environment, it's a great idea also to add a property description to make sure your team isn't confused by what the purpose of this property is.
We want to pull in from the month the duration. Perfect!
So now we automatically have the corresponding duration here, which means, oops, that was duplicated. We don't want that.
We want to hide this, actually. Hide it. But now what we can do is we can go back here to our filters and adjust them to be automated.
So, what we will do is say, "Okay, here for the filter, instead of saying, you know, name September, let's delete that and say instead, 'Okay, I want it where the duration start date is relative to this month,' which shows me September."
Next month will automatically show me October.
Then the same here, right? Same idea, not on month-over-month but on the by-category one.
We go also in the filter here, filter two rules, where the helper month duration is relative to the day is this month.
You see exactly the same result as before, but now as the month rolls over, this will automatically update.
And there you have it: a fully automated finance tracker in Notion, which happens to be a great use case for one of Notion's most recent feature releases, Notion charts.
But there are also a lot of additional amazing use cases for this feature. So, if you want to make the most out of Notion charts and learn everything there is about visualizing stuff in your Notion workspace, well then just click here, and I'll see you in a few seconds!