Create Webhooks and Export Data to Spreadsheets in 5 Minutes with Make
No coding skills required. Just follow along and click.
I’ll show you how to create a public webhook endpoint and set up a router based on the content of a payload. We’ll map fields from JSON to different sheets within the same Google Spreadsheet file. Sounds good? You could start with a template, but it’s so easy that I’m not sure a template would actually save you much time. So, we’ll do all the steps manually.
This might not seem like a difficult task if you know how to program, but I’m sure you can’t do it in 5 minutes, let alone 50. If you’re an experienced developer, you know exactly what I mean. The hard part isn’t the programming (ChatGPT can even write the code for you); it’s figuring out where and how to host your application. Maintaining the software is another beast entirely and can be a massive time sink. You don’t want to deal with this kind of ‘unsexy’ app this way — it’s a huge waste of time.
Software has become a part of almost everyone’s life. Applications are born and die every day, but the total number keeps growing, much like the human population. It’s getting harder to come up with a truly unique idea for software. Whatever idea you think of, there’s a very high chance that apps already exist for it. (I use plural nouns because there are countless clones, including clones of clones.) With the sheer number of quality apps and services out there, this is the perfect moment for workflow automation platforms to shine. Do you know what those workflow automation tools do? They simply connect the dots for you.
What is Make? Make (formerly Integromat) is a no-code workflow automation platform. There are many others, like Zapier and n8n. I was about to learn Zapier because it was the first name I heard, and people talked about it a lot (plus, I see their ads everywhere). Zapier seemed like a good starting point — until I saw the price tag. The free plan doesn’t even include basic features like webhooks. While it’s a great platform, it’s significantly more expensive than others.
On the other hand, n8n doesn’t offer a free plan for its hosted solution, but you can install their open-source software on your own server and use it free of charge. This makes it an excellent option if you want to set up workflow automation for your entire organization.
If you want to get started quickly and see how workflow automation works, make.com is a great option among these choices. It offers a generous free plan and reasonably priced paid plans.
Disclaimer: That’s my affiliate link — you can ignore it if you don’t want me to earn a small commission, you meanie! But hey, you could get your own affiliate link before convincing your organization to buy the most expensive plan. (Just kidding — don’t do that, or you might get fired. Seriously though, check your employee handbook first.)
Setting Up a Webhook Endpoint
First, go to the Scenarios menu on the left pane (1) and create a new scenario (2). A scenario is essentially a workflow. I’m not sure why they avoid using the word ‘workflow.’ Zapier is even stranger — they call a workflow a ‘Zap.’
I just filled in the blank space with Blank Space. The screenshot of ‘Blank Space’ is not part of Make. I know you’re not dumb, but I have to say it like one of those warnings: ‘The kettle’s surface may become hot.’
Oops, I just told you what country I live in without actually saying it!
I’m not a big fan of Taylor Swift. I like some of her songs, but what I admire most about her is that she keeps releasing new ones. Your manager would probably like her because she consistently delivers.
Sorry, I’m a father of two — it’s hard to hold back a dad joke.
After clicking ‘Create a new scenario,’ you’ll see a big plus sign. Hover over it and select ‘Webhooks,’ then click ‘Custom webhook.’ You’ll be prompted to enter a webhook name. I chose ‘Quiz Event Recorder’ because that’s what I want this workflow to do.
Voila! You’ll get the public URL for your newly created webhook. Save it somewhere, as we’ll use it later, and keep it secret. I doubt it will be useful for malicious users unless they really know the ins and outs of your workflow. But just in case, don’t share it publicly.
You can try accessing the URL with your browser now, and you’ll see this message: ‘There is no scenario listening for this webhook.’ This means your workflow (ahem, scenario) isn’t active yet. We don’t have any modules in this workflow yet; we’ve just added a trigger — an entry point for your workflow. Let’s add more modules (nodes).
Adding Google Sheets Module (Node)
Writing a program to manipulate Google Sheets takes time, especially if you’ve never done it before. The most time-consuming part is probably dealing with OAuth authentication and figuring out how to store your credentials securely. On the other hand, using Make or another workflow automation tool is just a few clicks away.
Let’s start by creating a new spreadsheet in Google Drive. In this example, I’ll name it ‘My Quizzes Participants’ to record the results of a quiz. I’ll create two sheets: ‘Participant Started’ and ‘Participant Completed’ to record who started and who completed the quiz, respectively.
Now, it’s time to wire things up. Click ‘Add another module,’ select ‘Google Sheets,’ and then choose ‘Add a Row.’ There are many other actions you can perform with a spreadsheet, such as adding, editing, and deleting rows, cells, or sheets.
Before working with Google Sheets, you need to grant Make permission to access your Google Drive. Then, it can establish a connection to your Google Account. You can have more than one connection if you have multiple accounts. Make sure you’ve filled in all the required fields, as we’ll start testing shortly.
Wait… we haven’t told it how to map our data yet, have we? If we test the endpoint now, it should fail, right? If you have this question in mind, you’re definitely a programmer (It doesn’t matter what you do for a living — you have a programmer trait!). The answer is, it won’t work, but we want to test it for a different purpose.
One of the awesome features is that you can use the tool to determine the data structure. You don’t need to dig into the API documentation to find the fields you want to map and type them in manually. Not only is that inconvenient and error-prone, but it’s also not how a no-code platform works. We’ll get to this part later because we need to set up the other end of this integration — the system that triggers this webhook.
My Quizzes App — The other end that triggers
My Quizzes is a Slack app with a free plan that you can try out. In case you’re not familiar with Slack, it’s a messaging platform designed for team collaboration and communication, used by almost 80% of Fortune 100 companies. So, it could be worth learning. Its free plan works great for testing and development (if you don’t mind that your messages will be inaccessible after 90 days). You can create a new Slack workspace here and start integrating with it. No, I don’t get any commission from Slack — it’s just free advertising.
Anyway, if you don’t have Slack or don’t want to use it, that’s fine because I’ll show you the exact same JSON payload I use. I’m using My Quizzes as an example because it’s very simple and quick to set up. In addition, you’ll get a feel for how workflow automation works in a real-world scenario.
Let’s head to the Slack Marketplace and install My Quizzes. https://slack.com/marketplace/A06D2MLN3NV
Disclaimer: My Quizzes is the app that I made.
I won’t show you how to install a Slack app since it’s just a couple of button clicks. After you’ve installed it in your Slack, go to the My Quizzes home tab. Click ‘Add apps’ and search for My Quizzes if you can’t find it in the left panel.
Let’s start creating a quiz in one minute or less. That’s right! I’m going to use AI to generate a quiz for me.
In the My Quizzes home tab, look for the button named ‘Create Quiz with AI.’ Click that, and you will see the first modal dialog asking you what kind of quiz you want to generate. I’m a Harry Potter fan, so I simply enter that and set the number of questions to 3, as I don’t want it to be too long for this test drive. After the AI has generated the questions for you, the system will take you to the quiz edit screen. Look for ‘Webhook Events’ — that’s where we want to paste our webhook URL. You can paste the same webhook URL you got from Figure 3 into the ‘Participant Started’ and ‘Participant Completed’ fields.
Mapping JSON Fields to Your Spreadsheet
I really like this step because it shows me how much time I’ve saved. Instead of digging through documents that might not be up-to-date, I can simply go shopping for the fields I need. The cool part about My Quizzes Webhook Events is that you don’t need to actually perform the action to get the JSON payload. Just scroll down a little, and you’ll see the ‘Test Webhook’ section, as shown in Figure 6 below, which allows you to simulate the event without actually triggering it. In this case, we want to select ‘Participant Started.’ (Sorry, I changed my laptop settings to dark theme, so the screenshots will be dark from here on. Pun intended :) )
Before hitting the ‘Test’ button, you need to go back to Make and click ‘Redetermine Data Structure.’ Currently, your scenario is in design mode, and the webhook is not listening for any requests. Clicking ‘Redetermine Data Structure’ will activate your webhook endpoint until it receives a request, and that’s when the magic begins. Now, click the purple button in Make, followed by the ‘Test’ button in My Quizzes.
Once the webhook receives the first request, the purple button will change to green text saying ‘Successfully determined.’ Now, go back to the Google Sheets module (I’ll use Make’s term ‘module’ from now on since you’re probably familiar with the fact that a module here is a node).
Click the Google Sheets icon, then click ‘Refresh’ next to the ‘Table contains headers’ field to refresh the data. Now, click ‘A,’ and a dialog will pop up containing all the JSON fields that My Quizzes has sent to your webhook endpoint. Let’s add some fields by clicking the value field and then selecting the JSON field you want. Add ‘participant: id,’ ‘participant: display_name,’ ‘participant: real_name,’ ‘participant: time_zone,’ and ‘started_time’ as shown below in Figure 9.
At this point, we haven’t added the sheet headers yet. Let’s go ahead and add the headers to your Google Sheet. Make sure to put them in the correct sheet — ‘Participant Started.’ After you’re done, switch back to Make and click ‘Refresh’ as shown in the rightmost screenshot of Figure 9. Your newly added headers will appear in place of the placeholder alphabets.
This is it! We’re ready to test our new scenario. Before clicking the ‘Test’ button again (Figure 6), make sure to save your work first. Then, activate the scenario by toggling the ‘Immediately as data arrives’ option. This ensures the scenario will execute immediately whenever the webhook receives data and will continue monitoring for incoming requests.
Once the toggle turns green (Figure 10), your scenario is active, and you can click the ‘Test’ button now (Figure 6). Your data will be added to your spreadsheet.
Now that we have our first flow working, we should celebrate — even if it’s just a basic one. I believe that if you try doing it again, it will take less than a minute to set up. We spent some time getting familiar with the tools and concepts, but once you get it, it’s as easy as pie.
As mentioned earlier in this article, we plan to support two events: ‘Participant Started’ and ‘Participant Completed.’ We’ve got the first one working. To get the next one working, you’ll need to learn how to route the data flow based on the content of that data. This article is already longer than it should be, so I’ll show you how to do that in the next one. You’ll also learn how to use additional modules from the Google Sheets app and understand some of their limitations. The next step will be a bit more challenging, but your scenario will look much cooler, and you’ll truly see the power of workflow automation.
As promised, here’s a sample JSON file in case you don’t want to install My Quizzes. If you’re using Windows and don’t have a Linux subsystem, you can run the following curl
command using an online tool here.
curl --location 'https://hook.us2.make.com/{YOUR_HOOK_ID_HERE}' \
--header 'Content-Type: application/json' \
--data '{
"event_type": "ParticipantStarted",
"quiz": {
"id": "b10181b36020093f517056592d8e76107fd38731cba32d96ecbf7d63a9866d6c",
"version": 1735712333,
"title": "Harry Potter Quiz",
"total_questions": 3,
"full_score": 3
},
"participant": {
"id": "U8D7B51HZ",
"display_name": "Huss",
"real_name": "Hussachai Puripunpinyo",
"title": "Cheffy Executive Officer (Let me cook)",
"time_zone": "America/Los_Angeles"
},
"started_time": "2025-01-02T05:31:50Z"
}'
Thank you for reading, and please stay tuned if you want to learn more about stuff like this. I know some people prefer videos, but I made this article for those who like to read and move at their own pace.