On Demand Webinars
The power of webhooks with Make in monday.com (2022)
640 views
View transcript
Very welcome to all of you to tonight's webinar about webhooks with monday.com and of course, make. So Lukas has dubbed this The power of webhooks. I'm Fredrik Kastenholm. I'm The CRO and one of the founders and owners of Omnitas. And together with me, we have a completely new face to our webinars, and that is Lukas Andersson, one of our make specialists. So, Lukas, do introduce -yourself. -Hi everyone. Great to be here and be part of this webinar. As Fredrik said, I'm one of the perhaps make specialists, one of the integration consultants here at Omnitas. And yeah, most of my days have or make some sort of part of it really. It's really the most more my area of expertise, let's say, especially then along with Monday, which is also the other part of my day, I would say. Usually in combination right, Exactly. It's usually some sort of both really. So we actually got our first question and we're going to get to your question later on. I promise you. I have it noted. So with that, Lukas, let's talk -some webhooks. -Let's do it. So let's just start off with really basic. So simply, what is a webhook, right? So to put it kind of simple, of course there's more to this, but simply you can compare webhook to a normal address to a website. So for example, if you have a website like Omnitas.se, you have a user which puts it into your browser, which requests to the server, which spits back the website content, right? So you send the the web address and you get back the content to your browser and you can view the page. Webhooks aren't really that different. They also use the Http protocol, but instead here you might have in this case. So let's say Monday. So Monday we will put in some sort of trigger. So when something happens, which we specify specifically, then Monday will use this webhook address to send it to some other sort of service, like in this case, make. In make. We can use this and do really whatever we want to do with it. With this webhook, we also get some data as well. And this data we can then use and make to do all sorts of things. For example, after we what we want to do is oftentimes we from Monday have a trigger that uses the webhook in make and then really want to do is just put something back into Monday. So in this way, we kind of use Monday as both maybe our front end and back end. We might use it as front end to use the triggers. We might get data from Monday in May. So sort of like a back end and then we spit something back into Monday. In this case, make would also kind of be our back end functionality wise, right? So this is one of the most useful examples that we see day today, but it doesn't always have to be Monday. You can really connect it to just about anything that has some sort of API connection, since this is usually what makes make works with is all sorts of APIs. -Right? Yeah. -I think when it comes to make we have ready made endpoints. And when I say endpoints, I think of integrated services which numbers in the thousands and then we can actually go as long as someone have an open, we can actually work with that. Something Lucas does from time to time, right? Yeah, exactly. Make does have a library of libraries where you can really just use standard modules, which is really nice to do and it really cuts down on stuff like development time. And also you don't have to like search for errors as much since most of the stuff are already done for you. So you don't have to sit down and really code custom calls, but sometimes if it isn't part of the library, as Frederic said, we can also use this to make custom calls, which it will still help you out to not be able to really get down to the nitty gritty parts of making calls. It will still help you out and make -it easier for you. -Yeah, and you also get the nice routing charts and stuff, which you won't do if you do it like in. -Just pure code. -Exactly. -Yeah. -So that's a webhook it's basically sending a piece of information to a web address, having something happening there and taking further action, basically, which might be spitting it right back -to you. -Pretty much. Now, there's also worth to note here that this is the main way we use webhooks. There's a bunch of other ways to use a webhook as well. It can even be part of like a normal website. So for example, if you click a button on a website, maybe that website server sends some sort of call to their backend server. This way it's more similar to a normal query, right? Yeah. So we have a lot of a lot of applications, really. -Yeah. -You can really be smart about how you use it. Why use a webhook? Yeah. So really a webhook I would say, is what often is the thing that you compare it to. If you want to compare webhook with something else, it's really three main parts that we use a web book, 4 or 3 parts where we try to use a webhook wherever we can. So the first part is that webhooks are near instant. So what I mean by that is simply that if you have some sort of trigger and that trigger makes it so it sends a webhook, then that has the same sort of response time as you would expect. As mentioned, if you type something into your browser, hit enter, right? It's pretty much instant. So that's really the first part. You don't have to do something along the lines of having a scan every 15 minutes or 30 minutes or every few hours. It's really just that old like -that. -Oh, like thing. Yeah. We do a batch run every night, right? Exactly. Yeah. And that kind of ties into the second part where we're talking about like batch batch updates and batch checks where books you usually put it or connect it to some sort of trigger, right? So it usually it's you make the trigger and then that sends the webhook. So you save a lot of data. This way, instead of doing something like you have two separate registries, maybe in two systems and you want to keep them synced instead of having to do one of these like overnight checks where you might have tens of thousands of items in both registries, and you have to go through every item to check. Has there been an update? Instead, we can use webhooks to say from registry one. When this specific line gets updated, find the same item in registry two and update it that way. We only updated one line of data or checked one line of data rather than having to go through an entire registry of data every day. So basically your data validation is done from the start? Pretty much, yeah. Which ties perfectly into the third point. You also get kind of trigger based validation. You know that if you have depending on your data structure, you can in for an example, if you keep with the registry one registry, two ones you can have in both registries, you can have some sort of unique identifier that is connected to the lines, unique identifier in the other registry. So this way you don't ever really have to do some sort of check and validation because you know that if I check, if I change this item, it's going to correspond to these this item on the other side. You want to have to do some sort of like search through all this items and find the specific parameters to do that sort of matching. Instead you already know which is the correct one to update on the other side. -That's webhooks. -It's nothing scary. It's actually rather simple in what ways? But it's immensely powerful in what you can do with it. Have a look. Because think you prepared a few cases -or scenarios, right? -For course. Did. So let's have a look. So first off, let's just if we remember this previous slide where we're looking at it, to use it like a browser, let's use it like a browser because that's also something you can do. So for an example, this is a really simple scenario done in make website usage. Usually, as I said, webhooks are made for server to server communication, but just for this demo we can use a normal website to access the webhook. So this is just really simple scenario. We have, as I said, this trigger module right here. This is just a webhook destination. This is an example of webhook and this would be the address that a server would actually use to send information to this endpoint. You can go ahead and copy that to our clipboard. And really what I've done is here I've just defined a webhook response. Usually what the standard types of webhook responses are are stuff that is like normal Http codes. So we'll be like a three digit code to say something along the lines of this request has been accepted or this has been rejected because of authorization issues, or maybe this endpoint doesn't exist, stuff like that. So it's usually used for some sort of response for error handling. But we can use this for really anything we want. In this case, what I've simply done is I've used one of the formulas available in make to simply get a timestamp of the current execution time whenever we request it, just formatted it to be a bit more nicer. Let's do just that. Let's just go to this webhook and they will get our response pretty much instant, right? So we have April 27th, 2022, 5:15 p.m., which is the current time. Look here, for example. This is one I did just before the webinar. If we just refresh the page, this will solve will also update to the current time. Use. And here you see how quick it is because it actually run around that scenario now as well. And did that response calculated and reformulated the time and everything and it's -exactly nothing. -All right. So let's move on to some more real world examples where we use webhooks for these few examples. Here we just created a really simple project overview board within Monday here. It's super simple. You have the main items here is a project and we also have a few sub items which we can add, which would be a task. Looking at one of these rows we have just like Project four and the project has task one, two and three. Super simple stuff. Here we have a question which we can actually take -right now. -Sure. Reuben asked, Can you get a webhook to show no response and not open a web page? Absolutely. You could. It's I could also really simply define for this one can even do that super fast here. You can just remove this entire thing and it would define the the response is nothing. That's it. We can we can control our webhooks responses as we want to, right? Yeah. Or you can reroute that and we use it for one of our webhooks. We actually reroute -you to our web page, so. -Exactly. And so look at this, this way, Ruben, as well. When you send a webhook from Monday, for example, no one's going to see that. It's just Monday sending information to an address. Exactly. Webhook communication is all that. Yeah. It's usually not something that the users see. This browser example is more just to show you what kind that you get responses and that they're pretty much near instant. Yeah. All right. So as I said, this is a simple project overview. Just have some basic stuff like status priority and stuff like that. So what I mentioned before in my presentation where we would have something along the lines of we do something, a trigger. So in this case, we do something in Monday triggers the webhook to make it make. Then we do something where we might fetch data from Monday using the webhooks data which will tell us stuff like This is the row that the trigger came from. This is the column that the trigger came from. Stuff like that. We can use that data to then, as I said, put that back into Monday after we do some stuff with the data. Let's look at an example here. For an example, I have this. Each project has a project number. This one has p three. One, two, three. And when I had a task, what I wanted to do simply is I wanted to automatically assign a task number. I want that task number to be the project number underscore and then a number going up. So the first one is going to be task three one, two, three, underscore one. Next one is going to be underscore, two underscore three, etcetera. I also want each project to start this counter from one. So each task number will be unique within that project. And it will also show in which order they were actually created. So what I've done here is I've added a trigger. That is when a sub item is created, send a webhook. That's pretty much it. So if we do this, we say task one. We're going to trigger one of the scenarios. And what that scenario is. Let's have a look at that. This is the actual scenario. So what we have here, here, it's pretty simple. Once again, we have this webhook trigger. I know that this one looks slightly different than the one we just talked about, but we'll get to why that is. What this then does is first we're going to get the parent item. Now, why do we want to get the parent item? Because the item also has this task counter, which is a supporting column pretty much for this function. And in this way, we're using Monday as well as kind of a database or a backend, right? So each, as I said, each. Project is going to have its own counter for its tasks. So we just have this as a normal number column. And you can see here already the scenario has been run, gave it the P3 one, two, three, underscore one. And as you might have already noted as well, the task counter incremented by one used to be one. This one was created. So now it's two to prepare for the next task should we create it? Look back here. It just keeps going on along these lines. The item is also where the project number is stored, right? Exactly. Also where the project number is stored, which is part of our task number. So we get the item. Next, we have all that we need, so we're going to assign the task number, look a little bit closer how that looks. Here we simply assign to this column ID, which is our task number column. We're going to put in here the first part here. Text four is really the back end column of the column, but the columns actual name is our project number. And then we also have the numbers column, which is our counter. -So that's. -Yeah. And here you use the mapping function, right? So you're actually using the dynamic values that you actually got from the module before the get item, right? Correct. You can see here, for example, it says two dot mappable column values. That's because this is module number two. So this is exactly as you say. It's using dynamic map mapped values to actually input these numbers for you. And the last part, what we do is, as mentioned, we simply update the counter. We go back to updating the parent item ID, which is also something that we get from our webhook. Right. We're going to look more into what kinds of data we get for webhooks for Monday in a few seconds. But here, just to show you, it's really simple. We use a formula once again where we take this map numbers column for our parent item. We know this is the counter and then we just add one. We write that back to the counter column and it's ready -for the next execution. -So should we have a quick look just in the trigger, how the information, what it looks like when it comes and remember what the trigger now, guys, was when Lucas created the sub item. So just by craving it Monday will now send the information to the address. Exactly. Can actually look here at an execution. This is the one I just ran. We can see here from the one here is the output data that we got. So this is our actual webhook. Webhook contains an event and that event contains a bunch of data. This is really all the info that Monday sent along with the webhook to make when it was triggered. So here we have a bunch of stuff we have what the items ID was, what the boards ID was the name of the item, which was task one, the one we created. We also have some other stuff, like when it was created and when it was triggered and stuff like that. And here's actually for those of you who haven't been working with this before. Here's actually when you're looking for the item ID in Monday, it's actually called the pulse idea. And that's a legacy thing from back way back when when Monday was the pulse and an item was called a pulse. So that's why you have a pulse ID So don't try to find the item in it because you want. It's this data is as we just looked at. We can then use this data dynamically. So that's actually what we've done here since we got from the trigger. We got stuff like, for example, the parent item ID, So when we get the paranoid ID we've mapped in this one, which is this module event, paranoid ID, and this is pretty much what we've done. We simply click there on the list and we've fetched that part of data that can will then run dynamically each -execution. -Yeah. And the get item function overall, it just gets it goes back into Monday and basically get all the other data so you get all the columns and what their values -are and so on, so forth. Right clicks. -Exactly. Since the webhook doesn't actually want to send too much data, it wants to send you the data generally that you use to get the other data that you want. And that's why we use the supporting columns that get that fetches more data and also only fetches the data that we actually need to accomplish our task. So as we mentioned before, you might have noticed that before we used a module here that is a custom webhook for those of you that might have seen our earlier webinars in integrate which make use to be makes main product. We used to use this module, the custom webhook module. Now this custom webhook module has been replaced in make with a module that's specific meant for Monday. It's really the same thing. But instead what you're going to use is watch events. It's pretty much the same thing. You might even know it is that it looks the same way. It's only to define a webhook. You use it the same way and it works the same way. Just a good thing to be aware of if you're going to build Monday specific scenarios in make. Yeah. And here setting up your webhook the first thing you do before you do anything in Monday you go in here, add this click add that will create the webhook. You will get the address. Copy that. Then you go into Monday -and set up your webhook. -All right. Should we move on to the -next function? -Yes, let's. Let's do it right. So let's say we have our tasks here. Let's just create another one. Look at the earlier ones. We also have, for example, we have a project manager and then we also have a project team. So the function we're looking for here is simply that when we assign people to the actual tasks which we do on a sub item level, each task has an owner. What we want to happen here is simply that we want to pretty much aggregate up all the people who are assigned down here on sub items back up to the project team so we don't have to actually open each project product or each project rather, to see which people are actually part of this project or working -on the tasks. -And you can of course do this with basically mirroring the sub item sub. But there are some cases when you actually -don't want to have a mirror column, right? -Right. So, for example, in this case, what we can also do here is we can manually add people here. So let's say we have two people who are assigned to these tasks. It will aggregate up those people. Then we also want to add someone else. It might not be directly connected to the task or they might not be assigned yet to the task, but you want to add them to the project team. And this way we can actually do that since we have this -column in original here. -Exactly. And there's also a couple of Native Monday automations which you just can't run on a miracle, Right? Exactly. Since the mirror columns are are actually client side, what that means is anything that's client side will only really show you or exist when you're viewing it through the browser. So automations and integrations such won't actually be able to see changes in them since they're actually mirroring some other column, which is where the value really exists. And now this is actually a rather great spot to actually readdress a question because he was asking. He'd like to know how he can get mirror columns, data because he can't. He says that he doesn't think that Monday allows for it. No. And here's the reason. It's that it's only actually mirrored in your client. So it's your browser doing a bit of magic for you. So when working with that in make, you actually need to go to the source point. So you actually need to. There's something in a flow controls called an iterator. Correct me here if I'm wrong though because you're the expert, so you need to iterate on the connected column, which is mirrored, right. And fetch the information from there. Is that correct? Exactly. So for those of you who who aren't completely following, you have this column called a connect Board, which is really just you can link items between boards. Once you link items between boards, you can also add this mirror column that we're talking about. And that's really just kind of as it sits, it mirrors information from another board. It doesn't actually exist in this board since it only mirrors some other information, but we know which item it is mirroring since we've chosen it in our Connect board column. And this is something that we actually do a lot and can really not be made with normal automated automations in Monday since you have to kind of get to the source data. So yeah. Yeah, it could be something along the lines of we trigger something here, maybe it's a status or something, and then in the back end, using make and using these dynamic fields that we've been looking at, we can actually go to the item that's connected and find the source column -and that way we can get the information. -Yeah. Or and even go and actually not just have a status column mirrored between the two, but actually when this column is changed then also jump all the way back and change that status of that one. But as to if memory serves me right, I think actually our first Integra webinar actually has a guide on how you use the iterator because we go actually went through that. So how you do that. So have a look at our YouTube channel or on our website and look for our first Integra webinar with Viggo. And he actually goes through that step by step -on how to do that. -Yeah. So with that, I hope you're happy. Now let's continue -on. -So let's actually look at this function pretty simple. Let's assign myself to the first task and let's go ahead and assign M here to the second task. You can see when I assign myself, I popped up in the project team and now we also got Emma. Let's say it's also we know that good stuff is going to be part of this as well. So we add them to the project product or the project team, even though we haven't assign them to a task yet. This is also based on completely on webhooks and completely on make. We have a trigger here that is based on this column, right? Since this is the column we actually changed and the action that should trigger what our end product will be. So here we simply have when sub item owner changes, send a webhook. Looking at that scenario. It's also really simple scenario, but it's very powerful. Again, we have the trigger. We know which item it actually triggered. We want to fetch, again, the parent item ID since we want to get the people column on the main item level first. Since if someone's already assigned here, we want to include them as well. Once in the end we actually update this column since we are actually going to overwrite this column and anything that may already be there. So we simply get the permanent ID and then we're going to update it. So here we have involved. Now, this one is kind of also we've done some extra magic to it since we know that you might get some stuff like duplicates. So a person will seem to be present multiple times. But really all this is, is we first have the collection from module one, which is our webhook, which actually also sent with it. Since the People column was the trigger it's sent, this is the actual update that was made. This is the person that was added. So we actually use the merge function here to merge. It's actually an array in the background. Since you can add more people. We merge this array with the array of the main people item column that we just looked at that we get here in module number two. So all it does is it takes these people column and the one we just updated puts them together. But as I said, we might this way get duplicates. Since if I add myself here, but I'm already present in the project team, we will get two icons of me. So we also add something called distinct that simply removes all duplicates inside of the array. And then we just write that back. Awesome. We actually got a question asking can a webhook be useful in time tracking columns for tasks, logging workouts, pausing workouts and stopping the time column? Yes. Or part of it. So the time tracking column is the one I'm assuming that you're talking about. -I would assume so. -Yeah, I would think so. You can put pretty much a simple webhook trigger on it, for example, whenever it's updated. So in this case, that would refer to whenever you stop the clock or start the clock. Also, if you would add a session to it. Really simple since I don't want to go really deep into it because it has a lot of complexity, but something that's just simple to know is each time tracking column holds its own. It saves each session in a list and you can get to this list by first having this webhook trigger when the time tracking is updated and then we get the item. We will also get this column and the values in this column you will get a list of the different sessions. After this, you can really do whatever -you want with it. -To a Google spreadsheet or something like that if you exactly for your -time reporting system or whatever. -As far as doing more complex things with it, some things like automatically and starting and stopping the clock, I'm not 100% sure if that's possible at all, but if it is possible, it would require something along the lines that we talked in the beginning of the webinar where you actually have to make custom calls. It's not something that's initially built in. And if you want to learn more about that and figure that out yourself, I would direct you to the Monday.com API documentation there. You can search for the time tracking column and you can really read up on everything there. And just adding this to it, we have a specific module for Monday custom calls that is going to be this one. Execute a GraphQL query. This is also the kind of code you will get an example code of from the Monday documentation. Hopefully that gives you at least a bit to stand on in looking out that function for you. -What more do we have? -Let's look at another one, which is actually what we're going to do is we even we're even going to chain integration. So we're going to chain webhooks were pretty much what we do is one scenario or one integration is going to trigger the next one. So what we built here is a simple template function. So what we have here is mentioned. We have projects and we have tasks. Let's say that in our projects it's very common that we have these few tasks. Like every time we start a project it might be like, let's say for an example, scope up the solution or have a have a start up meeting, stuff like that. We always do these for each project. So instead of having to create them each time we've done some templates. So we've done a separate template board for this. So here we have just simply three templates. Each template has a selection of tasks which are just for now named template one, task one, etcetera, etcetera. So we can at least tell them apart. So what we done here with webhooks is we've added this status to our project board. And here simply we can select one of the three templates that we've already added. And what we want this to do is if I select template one, it should go into the templates board. Look at all the tasks that are here and add those tasks to the same project that I clicked on. Template one on. That's the function you would want to do and some of you might already have. Thought back to our first thing we looked at. When a sub item is created, we assign it a task number and this first scenario is going to create tasks for us and that will also trigger our next webhook that will assign the task. So this is kind of chaining webhook integrations. Let's have a actually have a look at that. What I'm going to do here just to make it a bit more pretty. I'm going to delete these example items that we made and I'm going to reset the counter to a one. So we start from the beginning. Let's pick template one in this case. And as you can see here, we've added some other functionality to this. We've added feedback and that's it done. So those of you who were paying attention there, you will have seen that it changed from after we selected template one. It's changed to generating to tell the user that it's doing some work and now that it's finished it's changed to generated. So we can also do something like along the lines of this scenario. This is the scenario that we trigger a bit more complex, but it also does more things right. As always, we have our webhook trigger. We go into this scenario? This is the first thing we do. We change to generating. This is the same way we have done before. But instead of just writing back our finalized data, we simply update the column. That was our trigger column. We know which item that was on. We know which column it is, and we know we want to change it to generating. So that's the first thing we do to say the scenario has started. After that, you don't have to go to super deep detail on this one, but it's simply that we list the templates board that we looked at a few moments ago. We filter out through these filters. We filter out that the statuses in both boards must match. What I mean by that is. As you saw, we have here template one, two and three. We want to actually get back the right template. So in the templates board we also have this template one, two and three. All of this is mapped dynamically through mappings. And simply what we have here is a filter that says this state is from module three, which is list templates or templates. Board must be equal to the actual value from our webhook. So from our webhook we have the value of the status that was our trigger. These texts need to match. This is how we know that this is the right template. Or possibly if the template doesn't exist, it will also stop this execution here. So this is also kind of a validation thing here as well. Next part is really just simple. It's we're going to iterate through -the template tasks. -Yeah. And this since we are iterating the sub items, right. This is exactly a self listen up note because this is exactly what you would do on a connected item as well. It's handled the same way. So what we have here is after we matched the correct template, we found out like, okay, we got a match. This is the template. In this case, it was template one. Now what it gives us is this main item, right? But we're interested in the sub items. So what we do here is since we got the main item from this module, the list templates here we use an iterator. And yes, you can see here it uses module three and takes the sub items, which is an array of sub item IDs. It's not the entire sub items with its values, but it's the unique identifiers in a list of the sub items. And that's actually what the bracket means, right? So the bracket actually stands for. It's an array. So it's a package of things. Oh, that's exactly. So what we do here with the iterator, what this simply does is you give it a list or an array and it's going to go through each item of the list and each item is going to give its own signal or pulse or it's also called a bundle. It's what it's called and make and do all the modules that follows. The iterator will be run once for every item in the list that you put in the iterator. So what we want to do here is first we want to get the task item and this task item is the sub item from the task template board. We get our example item and then we create the same item in our board where we actually triggered this entire scenario. We get this item, we create it. That's it. Go to the next part of the list. Get that item and create it where we want it. And then rinse and repeat for however many times -you need. -Exactly. This is also completely dynamic. If you have two task template sub items or if you have 50 doesn't matter because we're only going to iterate through each one once. And in the end here we also added this change to generated. This is a bit extra maybe. Beyond. But the reason that I didn't put this simply here is, well, one, since this runs once for every sub item, this one would run for each sub item and two, we want it to be run after everything is done. So here we have a router which all you need to know is the top part -will always run first. -And now we actually have an interesting question for Matthew. When you use this templating function to create new sub items. Is it possible to copy updates as well and what Matthew is actually thinking of here? Can he copy a checklist already made in one and put -it in the new task? -Uh, short answer is yes. You can copy updates. I will warn you, though, that this is a fairly complex thing to do. It will require some some custom calls, but it is possible, as far as I assume by checklist, you know, you need that native functionality where you can actually check the things and you can see from the actual item. Yeah, that part I haven't personally tried out myself. I would think that it's possible. But I can't tell you for sure. But in either case, it's really. Yes, it's possible. It's not one of the standard things that are done and therefore there's no standard modules for it. Again, I would also redirect you to look to the Monday documentation, search for updates, and you will find more there in how you could accomplish this. But it is possible and you have done -it so. -So Lucas, this is really nice, but isn't there actually native functionality on Monday for this rather -specific thing? -There sure is. So let's actually look at how this could look if we use native. Well, also just quickly, since we're running through here, just making sure. Yeah, they were indeed created and they did indeed trigger the next scenario to assign the task numbers. But yeah, let's look at Frederick West. You said this is possible to do with native automations. For example, we have pre-made some here that we can actually they're currently turned off just so we wouldn't get duplicate triggers here. But you can do something along the lines of this. When generate template or start a status column changes the template one. Then we're going to create the first sub item template one, task one, and then we're going to create the next sub item and then we're going to create the next sub item. As you might already hear, this gets -pretty hard to administer. -Yeah, because we're never going to be called anything but sub item. Right, exactly. And if you are, if you want to add more sub items to it or detract, then you basically need to duplicate it and make it a new one and so on and so forth. Right. So let's say you have 50 sub items here and you were like, I actually want to change the name of my 23rd. That's like, it is possible, but it's really annoying to do. Or as Fredrik said, I want to add a new one or such something along those lines. It's pretty hard to administer even though it is possible. And also, as you will see here, you will also need one recipe for each template you add. Comparing that to our template. For now, we can very easily add items just if we want to add a new item. That's all we do after that. Now we will also from each generation for template three. Now, from now on, it will also add this new item. We can also add new templates really quickly. We add a new template and we're just going to add a new label here. And that's it. So this is a very user friendly way as well to do something like templates and just not talking about specifically templates. This is also something along the lines of what we can do with webhooks to take something that might either already be possible in Monday and make it even better, or just take something that's not even possible to do with native automations and create functionality that isn't out of the box. -Yeah. -And staying on track of templates in this case. Yeah, you can input some information in those sub items, but you can't input anything and we can actually go in here and actually be really creative with what kind of values we input. Yeah. In those and we, and you could even do such a thing. So yeah, create this one but in this task actually make a calculation from a few numbers you have in the main item and put that back in. So you can be really crazy with -how far you take that. -You really can. You can even do stuff like you can implement as much logic as you want Here. You can do something like if this template is created from this board or this department, assign this person and this column like it already gets a bit hard to just keep in your head. But it you really can do a lot of things and just make this functionality super complex and super helpful to in the end, hopefully just really simplify the workflow for the end user where they might not even have to assign people. Everything will -just be done automatically. -As we said, webhooks the instant quick and no actually one one other case where where I where I tend to like to use webhooks and that's when you use forms and you get entries from forms and then you make might want to make a check on. For example, say you're a marketing department or something and you have say, a rule that you will not accept anything unless it's at least 3 or 5 days or whatever time out from when it's supposed to be delivered. Yeah, Monday. Can't check that itself, but with make it's actually really easy and say yeah, you requested this to be done tomorrow. Yeah. I'm going to send you an email and say no, that's not going to be done. It can be done. Like Monday. So you can add on any kind of logic to it. It's it's actually really, really cool when you start using it. It really is. But yeah, that's, that's the main functionality that I at least wanted to show you a few examples of what you can do with webhooks as you're probably already realizing the, the sky really is the limit here. You can take something very basic with a webhook, a very basic trigger and you can do a lot of things. Should we have a quick look on what kind of webhooks Monday can generate before we end this session? Let's do it. So if you do want to create your own webhooks here, as Fredrik told you earlier, you will begin with actually creating the webhook trigger here. Since here's where you get the webhook address and you're going to need this when you actually put it into Monday. Once you've done that, you get to integrate, add new integration. And here we have this webhook integration. So here's the selection we have. It's actually pretty extensive. Um, I don't think since they've added some new stuff here. I don't really have anything in mind right now. That is something that we wanted to do, but there wasn't a trigger for it. This were pretty much cover anything. So we have when a new update is posted when any column changes. So let's say this is useful for when we have two registries, maybe one in Monday, maybe one in, let's say Salesforce or some other system. We want to whenever any column is updated, we want to send that over to our Salesforce version of that item. Right. This is useful, but maybe if we want to save data or it's just maybe one column that's of importance when it's updated, we can use when a column changes, -send a webhook instead. Yeah. -And here's what's emboldened here is changeable variables. So just like with your automations. Exactly. This one is also very useful. And this is also kind of the core why we like statuses so much and we kind of sometimes use statuses as more of a button like we saw in the template one, because statuses can also have extra labels that we control to give the user status updates of where the execution is, even though these ones were really fast. So you could barely, barely even had time to see the generating. Some scenarios might take minutes to run so that in that part it's kind of nice to get some on the way updates for the user. So they're following. Okay, so it isn't stuck. -Something is actually happening. -Or one of your specialties actually Lucas, which is migrating Monday accounts from the US server to the server. And then we're not talking a minute, then we're talking many minutes. So then I know you actually have for each step of the process. So I've seen it when Lucas has a big TV on the wall and it just goes like, Yeah, I'm now done with that, done with that. I'm running this and I'm waiting to do this and yeah. And there we definitely have a lot of chain webhooks because we, we pretty much just want to click a button leave for the day When we come back tomorrow, we want it to be done right. So there we have along the lines of 10 or 12 scenarios that just chain into each other constantly through the books. I think the biggest one of those is like 600 modules as well. -Yeah, it's pretty crazy. -So you can you can imagine, guys, it's 600 of those blobs. -Exactly. -So but back to here. So as you can see, there's a lot of things. So when an item name changes and a webhook status triggers column changes updates and as you can see, you have specific for sub items as -well. -Yeah. It's good to know very. A few of them will cover both main and sub items. It's mainly these two. Yeah. If you have like an an item is created or when a sub item is created, they're different triggers since those are different things, right? Yeah. Don't confuse sub items and items in Monday. Very different things. But in make they're actually handled -the same. -Yeah. Of course. They both have an ID, basically. And that's right. Here. You also have some new stuff. For an example, when an item is deleted, which is also very useful when you if you go back to the example of keeping to registry sync two, you want to you want to have the full chain, right? You also want to be able to delete item if it's deleted in one registry, remove -it from the other. -Actually. I actually have a client using that and they have like a crash record. So they basically just if it's deleted, send all the information into Google spreadsheet because they want to retain that information for longer -than the 30 days Monday does. -Right? So this way we can we can even kind of surpass the 30 days deletion in Monday by by using this trigger through webhooks as -an archiving function kind of. -Yeah. That's what they do. It works well because that way we can also easily pull that data back in if we ever need again. Yeah, that's it for today. If you have any more questions now, now's the time. Otherwise, me and Lukas, thank you so much for being here tonight with us. And if you already haven't, so make sure you subscribe to our YouTube channel. That's where you'll also find all our videos. Thanks so much everyone. Take the best of care and have a really good night. And we hope to see you in two weeks when we have a rather huge webinar with some really, really interesting stuff about a completely new custom made ticketing portal, which is awesome. Made. Made with make. Hope to see you then. Good night, everyone. Take care. Thanks, guys.