📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

How To Set Up Recurring Projects In Notion (3 Methods)

Matthias Frank34:27

Transcription

If you use Notion for work, you're sooner or later going to run into this issue. How do you manage recurring projects in Notion? Whether it's onboarding a new client, planning a recurring campaign, or reviewing the latest deal in your pipeline, you don't want to have to reinvent the wheel every single time and manually add all the individual tasks.

So, in this video, I'm going to show you three ways to manage recurring projects in Notion. From the easiest one that barely takes 5 minutes to set up all the way to the most complex method that most of our clients end up using. Ready? Let's dive in.

To start with, let's quickly talk about what recurring projects actually means in this context. A recurrent project relates to everything where you have one big container and then a series of tasks underneath that should execute or at least populate in your system every time you take on that project. In so far it's different from simple recurring tasks, right? A recurring task might be something like at the end of every month do the taxes, right? Or every uh Monday morning write onboarding message or you know welcome message to XYZ. A recurring project on the other hand means [music] that there's a whole lot of steps that always have to happen in that way. So the question is now how do we preload them?

And the first method that we're going to look at is the template method. That's the one that takes barely 5 minutes to set up, is super simple to get started with, and the one that I recommend you first implement to see how it feels before you move on to the more complex versions. For this, you need to have your general project management system in place. So, at least a project database and a task database related to each other. If you don't have that yet, then pause this video now and check out my guide on how to set up project management for Notion, the general one, or one of the specialized ones, the Notion for Business or Notion for Venture Capital setup guides.

The example that I'm going to use here is from this Notion for BC setup. But again, basically all you need is a project database related to tasks. And then on this database, right? So you see this is our project entity. It is related to tasks. We have of course set up a database template already. So if I open up any of my entries in here, right, we have the usual effect of a dashboard where I can click into, I can see all the open tasks related [music] with this one project.

Now to turn any of these into like a recurring project template, I'm going to go here and I'm going to take my new project entry and I'm going to duplicate it. That way we have now this new template and I'm just going to call this, let's say, a new uh due diligence. Right? So this might be a type of a project that recurs quite often for us. So we want to create a separate template for it. In general, the dashboard can remain the same. We still want to dynamically pull in all related meetings, docs, and tasks, but we want to set up a certain set of tasks, right, every single time this executes.

Unfortunately, we can't just go in here, right, and create now new tasks entries. The way Notion templates works, right, is when the main entry gets applied, the related entries won't get duplicated as well, right? Because they live in a different database. So, if we were to create tasks right here, right? Task one, task two, task three, we would get these as entries. We can actually quickly do this and inspect it, right? Sort of like uh test task uh wrong, maybe something like this, right? Uh and now the what will happen is if we check our task, this will exist, but it will not actually duplicate when we apply this.

So how do we solve this? How do we get a new set of tasks every time this [music] due diligence project is applied? Well, we just need to make sure that the tasks are part of the actual page that gets applied here. So, let's click into tasks. And then in here, uh what I typically like to do uh or recommend to clients who set this up is that we first set up a toggle, right? Sort of like hide these things away. And we're going to call this um something along the lines of um default tasks. And then we might want to just apply like this light grayish background color to them. Right? That always uh I think is a nice visual touch to sort of deemphasize them a little bit. And we open this toggle. And now in here we're going to write either a list of like an unordered list or a list of checkboxes, doesn't really matter, of the tasks that need to happen. So let's say when we have a new due diligence, what do we need to do? We need to uh uh ask for uh access to uh data room. We need to review data room. and we need to um sort of like write the the report, right? Let's just keep it a simple list of three entries. This is pretty much 80% of your setup already done.

And now what we can do is we can head back out to our projects. We can now go ahead and create a new due diligence project. So, right, let's going to click on here. Now, we have a new due diligence. I'm going to scroll down to my tasks. I'm going to open my default task one. See, we have this test task wrong, but this will be the same one every single time, right? So, if I if I finish it, right? Oops. Let's not set it to done. Let's set it to in progress. The reason So, you see the reason why this doesn't work, right? If I create now a separate new diligence, this is this is my second one. You see that the task that it has um is shared across it, right? It's not a fresh set of tasks. So, not what we want. But back to uh the actual part, right? Let's delete this quickly. We open now the default tasks. And now all we need to do is take these three [music] um elements and drag them into our task list. And now just like that we have a new fresh [snorts] set of tasks. And after that right we can sort of delete this uh default task toggle.

