Transcript for:
CRM-Automatisierung mit Make und Webhooks

What's going on everybody? Welcome to another video in our series Make.com for people who want to make real money. In this video I'm going to show you guys how to integrate Make with basically any CRM or project management system you guys want using webhooks which are probably one of the least well understood features in Make for reasons that I do not understand myself. It's super simple to get up and running and this video is going to show you how to do everything. So if you are an experienced Make dev or if you are somebody that's trying to learn the fundamentals for the first time This is probably one of the most commonly requested use cases.

You're in for a treat. Let's get into it. Okay, so I said we were going to integrate Make with Monday.com, but how exactly are we going to do so?

Well, the use case in this video is going to be when I change a column called Stage to Generate Proposal, I want that to trigger a Make scenario, which goes up there and then generates a proposal for us. I want to do this using webhooks because webhooks are real time, they're instantaneous, they're just the best solution for this particular problem. So yeah, we want to template out a proposal essentially just using Monday and make.com. I've set up a random proposal here in Google Slides, which is probably the easiest way to get up and running with proposal templating if you've never used it before.

All you basically have to do is just open up a Google Slide. You can pick one of the templates that they provide, And then anywhere that you want to put a variable, all you need to do is just put two curly brackets and then like the name of whatever the variable is that you want. And like you make this up.

So I just made up company name and I'm going to define it in make. So I don't know, let's say you want like a company name here. This is a recruitment company example in my case.

So I have like a role name here, which we're going to help with. You could do stuff like first name, stuff like last name, prepared for whatever. You could even get a lot more.

nuanced with it if you wanted to use AI to like write out large portions of the proposal, you're going to know how to do all that stuff by the end of the video. And I'm just going to make sure it's as simple as humanly possible. So if you use monday.com, you could literally just copy a flow like this and save your sales team anywhere from like 20 to 30% of their time, energy, and money because proposals are just such a pain in the ass. But if you're new to Monday and you've never seen this before, basically all CRMs work in a similar way. You have the name column, which is just what defines the primary or unique key of the record.

So in this case, we have a fictional company called Pair Incorporated, COO. We have a stage column, which is just a bunch of different statuses. You can imagine how this is a pipeline from start to finish.

The beginning stage is discovery call. Middle stage is proposal sent. Third stage is master services agreement sent.

Maybe there's a stale stage, a one stage, a lost stage. You can obviously define these however you want, but this is how this particular company decided to do it. And then there are a bunch of other columns for just personal identifying information, stuff that may or may not be useful in the future or stuff that the sales team wants to see.

So, yeah, you can make this as complicated or as simple as you want, but this is just the example that I picked because it's a real-world example. This is something that I'm actually developing for a client as we speak. Okay, so how do we actually get up and running with this? Well, I mentioned we're going to use webhooks, and in monday.com, using webhooks is super simple.

All you need to do is go over to the top right-hand corner of the page where it says integrate, and then look up webhook. There'll always be a default integration for webhooks. And then you basically can choose from one of the, I don't know, like 25 options here or something. The one that's probably the most common is going to be when a status changes to something, send a webhook.

Now in Monday, a status field is like one of those dropdowns that I just showed you, like our stage field. And so Monday basically provides a way to send a webhook when a status field changes to something, which is obviously super helpful and beneficial for us. Now it's going to ask us to choose an account. We actually don't have one yet, so I'm just going to click use another account. And here it's going to ask us to connect our webhook URL.

So if you guys use make.com, now things are probably starting to get a little familiar. If I want to do a webhook in Make, let's assume that we just open this puppy up. We go down here, type webhook, and then up at the top you'll get this sort of like triangular three node sort of thing. What we're going to be clicking on is custom webhook, which it says it's instant, it triggers whenever the webhook receives data.

From technical terms, webhooks are just vastly improved versions of like polling systems. In the past you used to have to send a request to a server every like five minutes or something like that to see if some data had been updated. Webhooks just allow you to do that instantly.

Basically that server will now just send you the data when it's ready. So I'm just going to call this monday.com example webhook. Let's do the date as well and then I'm going to click save.

And then you'll see that when you set up a webhook in make.com, when you set up basically like a bin, just awaiting some type of data, it gives you a whole URL up here. And when this URL is accessed, that's how your webhook will fire essentially. So Make is now listening for the data and will determine the data structure from the incoming data automatically. To initiate this, please send your data sample to the webhook address displayed above.

