When I talk to other people who use Notion, one of the most common missing features that I hear about, which I personally agree with, is the lack of a timer or a stopwatch function. There is no way in Notion to start a timer, to see how much time has elapsed, to stop it. And that means that you can't really do something in Notion that a lot of other productivity apps let you do, and that's time tracking. Now, if you work at an agency, if you work with clients, and you bill by the hour, time tracking is an obvious benefit to you. But even if you're just doing your own work, time tracking can be really, really useful for helping you to literally see and record how long it takes you to get things done and then to compare that against how long you thought it was going to take you to get a task done, your estimates. And that can help you become more effective at daily planning. So, it would be awesome if notion supported this. And it kind of sucks that it doesn't is what I would say if it actually were impossible. But you can in fact build time tracking in Notion because Notion gives you everything you need to build some really powerful time tracking setups from the basic building blocks that are already in the app. And you can build them without needing to integrate with any thirdparty tools like Toggle Track. And you can do most of it for free. Check this out. In this daily planning dashboard that I've got set up here, uh which I covered in my most recent video on daily planning, I've got a time tab. And for every task that I've planned to do on this particular day, there's a start button. There is an end button and I've got a little timetracked property right here. So I can very easily start a time tracking session. And once I'm finished with that, we can go ahead and end it. So I'm going to let that run for a couple of seconds while I dig into something else here that's even perhaps cooler. If we go into this uh clear email inbox task, you can see I've created a history tab here. And this actually shows me the time that I tracked on each instance of this recurring task. I even built a time chart so I could see how many minutes it took me on each instance where I did this specific recurring task. And that means I can track whether or not I'm getting more efficient over time or perhaps less efficient. And if I'm getting less efficient, I can go ahead and make fixes. So what I want to do today is show you how you can build time tracking into Notion. And it's actually quite simple. So here we go. We're just going to jump right in with this little demo that I've created here. Now I'm going to show you time tracking at a few different levels. And we're going to start extremely simply, but I will say you probably want to know at least a little bit about Notion databases before diving into this. If you haven't messed with them before, I think you'll probably be able to follow along, but I do have a notion databases for beginners video, and I'll link that in the description in case you're curious. So, uh, assuming you know a little bit about databases, here we've got a very simple tasks database, and this shows us how we can do time tracking at the simplest possible level. In addition to our default name property where we've got some very important tasks that I need to do because of course you've never seen me and Spider-Man in the same room at the same time. You do the math. Uh we also have a couple of date properties. We've got start time and we have end time. And then we have an extremely simple formula property called duration. Now I'm not going to be delving too deep into the formula syntax in this video, but every formula that I have uh created for this video is in the description down below if you want to study it. Uh but here this one is super duper simple. We've got the date between function. We're just comparing the end time property, the start time property, and we're specifying minutes as the unit. So, we calculate the number of minutes between the end time and the start time. And in the case of our test new web shooters task right here, it's 45 minutes. That is time tracking in notion. The way in which you would track a task is you'd click the start time when you're ready to start a task. You already have the current day on there. So, we just go include time. We could click now. And boom, we have started time tracking as it were. When we're done time tracking, we come into the end time property and we do the exact same thing. We include the time. I'll go ahead and hit now just to get that in there. And we'll just edit it to 10 minutes from now. So boom, we have just tracked 10 minutes of time. And at the simplest possible level, this is how you can do time tracking in Notion. Now, you might already be looking at this and going, just doesn't feel very good. And you would be correct. And of course, it's not nearly as good as what I showed you at the beginning of the video. If we go back to my dashboard here, I think it's been a few minutes. So, we can go ahead and hit this end button. You can see we've tracked 3 minutes of time. We'll go ahead and end it. And if we pop into our clear email inbox task now, we have a time view. And uh we can see we've tracked 3 minutes of time right there. Uh and it didn't require going into any date properties and doing manual editing like that, right? So, let's now start improving this. And we're going to do that in three different ways. Or rather, we're going to solve three specific problems. Problem number one, this is just not going to fly. Clicking into a date property, having to click include time, do all that stuff. It's super duper annoying, which means you're not going to do it right. So, we're going to make that way, way easier. We are also going to fix this formula property here because you probably don't want to track time in just numbers of raw minutes. If you tracked like I don't know 200 minutes on a task, you'd know if you do some mental math that that's three hours
Segment 2 (05:00 - 10:00)
and 20 minutes. But uh you don't want to do that. You want to see something nice like this. hours, minutes, and seconds. Even though Notion doesn't actually track seconds, you want to see that set of zeros there. Uh so we're going to fix that as well with a nice little upgraded formula that I'll share with you. And finally, we're going to fix the biggest problem, which is the fact that this kind of sort of isn't doing time tracking right now. And that has to do with the fact that a lot of tasks take multiple sessions of work. If I'm trying to locate the Green Goblin, I might take a lunch break in the middle of that, right? And I don't actually want to track the lunch break time. I want to track how much time I actually spent working on the task. And to do that, we're going to have to get a little bit smarter. That's going to be the final problem we solve because it's going to involve upgrading our database knowledge a little bit. So, let's wet our pallet or appetite, whatever that turn of phrase is, uh, and do the easier things first. So, first things first, I really don't want to click into this date property. And uh I can completely automate that behavior by bringing in some button properties. So, let's go ahead and do that. I'm going to go ahead and squeeze the title or the name property down here just so you can see more of what I'm doing. Uh and over here, we are going to find ourselves a button property, and I'm going to call it start. So, if I'm in a table view, I can very easily create new properties just from the table view itself. Uh, otherwise I would go into the settings here, go to properties or edit properties, and I could make a new property just like that. It's very, very easy in table view, though. So, I'm going to call this one start. Uh, it doesn't intersect with the start time because I cleverly named that one start time instead of start. And we're going to find the button type property. So, a button property, and I've got a whole video on this, by the way. A button property basically allows you to configure one or more uh sort of if this, then that actions that will happen when you click the button. And unlike the database automations feature, which you can access right here, buttons are completely free to build and use, so you can use them on Notion's free plan. So, we're going to drag this start button over here, and we're going to do something extremely simple. We're going to hook this button up so that when you click start, it goes ahead and starts our tracking here by filling in the start time. So, let's create a new task here. And let's think of something Spider-Man would do. Um, catch the bus he was late for. At least the Toby Magcguire one was. And uh we can go into our start property. We can edit the automation like the automation engineers we now are. And you can see that in the button sort of modal here. The when is always going to have this single trigger. Button is clicked. But the do section down here gives us a lot of flexibility. And in this case, we're going to do something very simple. We're going to do one single new action. It's going to be called edit property. We're going to find our start time property. and we're going to set it to this nice little dynamic timet triggered value. And that is all we have to do. So check this out. Now when I want to start time tracking, instead of going in here and setting all these different values, I just go boom, there it is. And we can build the exact same button for our end time property. In fact, we can make it easy on ourselves. We can just rightclick the start one, duplicate the property right here. We'll go ahead and uh change its name to end. And then if we go to edit automation, literally all we're going to do is change the start time property to the end time property. Set it the time triggered and we are done. So now we can end our time tracking. We've tracked 1 minute. I think that is about as much time as it would take Spider-Man to catch the bus he was late for. So that seems like a pretty good example right there. And with that, we've solved our first problem. Now starting and ending our time tracking is near effortless, which means we've removed the friction involved in doing it. and that means you're probably actually going to do it. Uh, so at this point, you've got a fairly usable time tracker, but you still have these raw minute counts here. And what if you had tracked a lot of time? Like what if for whatever reason it took uh Toby Magguire here, oops, I gave away his secret identity. Uh, what if it took him like many, many hours to locate the Green Goblin? Let's go ahead and set this uh time back here to oh, I don't know, 1:45 a. m. It took him 610 minutes. Now, maybe you can do the math in your head really quickly to see how many hours and minutes 610 minutes is. I can't do it while I'm on the spot on camera right here at the very least. So, let's go ahead and fix this up. Uh, and the way in which we're going to fix this is by making this formula smarter. So, again, this is not going to be a formula syntax lesson. For one, you got this AI bar up here that can write most formulas for you these days anyway. And for two, I'm just going to give you the formulas so you don't even have to ask the robot to do it for you. But, uh, thinking through it logically, what we would actually want to do, and what might be a nice little puzzle for you to try to solve for yourself, maybe pause the video, is we want to take this raw number of minutes, and we want to somehow subdivide it into a certain number of hours. And then we want to take the remainder, the number of minutes that don't fit into a nice little hour bucket, and we'll use that for our minutes place. And then we'll nicely format it as a string. in that sort of like 00 colon format. And
Segment 3 (10:00 - 15:00)
that's basically all we have to do. So, luckily for you, I've created a nice little time tracking formulas page that I will link in the description down below. And you will be able to just copy and paste these formulas if you want, including this really, really simple one. Uh, I'm also going to make a little template so you can just actually grab these time trackers and you can play around with them. Uh, and that'll ensure that your properties are named correctly. So you can copy and paste these formulas and uh the property names will not throw errors. So we're going to grab this second formula I've created. I called it a formatted duration formula. And you can see it's a little bit more complicated. But if you look in here, you can actually see the heart of our original formula. That's what's calculating the number of minutes. Everything else here is just doing the formatting. And it's a bit more verbose. Uh but it does some magic. So, if we come back here, we can replace the contents of our old formula with our new one. And boom, 610 minutes is apparently 10 hours and 10 minutes. And all of our other time tracking sessions also are now giving us time in the format that most of us expect to see it in. So, problem number two is now solved. And we're going to uh make sure that problem number two is solved in the next iteration, which is going to solve our biggest problem yet. and the one that's going to require us to learn some new database knowledge. So, like I mentioned before, what we've been doing this entire time is only kind of sort of time tracking. What it actually is, if you think about this in database terms or record terms is we are recording the time at which this work was started on this task and then we're recording the time at which work was ended on this task. In other words, the time at which the task was finished. What we don't really know, especially here for this 10-hour one, is how much of that time we spent uh checking our phone to see like the latest Pokémon card prices. Um how much time was spent eating a KitKat, taking a nice little siesta, how much time was spent goofing around on Overwatch since the new season is so good. We don't know. And that is because we're not really tracking time here. We're tracking just when work was started, when work was ended. So, if we think about it, and again, I'm going to have you think about it before we get into the actual nitty-gritty of the database setup. If you think about it, how would you do this? How would you upgrade this setup so you can more accurately track the time spent on a task, especially if you started and then stopped, took breaks, sometimes did multiple sessions, maybe multiple Pomodoro sessions. Well, I'm not going to keep you in suspense because you're allowed to pause the video if you want to. You need a second database. And that is because databases, and this is really, really important to your understanding of notion and building notion setups. So, pay attention to this. Databases have rows and a row needs to sort of conceptually represent some kind of entity. In this case, in this tasks database, each row represents a task that needs to be done. What it doesn't represent is a singular session of work on that task. So the only thing we can really do is track the time again at which it started and the time at which it was finished. Now you could do some bad database design and you could maybe have like multiple pairs of start and end time. So you could have like start time first session, start time second session if you knew that you were only ever going to do like two sessions of work on every task. Uh but there's a much better way to do this. And the nerds among me who are watching this video for some reason, uh the nerds among you, not me, uh will be screaming like, "Yes, first normal form, second normal form, database normalization. " Uh if you don't know what that means, don't worry about it. But there's a very cool video on YouTube with a Simpsons character in the thumbnail, which will teach you it if you do want to understand it. Uh so you're going to learn a little bit of what goes into that here and a little bit of good database design by looking at this. So again, a database contains rows and every single row represents some sort of singular conceptual entity and most importantly the properties that are on the database, they need to rely on the row itself. In other words, each property here needs to contain information about this conceptual entity. So down here, we've created a second database called work sessions. And this database has a completely different purpose than the tasks database up here. Instead of representing the conceptual entity that is a thing that needs to be done, a thing that my mom yelled at me to get done, a task down here, this is almost like a journal. This every single row here in this is recording a session of work. I started working on something and eventually I finished working on it. Uh maybe I didn't actually accomplish it, but I did stop working because I needed to uh grab a potato chip and eat it
Segment 4 (15:00 - 20:00)
instead of continuing to do homework, right? Uh so this is what we have here. We have a test session. And actually the name kind of doesn't matter here right now. Uh but what does matter is that we've recorded the start time and the end time, not of when a task was necessarily started and completed, but when we sat down to start working and when we finished working. And again we have the exact same original formula here. We have duration and I've uh sort of added minutes to the name of the property just to sort of clarify that is what we are tracking here. Again it's the exact same formula date between end and start time. Minutes is our unit and that helps us to calculate uh how many minutes was spent on this work session. So the one thing that we're missing here on this work sessions database is a way to track which task we were working on. Now, back in ye olden days when we had wagon wheels instead of rubber tires and we didn't have spreadsheet applications, we had like paper journals, we would do something like literally writing down what task we worked on. So, we'd edit this here and we'd say like do a flip session one um and you know then you could like look at the number of sessions you did for do a flip and you could mentally calculate how many minutes across all of them that you spent and that would be time tracking. But of course, now we have these magical things called computers, which these days we can even talk to and they'll talk back. It's pretty cool, right? Uh but we don't have jetpacks yet, so don't get too excited. So, what we can do now is use the power of those computers to do all the calculations for us. And the way in which we're going to do that is by connecting these two databases together via something called a relation. And before we build a relation here in this example, I want to go over to another page I set up that's going to very clearly explain what a relation does. So a relation is a type of property that you can put on one database. And it allows you to relate a row in that database to other rows. Sometimes can be in the same database, but can also be in a completely different database altogether. So this I think makes it pretty clear. We have a movies database with some movies here and we have a director relation property. Now this director relation property is connected to a paired relation property on another database called directors. And what this allows us to do is associate movie records. Again, every database has rows and every row is representing some sort of consistent conceptual entity. So here we would just want to have movies. Uh here we are allowed to relate our movie records or rows to director records or rows over here on our director's table. And you can see if I go ahead and I pick the director of Titanic, which oh man, who was it again? H you're probably feeling very frustrated right now because this is obvious. It's clearly Greta Gerwig, right? No. Uh if I pick James Cameron here for Titanic over here, it actually popped in. Now Titanic is listed underneath the movies relation for James Cameron. So that is what relations do. They allow us to connect records together. Sometimes in the same database like in the case of parent tasks and subtasks in a singular tasks database or in uh in many cases perhaps more often across multiple different databases in this case movies and directors and in the case that we were building over here tasks and one or more work sessions that are related to that task. In other words, a record of work we did on do a flip or test new web shooters or whatever it is. So the way we can make this connection is we can create a property. It's going to be called uh I think I'll just call it task. That makes sense. And we're going to find the relation type right here. And then we're going to be asked to link it to a data source. Now you can see I actually have many different databases of the same exact name. But luckily I'm smart and I use color coding on my icons so I can tell which one that I'm looking at. And you can see here if you've never created a relation before, we can see that this one indicates this little I indicates that this is uh this database. So you could do a same database relation, but what we really want to do is relate this to our tasks database. So now we've got our new relation property. It is called task. And we're going to turn on the two-way relation option here, which allows us to create that paired property. You saw it earlier in the movies and directors database. We can pop over to that again. uh we have that paired property director is a linked to the movies property over here. You actually don't have to do that. You can do it without a two-way relation, but in this case, I'm going to call it work sessions. Now, you could normally call whatever you want, but since I pre-created the formulas with the proper property names in there, I got to make sure I get it right. We'll hit add relation. And what you're going to see is we have a task relation property here on work sessions. And then we have this now paired property, this two-way relation. Uh, we have this other property on tasks. So now when I go ahead and associate this work session
Segment 5 (20:00 - 25:00)
do a flip session one with the do a flip task, check that out. It's going to pop in here. So now this session of work is related to the do a flip task. And if we did another session of work, do a flip session two. And while I'm typing this, I will mention that we're going to make it way easier and automatic to create these. But just for illustrative purposes, if I do a flip session 2, we go ahead and just say uh include time and now 12:04. And uh for whatever reason, I just know in the future I finished this at 1 p. m. So I'm going to go ahead and record it there. We've got 56. So now conceptually at least in our minds, we know that we have 29 + 56, which is kind of like 30 86, but it's actually 85. So that is 85 minutes tracked or 1 hour and 25 minutes tracked on this particular task across two different work sessions. Now if you don't want to do that crazy under pressure on camera uh mental math there we can again let the computers do it for us. So here's how. So what we want to do is go up here into our tasks database and we want to create a formula and the formula is going to be called duration. And we actually had the duration formula earlier on our more simple which is actually better expressed as the word simpler fun fact on our simpler uh single database time tracker. So we're going to go formula here duration just like that. And if we go back to the time tracker you can see that what we had earlier was that kind of crazy gobbledygook formula where we were just taking the difference between end time and start time and then formatting it. But what we want to do in our new setup is a little bit different because we are not taking the difference between start time and end time. Instead, we want to add up all of these duration in minutes properties down here for each related work session. And let's go ahead while we're thinking about it and relate that second session to do a flip. Again, this is not going to be a crazy formula lesson. I literally have created the final formula which you can copy and paste. But just to show you a little bit of theory here, if we go into the formula editor and we find our work sessions relation, you can see that right now what this formula outputs is a list of uh all of the pages related to this particular page, which in this case is do a flip. So we've got session one, session two. What we can do is pass it into the map function. And with the map function, we could use current and we could do dot duration minutes. And that gives us a list with those two minute values. And then because you don't want to do that crazy under pressure mental math in your head, we could just do some. And there it is, 85 minutes. And that is proper time tracking. That is looking into our journal of records that actually represent uh a session of work, adding up all the sessions of work that are related to a specific task, and giving us our final minute count. Now, for the past resistance here, uh, we're going to grab our final formula, and hopefully I didn't screw something up because that would be quite the, uh, splat on my face in terms of this flourish. We paste that in there, and we get exactly what we wanted. We get our nice formatted duration, which represents the total time across all sessions that we tracked. So, to finish this up, we want to bring back in those buttons. Earlier, we created these nice little buttons which allow us to start tracking and end tracking extremely easily. And we want to bring that into our more advanced and proper setup. But it's going to be a little more complicated than what we had here because as a bit of a recap, all we needed to do here was just edit a property of the exact same page and we set the start time to the time triggered. Here we're doing something a little different. We actually need that start button not to set a time or date here or here. In fact, we can just hide these. These are kind of no longer needed, at least for time tracking. What we need to do is have that start button actually create a new entry in our work sessions journal and record the time. And then uh somewhat more complicatedly, and I'm not actually sure if that's a word, but some more uh somewhat more complicatedly going to make it a word. Uh the end button needs to actually find the correct entry and end it. So let's start building those. We're going to find a button property in this list of property types. Once again, it's called start. I'm going to go ahead and make it nice and narrow because it's just a button with the word start in it. Uh and we're going to go ahead and build out that automation. So this one's actually pretty easy to start with at least. Instead of editing a property, we're going to add a page to a different data source. And remember, if you've not watched my video on Notion data sources, Notion kind of renamed databases to data sources and then they allow databases to contain multiple data sources. And then I feel like they sort of hidden that capability because it's really confusing. Uh, but if you're curious as
Segment 6 (25:00 - 30:00)
to why it says data source, that's why. Check out that video link in the description below if you really want to understand the nitty-gritty. Uh but for the most part, if you're not doing multiple data sources on the same database, you can use the terms interchangeably. Okay, so we're going to say we're going to add a new page to the work sessions data source here. Uh the name kind of doesn't matter. Now, we're going to give it a name just to be fancy, I suppose, but what really matters is that we set that start time to the time triggered. And what also matters and this is really important. We set the task relation property to this page. And this page right here, this dynamic value, this page represents the page on which the button was clicked. So if we click it on the do a flip page, um the task relation property is going to be set to the do a flip page. And for the session, we can do something that just sort of makes it descriptive. So let's just go ahead and uh do a string called session colon space. We'll do plus. We'll grab the this page. Um, and honestly, that's kind of all you need. You have the rest of the data you need outside of the name property. And to just get a little nerdy for a second, if we weren't building this in Notion, if we were building this in like an actual SQL database, we wouldn't worry about a special name here because all the information we really need is right here. What's the time? What's the related task from our tasks table? That's the SQL term for database in Notion. Um, and then we'd have like a unique ID that automatically gets generated. So, the name really doesn't matter and I'm just kind of putting it there for aesthetic value. Uh, so we'll hit save. And now I'll show you how it works. So, let's say that uh we're going to start locating Green Goblin. We'll hit start. Boom. There we go. We've got session locate Green Goblin. We've got the start time recorded. That is now. And very importantly, locate Green Goblin is our task relation value, which means we already have this brand new session related to the locate Green Goblin task. Step one complete of our little button adventure here. Uh, now what we need to do is add the end button. And I will tease the fact that actually we're not done with the start button. And if you want to try to puzzle it out in your head while we're doing the end thing, that'll be a nice little puzzle for you. Um, because yeah, the start button is kind of incomplete. But I'll reveal why that is a little bit later. So, we're going to go ahead and just duplicate the property. I love duplicating properties. It reduces clicks, makes things nice and easy, and uh as an engineer, I am lazy, but questionably brilliant. Let's go into edit automation for end here. And we're just going to go ahead and get rid of add page to work sessions because we already know that when we click end, we don't want to add a page to work sessions. We want to find the current page that represents the current work session and we want to sort of just close it out. Add that end time property value. So let's go ahead and get rid of this action here. And now let's think. Let's use our minds here. How do we even know which page to get. Now there's a couple of different ways you can do it. In this extremely simple example, which by the way, I will note that we are not building for team use cases. We're building for an individual use case. So, we're not even bringing in people properties, things like that. Uh, but in this very extremely simple example, usually you're only going to be tracking one task at a time. So, what we could do is do the edit pages in and we could do select data source. We could find our work sessions data source right there. And then we could do a filter and we could just say where uh end time is empty. And uh that would pretty reliably find the one task or the one work session rather uh that has an empty end time and then we could just go ahead and set that end time. I want to show you a smarter way to do it though. Uh and this will actually teach you a little bit about buttons and how far you can take them. So instead of just filtering the data source directly, what we can do is grab the define variables action here in our button. This is a extremely versatile action here. Um, and though I have criticized Notion for like leaving some really important features out of the automations feature thus far, like loops and things like that, define variables does allow us to do some really cool stuff. So, I'm going to define a variable. I'm going to call it current session. And you will see that we have this nice little field which includes a formula icon. And that means we can define a variable that contains a lot of different kind of stuff including a list of pages. So, we are going to use the formula editor here to create a list of the uh of any work sessions that are currently not done for this particular task. And that list, I'm putting list in quotes because it's only ever going to be one or zero pages. Either that there's no currently running um session or there is one. So, it's going to be a list of either zero or one elements. So, what we're going to do is go with this page like that. We'll do dot work sessions. And if we left it at this, we would get a list of every single work session that was ever done for this
Segment 7 (30:00 - 35:00)
task, even the finished ones. So, we want to finish this up by passing it into the filter function. And we're going to go current. end time. This is representing the end time property of uh all potential pages in this list. And we're just going to compare it against empty. It's a nice newer functionality in notion formulas. You can literally compare, you can do an equality comparison against the empty functions output. Uh, which literally lets you check if something is empty rather than just false. That's kind of a new thing and I love notion for doing that. So, this will give us a here it is list of blocks because pages are blocks. Remember that. This will give us a list of I'm just going to say pages. Um, and it's going to either be a single page inside of that list, the one that is not done, or if we click the end time button or the end button on accident and we already had ended it before, that list will be no pages and simply nothing will happen. So, click save there. And here is the cool thing. If we go back to add action and we bring back in that edit pages in action here, what we can do is instead of selecting a data source, we get to select the current session variable. Now, I want to explain why we're able to select it. Because you're not always going to be able to select current session or variable that you define in this edit pages action. Very specifically, what your variable needs to be returning is, and we can look at it again, a list of blocks. And remember, when we say blocks in this case, it's pages. And it's pretty much always pages. Um, so if we are returning a list of pages, then we can actually operate on the properties of those pages in that list by choosing our current session right here, our variable. It's a really, really nice trick inside of notion buttons and automations. So here we're going to do the same thing. We're just going to go with end time, set that to time triggered, and save it. And now, as I've been yapping this entire time, we have located the Green Goblin. Or actually maybe instead of locating him, we actually just uh took a lunch break. So let's end for now. And you can see we tracked six minutes of time on that particular session for locating the Green Goblin. Now that means our end button is fixed. But think about the fact that I am imperfect uh like most human beings. And sometimes I'm forgetful. And sometimes what that means is I might already have a session of work running when I go click start. And that could mean I could have two sessions running at the same time and I could be tracking two minutes of work for every minute that I exist in this world. And until cloning technology comes into being, that's not a thing I can do. So as I alluded to before uh or actually outright stated, our start button is not complete. we need to add a guard. And this is actually uh something that's very important concept in systems design all the way from notion on the kind of simple end to like programming and building apps on the more complicated end. Um you want to add sort of guard conditions to guard against erroneous user behavior which is a $10 or 10 cent or 25cent term or whatever that term for that term is. Uh we want to guard against errors you know mistakes people make. In this case, we want to guard against the fact that they might click the start button before they've ended the currently running task. So, let's go into our edit automation one more time. And in this case, all we need to do is do an edit pages in. We're going to drag it to the top here. And we're going to find our work sessions database. And we're going to do what I showed you as the first option in the end button before. We're just going to say uh for any page where the end time is empty. So or go there is a currently running session. We're going to set that end time to the time triggered. Now again, I want to stress that this example is purposefully simple and it's purposefully single player. If you're trying to build a teamwide tracking system, you need to get a little bit fancier with your filtering here. Uh you would want to say like also end time is empty and also the person on the work session. You'd want a person property uh is the person who clicked or I think it's going to be is me. there's like this me variable there. So, that's how you would add that in there. But, I'm keeping this as simple as possible for this particular video. Um, let me know in the comments if there's like a lot of demand for a team version of it. Um, but that's kind of all you need. So, now if we hit save, um, and we started test new web shooters. So, now we have one work session going across the entire work sessions database that doesn't have an end time. And then we are like, oh, I need to do some work on locating the Green Goblin. We hit start. Now we again only have one running because the other one we created right here gets automatically ended before the new one starts. And that my friends is how you build time tracking inside of notion at least at a simplistic level. Now I'm going to make all of what I've
Segment 8 (35:00 - 39:00)
shown you here available as a free template in the description down below so you can play with it. And like I showed you near the beginning of the video, you can take this really far. And most importantly, instead of it being an isolated example here that's useful as a toy or useful for learning, you can build this into larger systems and you can integrate this into things that you may actually be using either in your personal life or perhaps with a team. You can do things like what I showed you at the beginning of the video. Let's go ahead and recap it. Now that we have sort of gotten the foundation and we understand what's going on underneath the hood, you already know when I click the start button on this clear email inbox task, it's creating a work session entry in my work sessions database and it's making sure that it's related to this particular task. And if I click end, it's going to find that work session. It's going to end it. And that means I can track multiple sessions of work just like you would on any other full-fledged time tracking app. Now, of course, we don't get the nice ticking up timer here. And boy, would I love it if Notion added that in the future. But we do get perfectly usable time tracking functionality. And even more important than that, with Notion and with all of the additional blocks and systems that we have at our disposal here, we can upgrade that and we can do things that most apps don't let us do. Like I showed you earlier, if we are building out a more robust task management system, we can build these tabs. By the way, check out my uh database layouts video linked below if you want to figure out how to build these tabs. But we can build these tabs that show us all of our work sessions. We can even get really fancy and we can uh make sure that we have time tracking on recurring tasks. And we can literally create charts like this one here that shows us how many minutes we took on each instance of our recurring task. And you can see here in this example, I'm getting more and more efficient over time at it. So, if you want to uh build this for yourself, you are now equipped with all the knowledge you need. And if you want to go further with things like charts, with things like these tabs and layouts, I have other videos on my channel that will teach you exactly how to do that. If you want all of this done for you, what I've been showing you as the example here, the bigger example, uh is a part of my ultimate brain template. This is one single system inside of notion that lets you organize your entire life. It comes with, as you can see here, a really powerful daily planning dashboard called my day where you can very easily choose the tasks deliberately that you're going to work on. And then you have this very nice execute session that keeps your focus on those tasks and keeps you from getting distracted by other things that you weren't going to do today. In addition to this daily planning dashboard, you've got the best task management system you're going to find for Notion. Seriously, it has recurring tasks with tons of different uh recurring intervals that you're not going to find anywhere else. We invested months and months of work into making that work. Uh they automatically process themselves. Recurring tasks work well with time tracking as you've seen. You can get a historical record of all the tasks you've done. And on top of that task management system, or rather sort of next to it and connected, you have a really powerful notetaking system that works very well with our web clipper flylighter for capturing research and highlights from the web. You've got goal tracking. You have a lot of other pieces that basically make this a one-stop shop for organizing your entire life and making sure that nothing slips through the cracks. You can find this over at thomasjfrank. com/brain. You also get built-in support and really, really great tutorials and videos, documentation, everything you could possibly need to customize the template and to make sure you understand how to use it. We have a support community where notion experts answer your questions. And as a thank you for hanging out with me today and learning some cool stuff about time tracking, you can use the code on screen right now to get 50 bucks off of any edition of the template. Once again, thomasjfrank. com/brain to get your personal copy of Ultimate Brain and to start organizing your life more effectively. And as always, thanks so much for hanging out with me today. If you want to uh further your notion knowledge, number one, I've got this task manager build guide video right here. This is probably my best current piece of content if you really want to learn the ins and outs of Notion. It'll teach you databases. It'll teach you a lot and it's also very practical. Also, we talked about my daily planning dashboard in this video.