Now of course this method is not perfect. It still requires you to whenever you have this recurring project go in in the beginning once and set up the tasks. Right? You don't have to write them all out. So particularly if you have 15 tasks, right, simply dragging them in there will be a lot faster than repeating it. But the drawback is clear, right? Uh you need to still do it. And the only kind of meta information that you have in this context is the name of the task. Right? You can't say, well, "ask for access to data room" that is always the job format. "Reviewing the data room" that's always the job for job, right? That's very hard uh in the system to uh yeah, put in there. So if you need to add additional context like that, then method number two will be the run for you.

Method number two will use the simple automation approach. So we're going to create a Notion database automation. And don't worry, even if you've never done this before, it's super simple. And I also have a full guide on both formulas and Notion database automations linked down below that you can check out.

So the very first thing that we need to do here when we want to create a database automation is we need to have something that this triggers off of. Because probably we don't want this to be applied every single time, right? We only want to apply it for certain types of projects. Again, let's take our due diligence example. So in this case, we need any kind of property uh to make this a bit easier, right? What I'm going to do is I'm simply going to create a type property here, right? So we're going to call this type. This will be a select. And then I'm going to uh change this to like um some shapes. That's my typical icon uh for that. And now we can create a new type um for like due diligence project, right? Say okay. When due diligence is applied, uh the type that we want to set here will be um due diligence. Perfect.

Now we can go and click on the um automation icon and set up our first automation. So this will be "Set default tasks for due diligence." What's our trigger? Well, we just created it. Our trigger will be that when the um type is due diligence, right? So if the type is set to due diligence, then this automation will trigger. Now what is supposed to happen? Well, whenever this project is created, we want to set up default tasks. So, new action: "Add page" to our task database. Right? So, let's go for, I think it's called VC Tasks. Always need to see. Yes, that should be the correct one. So we're going to add this to our VC task database. Um the name will be um "Get access to data room." And unlike in the previous one, right, we can now set any kind of property for this new task. So we can go ahead and say, okay, what I want is uh the owner of this task should always be Matias H. And the um due date for this task should be um sort of like X after when it has been created, right? So like we get we need to get this within the first week. So we're going to set a custom formula and we're going to say, okay, once this has triggered, right, date triggered date, add, and now we're going to add seven comma dates again, right? Formulas linked down below. Um, and that's it.

Which now means whenever we create this project, it will automatically not just create this task and assign it to Matias, but will also set the due date for 7 days later. And you can see how powerful it is because there's a lot of other elements that of course that you can influence and preset pretty much everything that you have, right? In this case, of course, since it's a demo setup, we don't have many more properties. It's a simple task management system, but you get the gist.

Now, after you've set up this one task, right, you need to repeat the process for every single task that you want to create, which luckily gets a bit faster because you can simply duplicate a step. So, I'm going to click here, right? I'm going to say duplicate. So, second one would be um "Renew uh data route," right? Let's say that is a task for Jill. So, I'll send it to her and we will say, okay, that will be within the first two weeks that we need to do that. Then, we're going to duplicate this again. and you know, sort of like write um "Review or what it was." And this one will be assigned to me again. Oh, maybe the page creator actually. That might also be interesting, right? Whoever um actually triggered this automation, right? Whoever set up the new due diligence project, maybe they should always be assigned. Whereas the other two might be um people that have sort of fixed roles. And then we say, okay, that report needs to happen within sort of like, let's say, 21 days. Perfect.

And then all that's left is for us to enable this automation. And now we can actually sort of like we can just create a new due diligence project or we could assign the tag here to trigger it. Let's create a new one for this one. So let's call this our um third due diligence. And then if we investigate the task tab, we will see like that in a moment this will start to populate with the open tasks. These automations, why they always take a moment to run, anywhere between sort of like 10 to 30 [music] seconds, and then they'll pop up in here. Actually, I just realized that they will not populate because we forgot one crucial step. Let's go back to our automation uh and just click on the one that we've set up and now go back to the task. And that is the most important part here. We need to of course link the task that we create to the project. So these tasks have been created in the task database but not been linked. That's why they don't pop up in the dashboard. So I need to click on "Project" here and say, okay, link the project to the trigger page, right? The new one that has come in. And we need to do this for every single one.