So I'm going to copy this address to the clipboard. I'm going to go back here. and paste it in. And now we have the same webhook URL basically from make.com being connected to Monday. Now there's some nuance to this and not all platforms require what I'm about to show you but Monday.com does specifically and sometimes it's just good to get in the habit of sending what's called a webhook response.

So that's what I'm going to do in a second. Basically because Monday.com has a specific requirement what they want you to do is first they're going to send over a request with a challenge parameter and then you need to return that as a response in order for them to verify that like you're legit this isn't just like some random server you're sending data to and i know that can sound pretty complicated so let's just let's just take it at face value first i'm going to click ok and then i'm just going to run this and now this is just going to be waiting data and then connecting and it's going to say that we failed to communicate with the url provided if we go back here you'll see that the run was actually completed and there was a request that was sent and received and if we click on it we'll see that we received a bundle with a variable called challenge with a long sort of unique string And so what we need to do is we actually need to send this back to monday.com in order for Monday to verify our webhook request. So if you think about it from Monday's perspective, why are they doing this?

Because they want to make sure that anywhere they're sending data to is like a legitimate place. The way that you solve this is you go down to webhooks and click webhook response as an action. You always want to send a 200. And then the format that it's expecting is what's called JSON. So JavaScript object notation.

JSON is just a curly brace and then another curly brace. And then inside of that, in this specific case, if we check here, verification will be first sent with a challenge parameter that needs to be returned as a response. So the key has to be called challenge, and then the parameter has to be that long string that starts with CZ8MN, all that stuff.

And so this is basically JSON format. We have an ID, which in this case is a string, which is encapsulated in these quotes. And then we also have another string that we're returning as a challenge. If this seems complicated to you or if you're not really sure how this works, don't sweat it. Monday.com is one of the only CRMs that require you to do this, but I thought I'd start with a hard one.

So we send it back, we receive the request here, and you see that module one has a challenge which looks long and now it starts with a T and a six. Then if we go back here, you'll see that the input to the module was this challenge object that we set up. And then if we go back here, you'll see that monday.com accepted the request and now it's asking us to change and actually define what stages we want.

So sometimes you'll have to do that. You can also just get in the habit of doing this yourself. I mean, you know me at this point probably.

I'm really scrappy. All I care about is getting the MVP out as quickly as possible. So once I've verified this, I'll usually just delete it. I don't give a shit. What we'll do now is we'll define the column that we want to watch.

So in this case, if you guys remember the column was stage. And then what we want to do is we want to monitor when it changes. to generate proposal here.

So now the rule is when stage changes to generate proposal, send a webhook from Monday. Okay, and we'll add that to the board. So now we have sort of a rule set up, which is quite nice. Okay, okay. Now, what I always like to do is test.

So I'm gonna run this. I'm gonna go back here, go to this column where it says pair incorporated, and then change it to generate proposal. Then I'll move back here. And what happened?

We received the request. And the really cool part about Monday is in the request that is sent, it doesn't just include like the fact that the stage was changed. It includes a bunch of information about that record.

So we have the app that it's coming from. We have the type called update column value, the trigger time, the subscription ID, the user ID, all of this random information that may or may not actually be relevant to us. Now, I know from personal experience that there is one piece of information that is hyper relevant to us.

It's called the pulse ID. The pulse ID is basically called like the record ID in Monday. Now what I mean by this is if you click on this notice how the URL changes to slash pulses slash and then this 605 879 4861. It's almost like a phone number. You notice that that's the same key or yeah, that's the same key as this parameter here pulse ID. And so this is basically how Monday represents the ID of a record internally.

And so what we want to do is now that we have the pulse ID We want to send a request to Monday for this Pulse ID so that we can get all of the other fields here, like the company name, for instance, or the role name, or all of that other information. So what we're going to do here now is we're going to go to Monday, and there are a bunch of different modules that we could use to select, but the one that's relevant for us is going to be called Get an Item, right over here. I'm going to drag it out. Now the way that this works is we're going to use this ID and then we are going to grab the pulse ID here so 605 879 4861 and then click ok and now what should happen is when we update this record when we change the status to get proposal or generate proposal we should also automatically pull the Monday ID and then the whole record and that's how we'll get all the other information we'll get the deal link the estimated salary we'll get all this stuff so I'm just gonna change this back to discovery first and then I'm gonna change it back to generate proposal and we're gonna wait to catch the webhook and you know sometimes this can take anywhere from like five seconds to like 30 seconds you know Monday is like caching these queries so it doesn't always happen immediately.