And now you already also see one of the big drawbacks of this method. While it allows us a lot more control over what we set up and how we do it, if we ever need to change something, right, it can be quite cumbersome because we need to remember the correct automation where we have done this. We need to go in and then we need to update that list. So if you have, you know, if you're the Notion champion for your team and you have a few recurring projects, then this is a great, very cost-effective method to get started. But if you want to enable your team, right, to build uh these kind of recurring projects projects or [clears throat] manage them once they are created, it can be a bit more problematic because you always need to go in here, right? And depending on permissions, people might not have access to update database automation. Plus, there's not a lot of visibility, right? There's no place elsewhere in the workspace that tells you, okay, when we set this up, this set of tasks gets created. Of course, you can write it down somewhere, but then you always risk that your documentation and the actual workflow, right, get out [music] of date at some point. And the third method gets around it, but we get to that in a second.

First, let's test this again, right? Let's set up a new due diligence, like the fourth one at this point. Look at the task and now see them populate right here. Our tasks, they are correctly assigned, and we have the due dates assigned as well. Oh, and by the way, if you need help setting up your company workspace, then let's get in touch. I'm on a mission to build Europe's number one Notion consultancy, and my team and I would love to help you put down the perfect foundation for your team. You can learn more about our work with a link in the description.

Now, method number three is where it gets really interesting because it's the most scalable approach for sure. But on the other hand, it also takes the most effort to set it up. So, you really only want to go there if you know, hey, that this is a process, right, that we want to automate, where we want to have it run always that way. If you're not at that point yet, right? If you're sort of still building out the business and like the type of processes that you do or like projects change all the time, I would get started with one of the first two, right? To just test how it feels and then once you run into the limitations and the frustration, then you can upgrade to method number three.

So how does it work? Well, for method number three, we actually need to go to our back end and we need to create a new database. This will be the process database, and we're going to uh add it just right here. Right? So this will be a new uh full-page database which we're going to call um "Processes," whatever it is. And in here we're now going to set up basically the properties for the tasks that we need for our recurring projects that should be populated. So one of the things, right, that we wanted to populate was the uh owner, right? So let's create the owner property. One uh thing that we also would like to have is sort of the the due date offset, right? Offset. Let's make this a number. It will become clear in a moment why. And for now, I think those two are fine. Fine. We could add a description as well if you wanted to, but uh let's keep it like that for now. Actually, we need again one more thing, right? So, we need uh in this case, let's use a select property. Let's call this sort of like "Process" um to indicate what this task belongs to. And in this case, right, I'm going to use um a select property. You could make this of course even more advanced by creating two databases. So, like process uh process tasks, right, to mirror projects and tasks. uh to like, you know, group them really nicely, but it will do the trick to just walk you through the approach here. Let's call this one "Due Diligence."

And now what I'm going to do is I'm going to go ahead and I'm just going to create the tasks now that should be spawned whenever a new project is created. So again, right, um "Ask uh spawn access to data room." We will get the um the new data room and we will get the, you know, right, "Breeding task." And then we can set up here and write owner here will be Matias. Uh, owner here will be Matias, and owner here will be Jill. And then for the due date offset, right, this will be seven, this will be 14, and this will be 21. And in terms of the process, it's all the due diligence one. And now that is basically our setup.

So why does this matter? Well, here's how the whole thing ties together. Whenever a new project is created, it will trigger an automation, an external automation, because Notion automations can't yet do this. Once they get updated to that, I will leave a comment down below uh and probably update a blog post so you know exactly how to do it internally. But for now, external automation, and that automation checks then whatever is currently in our process list and creates those as entries in tasks. And that has the huge advantage that you're sort of pulling the um the the thing that gets automated outside [music] of an automation, right? This is just a Notion database, which means you can embed it into the rest of the system and create what I like to call living documentation. Let me show you.