It looks like this time was about 10 seconds or so. So we received the same values that we did initially and now we've actually gone through and we've gotten the item. And the way that we get the specific data about the item is under mappable column values. So you'll see that there's a status field, there's a date one, there's a date two, there's a person, there's a link to contacts, there's...

an email address on file, which is just fake. We have all of the fields that we would ever possibly need basically now in order to go out and generate a proposal. So what do we want to do? I'm just going to use the deal name as the company name.

So I mean that's not entirely accurate because it says Pair Inc. COO here, but that's probably just the simplest. So let's just pretend the deal name is the company name.

And then I'm going to use this role column over here as well, and I'm going to use that to scaffold this proposal. So I'm going to go back here now. And now that I have the item, I'm going to create a Google Slide. There are a bunch of different presentation options we can choose.

The one that matters for us is this one here, Create a Presentation from a Template. So we're going to create a new presentation by replacing all tags like curly brace, curly brace, variable, curly brace, curly brace. This is what I mentioned earlier.

And we're going to first... I'm gonna select this first. So what do I want to call this? Consulting proposal? Yeah, let's see if we could find consulting proposal in here.

Yes we can. It's the first result. Awesome.

Okay and then for title I'm just going to call it proposal 4 and then we're going to just make it be the name. That looks good. These fields here, copy a presentation, choose a drive, I usually just always leave them the same.

There's some nuance here like if something isn't in your Google Drive, it's just shared with you, then in order to find it, you're gonna have to go down to shared with me. Sometimes you can map the ID as well. For instance, if you know the proposal ID for some weird reason, or maybe you're using it from somewhere else, this is the proposal ID here.

You could theoretically go copy a presentation by mapping and then just paste in this proposal ID. So you obviously have a lot of options, but just to keep things simple, I'm going to use by dropdown and then I'm going to select it manually like this. Okay, great. And you'll see that there are some values that are sort of pre-filled waiting for us.

The reason why this happened is because we inserted these curly braces in the Google slide. And so when you do that, Make.com recognizes these when it goes in and looks through the file. And then this is how you actually go through and replace them, which is pretty cool.

So what variable do we need for the company name? Well, we need the name right here. So Pear Inc., for instance.

What name do we need for the role name? Well, we need... And the unfortunate thing is you can't always see what the variable name is here.

Like Monday is not very good with sending over the variable names. And so you see it's like we have link, text, email, formula, numbers, yada yada. Not very good. In order to find that, what you do is you do what's called Monday developer mode.

And I'm not going to go through how to get Monday developer mode. But feel free to just Google how to get Monday Developer Mode. When you click the three brackets on the column, it'll actually show you what the column ID is.

And that's only if you're in Dev Mode, which I am. So now I know that the column ID of the field that I'm interested in is called role. So in order to find it, I just go back here.

Sorry, it's called text. So I scroll down to where it says text. You see it already says COO, so I kind of already knew that already.

And then we're good to go. Now we can choose to add this to... just whatever your Google Drive is. We can also like create a Google Drive folder before and then put this inside of that Google Drive folder if you want to remain more organized. I'm going to keep this as simple as possible but suffice to say it's all very straightforward.

It'll ask you for the new document location so let me just click here and choose and I'm just going to choose a backslash which is just like the root of the folder. Okay great that looks pretty solid to me. So now we have three steps set up.

We have the trigger which receives the webhook from Monday. Then we have an intermediary step, which you can kind of think of in developer terms as like your database lookup. I mean, this is a CRM, which is slightly different.

For all intents and purposes you're like looking up values in Monday and then we have a Google slide at the end which is going to like generate a document for us. Now I want to go one step further and I want to take the URL that's generated from that Google slide and then I want to put that back into Monday.com and what I want to do is I want to put it under this column here called proposal so that when a salesperson changes the status of generate proposal they immediately get a link there that then they can click make some minor edits to that they need and then maybe send out afterwards. We could obviously also just send these out directly to the customer. We have the deal email address right over here.

So you know you can imagine a workflow where maybe you change this to generate proposal, it generates the proposal and then it automatically sends it to whatever this email address is. The sky's the limit and you can automate it however the hell you want. But for this particular purpose I'm just pretending that maybe you guys still want to customize it or maybe you just want to draft if you don't actually want to send it. So first things first I'm just going to test this to make sure this flow works.

I'm going to select this. I'm going to change the status back to discovery, and I'm going to go back to generate proposal. Then alt tab over, and you see module one was fired, then module two was fired.

We got all the data from Monday, and now Google Slides is operating. You see that the Google Slides function completed, and you'll see that what it outputs is what's called the presentation ID. It doesn't actually give you a link or anything like that, and that's kind of difficult for us because we want a link.

We can't really use this presentation ID very effectively. I am going to, just because I understand how these work, I'm going to access the presentation ID directly, just so we can see the example, but this isn't really what we want to do. Okay, great.

So we see that this worked. It was consulting for a pair incorporated. Right here is the company name. A brief look at recruiting your next COO was the role name.

I also added the variable name in the header and in the footer and stuff, so that was updated too. So, you know, you see that this is possible and it works, but we'll see how it goes. why don't we now work on generating that link and then updating the proposal column?

That would probably make it as simple as possible. So the way that you do that in Make.com is basically the Google ecosystem differentiates between a Google Doc and a Google Sheet, a Google Slide, and then just like a Google Drive file. And so all of these are technically being generated in Google Drive. And so we need to use the Google Drive module in order to access this and make it shareable. So if I click this, you'll see there are a million and one different modules that I could use.

The one that we're interested in is one called Get a Share Link, which is right over here. So this allows you to get a shareable link for a file or folder. And the reason why Google has separated these is because, you know, there are many instances in which you want to create a presentation but you don't actually want to share it.

They just wanted to give you the option to do that without necessarily, you know, draining their own internal resources. So we're going to get a share link. Let me think about this. I should probably use this one here. So I'm connecting to the account that has access to that file that I just generated.

I'm not going to choose a drive. It's probably going to be in my drive. We're going to select a file, not a folder.

The file ID is up next. And as I mentioned, Google Drive files are homologous with the IDs, or the file IDs in Google Drive are homologous with the Google Doc ID, or the Google Sheet ID, or the Google Presentation ID. And so in this case, it's just called the presentation ID. We basically stick that in here and then it would find that file in the Google Drive ecosystem.

Now there are there's some nuance here. If you aren't familiar with the way that Google does roles, usually when you share like a Google Doc or a Google Sheet or something, you can define the level of permission that you want to give somebody. In my case, I know that the level of permission I want to give somebody is the writer permission and I want to generate this for anyone. So I don't just want to, they don't have to be a user at my domain or anything like that.

I just want anyone to be able to see it. And then allow file discovery is just going to be set to no. I don't want people to be able to just like browse Google to find this.

I only want them to be able to find this if, you know, this is like explicitly given to them. Okay, great. So what I'm going to do now is I'm just going to test this directly.

The way that I'm going to do that is I'm going to copy over this presentation ID. So I just control seed and then I'm going to right click the Google Drive get a share link module and then run it. I'm going to paste this presentation ID in. So. getting the hard-coded ID from the Google Slide that I just generated and I'm using it now to one time, one module test this.

So I right clicked it, the scenario owner is completed and now we're going to double check to see what the share link is. You see how the output of the module has a share link right down here, exactly what we want, and then I'm going to paste this in and we're going to see our accessible file. So obviously that's not the file that we want because this is still templated, so this doesn't have the correct, like this doesn't have the correct variable filled in.

And I think I know the reason why. Pretty sure my dumb ass just copied over the completed template rather than the actual file. So let me see if I can get the actual ID that I wanted right over here.

Yeah, there we go. Let's run this with the actual presentation ID. Okay, there we go.

Now this one will say pear inc, beautiful. And so now we have access to the link specifically for the proposal that we just generated. What I want to do now is I want to make this general and then I want to add another step in here that goes back into our monday.conf crm and then it updates the proposal column.

And so how do you do that? Well, I'm going to go back to Monday and then I'm going to say, we can scroll through this together until we find it. What we need to do is we need to basically update an item or add information to an item. So let's see here. Update column values of a specific item.

That's this one right here. So the column value we're going to be updating obviously is going to be, oh first we have to select the board ID. So I know that it's called deals.

That's its name. The item ID that we're going to select, we're not actually going to hard code it in. What we're going to do is we're going to map it.

And what mapping is, is it's just a way to access the IDs of fields that we are referencing from earlier. Which may sound complicated, but essentially, Make.com will always allow you to either try and hard code this, so every single time that the scenario runs, we only ever want it to run on the record called HSBC, which is down here. Or it allows you to make it dynamic, so that... you know, the item that we reference depends on a previous step that we've already set up.