So here's sort of a sample documentation page, right, in our VC Docs database where you outline and explain, hey, here's what happens, and you sort of write down your process, right? You tell like this, these are the things that need to happen, and then you can sort of like simply go ahead now, right? Add um as a heading, you know, um "Our Process." And here, instead of just writing in text, hey, these are the tasks that need to happen, well, we just embed our task list, right? Our process, right? So we do a "Create linked view of data source." We're going to pull from "Processes," and we're going to say, okay, and let's filter this, right, for of course only the ones that are assigned to the due diligence process. Which means the person who's responsible for managing the due diligence process doesn't have to be the same person who sets up this automation. Right? Once this automation is set up, everyone who has access to this page and is supposed to manage this can go in and be like, actually, we realized um 7 days, that's that's far too late, right? Like it needs to be, uh, this needs to happen within 3 days. And actually, there's a fourth task, right? Um, and "Get everyone," uh, "Research competitors," right? Uh, let's see that we also assign this to me, right? And with just two, three clicks, you've expanded what happens without having to touch the automation. So it creates a lot more visibility and is a lot more scalable, right, in using it across your system rather than the systems where you have it hidden behind automations. That's why it's so powerful.

All right. Um, I just noticed while we were doing this one uh element that's missing that we should add to it when we take this uh approach, and that is of the order, right? Um, and that's uh just so we can make sure that tasks get generated in the right order always. So right, this would be sort of um this would be number one, probably, right? This would probably be number two, this number three, and this number four. And we can always sort this by the order in orderation. We will make sure as well that tasks get created in that correct order. And here we'll do like five. Perfect. The setup here is ready.

So now let's build the automation that actually creates these entries. The tool that we're going to use today to build this is called Relay, and it's one of my favorite automation tools, my go-to recommendation actually for everyone who's starting with automations. It's very easy in terms of the interface. AI is amazing within it, and that's why right we're going to use it here, even though we don't need to actually embed AI in this particular one. But still, if you're starting with one automation tool and want to learn the ropes, this is the one I recommend. But of course, this approach works just the same with something like Make.com or Zapier.

So inside of Relay, right, link for it down below in the description. Um, we're going to create a new workflow. The workflow that we're going to call, uh, let's call this "Create Need Tasks." Needs a trigger. Right? When should this happen? Now, I want this to happen whenever we create a new project in Notion. So the easiest way to do this is by something called webhook. A webhook is basically sort of like a wave, right, or a notification from one tool to another saying, "Hey, something happened." And in Notion, we can say, "Hey, Notion, please send a webhook to Relay every time a new project is created." So this is the option I'm going to choose with, and we say, "Okay, unique URL for this webhook is this one." Hook.relay.api. All right, so let's copy this for a second and head back over to Notion.

And we still need um an automation in this case, right? But the automation just triggers the thing once. It doesn't do anything else. Let's quickly go to um our projects here and let's set up a new automation and that says, okay, um, sort of like "Trigger the process." And we say again, right, when the [music] type is set to due diligence, then please send a webhook to, and now we can paste um [music] that uh sub here, and we can say, "Yes," and we want to sec uh send all properties with. Let's enable this and let's pause our other automation for a moment. And then uh let's head back over to Relay.

And in Relay, we can now say, "Okay, please configure automatically." Right? This will help us read the [music] data that Notion is sending. So we're going to click here. Relay is now listening for one of these webhooks to come through. So in Notion, we're just going to create now another due diligence, right? This has to be our fifth one. Fifth, something like that. And then we go to Relay and wait for the um webhook to come through so it can take that information, right, and turn it into structure for us to work with. And there we have it. You don't really need to bother with this, right? This is a JSON object. Uh, it can look quite intimidating if this is the first time that you're doing this. But again, for the purpose of this automation, all we need to do now is click on "Save" and then here on "Done." Step one is all in the books. Right. A new digit has been created, and Relay is getting notified.

So what want what do we want it to do next? Well, we want it to look at our process database, right? So I'm going to click on "Add a step." I'm going to say "Notion," and instead of Notion, I want it to "Find pages in a database." I want it to find pages in the um uh in the process database. Now, if you're using Relay and Notion together for the first time, you'll have to authorize Relay. Now mind, it will show you a little information. You will go through authorizing it, and then you need to make sure to give it access to the right database [music]. In this case, um since I have Relay generally already connected, all I need to do is make sure I have my projects, tasks, and processes shared with it. And to do so, I'm going to click on the three dots here at the top right corner, going to "Connections," and then need to say, "Okay, please connect this to the Relay." Right? Relay needs to be connected. This one. And then I'm actually just going to connect the back end overall, like in general, right? And just do this because this is sort of like a demo one here. We want to give automations always only access to the pages and database that they need to have access to. In this case, this will just speed things a little bit up.

So, let's head back here. And now we should be able to in here find our processes. Let's see whether that pops up already if I search for "pros." And if not, we might have to wait for a second and refresh it. But yeah, that looks good. Back end processes. Now, what do I want to return? Well, I want to return a list of matching pages. And then we can now set the filter, right? What is it that we want to find? And you can either write that filter yourself or you can ask the AI, right, to write that filter for you, right? So in this case, let's just uh say, okay, um, "Please uh retrieve all pages um where the type is set to due diligence." Right? What what is that option? Like, did we uh label it like that? Let's just see how we spell that, "due diligence" with caps. And generally, this search is case-sensitive. So let's make sure we set this up. Um, and you see within a second, it's one of due diligence. Perfect. Didn't have to do this manually.

Now, if no option uh is found, right, what do we want to do then? Well, if no option is found, um, we want to still continue without a result. And then we just um say uh to not do anything. And then sort order. This is where our order comes in, right? So, we say, well, yes, I want you to order this by ascending so it comes in the right level. Last but not least, right, if you have more than 50 tasks in your set, then we need to of course update this and make sure that um this works correctly, right? You might want to change the limit. But in our case, we have just three tasks, so this is all good. Now, usually uh if we click on "Test step" here, right, um, we'll be able to just like see, okay, like what would come through, and we see, okay, "Ask access for data room." There's currently one out of four, and these are the entries, right, that come through um for having pulled that. Perfect. So let's click on "Done" here and think about the next step, right? And we can rename this so we actually know what's happening here, right? "Find um relevant."

All right, what we want to do next, right, is we want to create those tasks. Uh, so we're going to click on plus. And the first thing that we need to do is we need to create a loop, right? Because we found a lot of different entries, and for every single one that we need to, that we found, we need to create one. So we say "Flow control," and then we say "Loop over a list." So what we want to do is we want to list loop over every item in pages. You see, Relay has automatically selected that for me because that's currently the only list that we have. And yes, we want to do this for every single one. Click on "Done" here. And now let's add a step inside of the loop. Right? So everything that we add here will happen once for every entry. If we add something outside, it will happen once the loop is finished. Our step here will be again "Notion," and we want to say, "Well, yes, please create a page in the database." The page that I want to create it in, right, is sort of like called "VC Tasks." Let's see whether it can find it. Well, and then inside of VC Tasks, we need to um add our entry from the previous found step. Seems like sometimes takes a moment, right? Particular if you just started giving this access here. Tasks. Perfect. And we see I could apply a template if I wanted to. But uh I can now just populate the fields.

So in terms of the name, I'm going to instead of writing it in, right? Basically what we did in the previous the previous time, right, with the Notion automation is we just gave it the information directly in the automation. But here we're going to pull from the other place. So we're going to click either on plus or type at, and this will allow us to access the data from before. Right? So I'm hover over "page," and we see all the information from here we can pull here. So I want to pull in the name as a name. And then uh in terms of the uh owner, right, I want to pull in the um from page the owner. And then for the due date, we want to now create sort of like an an offset, right? And we say, okay, uh in terms of the offset, please um increase this based on what we have there, right? Actually, we have to do like a calculation first for that. So we'll we'll do that in a second. Um, that will be a tad bit more complicated. But for now, let's just have name and owner. And then of course, make sure we connect it to the correct project, right? So in terms of the project, which project should it be? Well, it will be the project not from the initial patron, right? But it will be from the ID that we previously found from up here. And we actually also need to quickly find that before we go to it. So let's just click on "Done" for a second and then add in our two additional steps that we need in order to wrap up this step.

Now to find a project, let's click on plus and then go to Notion and then for Notion, we will um with again, like "Find pages in the database." We [music] want to pick our um projects, right, that we have in the back end. And what we want to return is even though it's a single page this time, I prefer always going for "List of matching," and make sure that we add a filter where we say, okay, "Let's search for the uh ID of that uh project." Now, the ID will be from our webhook, right? And we have it in our webhook in the payload in the data. Now, sometimes um if there's a specific field type, right, it will not show up directly here, uh well, under other fields. And even though it tells us, well, this is a different sort of like, you know, type that we're looking for, we can still map it in here, the ID, and make sure that it will find it. If nothing is found, right, then we want to pause the run in this case because that means that the thing that just called the webhook doesn't actually exist. So someone probably created and immediately deleted it again. But otherwise, we're good to go.