So that's what we want to do here. If you guys remember, if we scroll all the way down at the very bottom of this whole like variable list, there was a variable called pulse ID which referenced the original record whose stage that we updated to generate proposal. And so we're just going to reuse this because that is the item ID of the record in monday.com.

Next step is we're going to change a column value. So go to column ID here. And then if you guys remember, what we want to change is we want to change the column called stage. Now let's do proposal first and I'll change stage after. So let's do a proposal and then we want to add the link in.

And the way that Monday specifically does links, and I only know because I develop on this platform all the time, is it allows you to put a URL in and then it also allows you to put a text field in. You'll notice that there's some nuance. If you look at the URL field, it's thicker and bolder than the text field.

Usually fields that are bold in make.com are required, and then fields that aren't, you know, that are kind of skinny, they're optional. And so I know for a fact that all we need to do is put a URL here, so that's what I'm going to do. Then we don't actually have to put any text here, but you could if you wanted to.

You could call this like Google Drive, or maybe you could just copy over the link. I do want to change one other thing. What I noticed while I was developing this was... When the record stage is changed to generate proposal, it stays at generate proposal.

I would prefer if it goes back to discovery just to inform the rest of the team that this is done. So I want them to be able to go from discovery to generate proposal. They'll see the status change back to discovery and that'll notify them that they're basically good to go. This is a minor UX pattern, but I recommend using UX patterns like this wherever possible. Otherwise, you know, if you have a team with a big 20, 30, 40 person sales team, It can get pretty complicated and people can kind of forget which things have been generated and which things haven't.

So I'm going to go back here to Stage, select that, and then under Index and Label, I'm just going to click Index. Monday has different ways for representing these things, but both are equivalent. And then I'm going to scroll down and I'm going to change the stage back to Discovery.

And then I'm going to click OK. So if you're following along, this scenario so far does five things. The first is it waits to catch a webhook from Monday and that webhook is sent out when the stage changes to one called Generate proposal when that happens we receive a bunch of information on the front end including the ID of the record that we're interested in What we do is we take that record and we put it into monday.com Using this ID field that allows us to then pull all of the data from that specific record including like the deal link the last activity the owner of the Close date, the proposal field, the role field, the deal email address. We basically like will query monday.com. Next, what we do is we use a pre-created Google slide template to generate a proposal and then fill in that proposal variable with a bunch of the custom fields that we just pulled from Monday.

And then because Google doesn't natively allow you to share that link with other people, what we're doing is we are getting a share link. And then the final thing that we do is we will add that link back to the Monday.com record in the proposal column. And then we also update the stage back to Discovery.

So now that I think we all understand what exactly is going on, let's run it in full from start to finish. I'm going to click run so that it's waiting. I'll go back to deals here.

And what I'm going to do is I'm going to update this generate proposal, and I'm going to try and tab back so we can see it catch. Okay, great, we did. Now it's getting that item. It's then generating the proposal in Google Slides.

It's then generating a share link. And then finally, it's adding the column values that we wanted it to add back to Monday. So let's go to Monday and see what happened. If you'll see, the proposal field has now been filled out with a long Google Drive link. And this is now the link to that finished proposal.

We can give it a click through. It should say proposal for pair incorporated, which it does. A brief look at recruiting your next COO.

Awesome. And then if we go all the way back to the left, the stage field is now back to discovery, which is adequate user, basically like a user experience update. So anybody that's using this now knows, okay, we're good to go. We can proceed with the next step of the process. All right.

So that may have seemed simple to you Monday and make.com veterans out there. or it may have seemed unreasonably complicated to you Make.com newbies out there. But I assure you that this design pattern is basically all you need to know to do anything of relevance with a CRM and then a third-party external tool.

The vast majority of the time, your value as an integrator, as an automations consultant, is going to be to come in and then just to pull from a bunch of data that's already available to template out a feature or template out a document or something like that. And this is an extremely simple design pattern that in the companies that I work with saves them anywhere from 5 to 10% of their margin. Because now their sales team doesn't really have to do anything except for the high leverage activities that actually make the company money, usually the selling part.

So I hope you guys liked this video. If you got any requests for specific systems you want me to set up, please send them over. Otherwise, like, comment, subscribe, and we'll see you in the next one.

Thanks.