So now we can say, okay, let's test the step. I'm just going to paste um that ID in that I have copied to make sure that we find something. And we see, yes, perfect, we find our fifth due diligence here. So I can click on "Done." I can go back here and I can say, okay, under "Projects," I would like you to map to this entry, right, that we found under two. Right? This is the project that it should connect to. And then last but not least, the due date calculation, right? In order to do this, we need to do this in the loop, right? Because we need to calculate a corresponding due date for every single task. Let's click on plus. Let's go to "Utilities." Um, we need to do something with um the date. Oops. So we need to "Transform data." The variable we want to transform is the um current um date. And what we need want to do is we want to add to this, right? We want to um add to uh this um time. And the days that we want to add to this come from the page that we found, the due date offset, [music] right? This will be um our uh calculation. And then here, what we need to do, I need to make sure that this is set to days, right? If we want a different one, we could do that here, but we want to have it be in days. And we go back to our "Create a page," and now we can also map the due date to our calculation. Right? The date that we can map it to is the one that we just calculate here. Say "Save." Say [music] "Done."

And that's basically our setup. Right? If you just go through it again, when a new project is created, this scenario will trigger. It will find the project. Let's rename this so we know what it does, right? Then "Find Project." It will "Find relevant tasks," and then for each page in the relevant tasks, it will "Calculate the due date," and then we'll "Create that new task entry and link" [music] it.

Now let's test this, and then there's one more thing that we need to do to make sure this also works for different types of processes. So we're going to turn this scenario on. And now we say, okay, let's start this when uh a webhook is called, right? It will tell me I can't start this manually unfortunately because of the webhook trigger that is required. But no problem. We go to Notion, we create yet another uh due diligence, right? Sixth due diligence. And then we can head on over here to the "Run" tab and we see, okay, something is currently running, right? It just received the webhook, and it's now going to create the pages, right? Now it's currently on step one of four in the loop. So let's go in here, let's look at the task. And let's see. Okay, the first two have already been created. There's number three. And now number four should pop in as well in a second. Noticing one thing, what we already need to update. We need to reverse the order, right? Because right now uh they come in in the opposite order. But that's no problem, right? So we go back here and now that all four are completed, right? We should have the fourth one pop up here in a second as well. And then we can go back uh into the editor and do two changes. First, "Find our on tasks," right? Um, sort needs to be not ascending but descending. And then the one other small trick that we need to make sure to have so that if we have several times types of recurring projects, they don't conflict with each other. So let's look at "Find relevant tasks." Currently, we find it by due diligence, right? Which means no matter what project type comes through, it will always look for the due diligence tasks. That's of course not what we want. We want this to search for the option that matches what comes through from the project. So under "Webhook payload data properties," and then "Type select name," that's where that information is, right? That's what we want to match.

And now that means that in Notion, right, if we set up a different project type and different tasks in the process, then a different set of tasks will be created. I just did this right. So I made sure we have a new template called "Exit Project." I simply set uh changed the type tag. I made sure that our automation, right, triggers for both the due diligence and the exit project. And then of course, under processes, I um added two new test tasks. And that means now if we go back to projects and I create [music] a new exit project, it gets a different set of tasks, right? This one gets now in a second a test task one and test task two, whereas [music] the um due diligence ones, right, they get the other ones. And you see like how scalable this becomes, right? Because with you having set this automation up once, the team can now start editing and updating these processes directly in Notion. They don't need to have any idea of the underlying automation that is going on. And at the same time, you can pull the information from that, right? The things that are getting created into your documentation into the open to make sure that there's never a possibility that documentation and the actual, you know, process automation fall apart.

Now that you know how to create recurring projects in Notion, it's time to speed up your workflows. Notion AI is incredible at helping you get through your to-do list faster, but you'll need to know how to prompt it. [music] My team and I have tested a lot of ways to make Notion AI better, and I recently published a video with our favorite six tips to make it work smarter. So, to take your Notion AI to the next level, just click here, and I will see you in a few seconds.