Webform allows you to create powerful forms in Drupal without the need for any custom code. You can use it for a basic contact us form with a few fields such as name, phone and email, or it can also be used to create complex multi page forms with conditional fields.
If you want to allow your editors to create their own forms without the need of a developer then install and teach them how to use the module. If you want to learn more about webform we have a two part series which will help you get started; Getting Started with Webform in Drupal 8 and Moving Forward with Webform in Drupal 8.
Collecting submissions using Webform is easy, but what if you want to integrate the module with a 3rd party SaaS provider? What if you want to push all contact form submissions into your CRM system, or add a row into a Google Sheets spreadsheet.
Of course, this can be done by a developer through the right APIs but you can also do it without writing any code using a service called Zapier.
In this tutorial, you’ll learn how to send Webform submissions into Zapier which will then add it as a row into a Google Sheets spreadsheet.
What is Zapier?
Zapier is an automation platform which lets you create workflows based on an action. For example, you could create a workflow when a user subscribes to a MailChimp list it’ll add the contact in a CRM (if supported by Zapier) or a Google Sheets spreadsheet.
It has integration with over 1000 SaaS applications and I do recommend that you have a play around with the service if you’ve never used it. They do offer a decent free plan which is more than enough to get you started.
Personally, if I’m looking at using a new SaaS application the first thing I check is if it has Zapier integration that way you can move data around and you have more flexibility.
How Does Webform Send Submissions to Zapier
Submissions are sent to Zapier using a POST request. This can be configured by adding a “Remote post” handler to a form. When a submission gets added, Webform will send it via a POST request using the URL in the “Remote post” handler.
For this tutorial, I’m going to assume you know how to use Webform. So all we’re going to do is download the module and install Webform and Webform UI. We’ll use the default Contact form that comes with the module.
Composer require drupal/webform
Step 1: Create Zap on Zapier and Get POST URL
If you haven’t already, go ahead and create an account on Zapier. It is a paid service but has a free plan.
The first thing we’ll need to do is create the Zap where we’ll define a trigger and action.
1. Click on “Make a Zap!” in the top right.
2. In the “Choose a Trigger App” page, click on Webhooks in the “Built-in Apps” section down the page.
3. Choose “Catch Hook” and click “Save + Continue”.
4. Click Continue on the “Pick off a Child Key” page.
5. Copy the POST url because we’ll need it for Webform.
Step 2 : Set up Remote Post Handler
Using the POST url from Zapier which we got in the last section, we’ll need to create a “Remote post” handler in Webform.
1. Go to Structure, Webforms and click on Settings on a Webform. For this tutorial, I’ll use the default Contact form that comes with Webform.
2. Click on the “Emails / Handlers” tab, then click on “Add handler”.
3. Click on “Add handler” on the “Remote post” row.
4. In the Completed section paste in the URL we got from Zapier and click on Save.
Note: You can add a URL if the submission is updated or deleted. That’s a nice bit of added flexibility. I should also note that this is all the configuration required on Webform’s part, cool isn’t it!
Step 3: Send Test POST to Zapier and Finish Configuring Trigger
Let’s now jump back into the Zap we started building in step one.
1. Once you’ve configured the “Remote post” handler click on “Ok, I did this”.
2. Now go back to your Drupal site and submit the actual form so it sends a POST to Zapier. This is a required step.
3. Once you’ve sent a test POST, you should be on the “Pick A Sample To Set Up Your Zap” section. You can view what was in the post by clicking on the down arrow.
When you’re ready click on Continue.
Step 4: Configure Action in Zap
At this point, we’ve configured the trigger in our Zap and sent a test submission. We know that the POST request from Webform worked because Zapier received it.
Now we need to configure the action; where the submission will be stored.
1. Click on Google Sheets on the “Choose an Action App”.
2. Choose “Create Spreadsheet Row” and click on “Save + Continue”.
3. Connect Zapier to your Google account, then click on “Save + Continue”.
4. From the Spreadsheet field select the actual spreadsheet you want the submissions saved into.
5. Select the Worksheet within the spreadsheet.
If you see the message below it means your spreadsheet doesn’t have any headers.
Go and add a header for each column you want to save in your Google Sheets spreadsheet.
6. Now go and map the fields with the values below the “Catch Hook”.
Then click on Continue.
7. Click on “Send Test to Google Sheets” to test everything out.
Check your Google Sheets you should see a new row in it.
Then click on Finish.
8. Don’t forget to name and Zap and switch it on.
Step 5: Test Webform Submission
Go to your Webform and create an actual submission. Once submitted you should see the submission as a row in the spreadsheet.
If you need to debug what’s coming into Zapier or you want to see all the submission data which has been pushed into Zapier, then go to the “Task History” page.
From this page you can view if the task was successful or if there was a error. You can sometimes get an error if the API is down and not working.
You can also see what data has come in and out by clicking on the Task.
This gives you some nice visibility into what Zapier is handling.
The combination of Webform and Zapier is powerful. Almost everyone can be trained to use Zapier and create Zaps which will open a whole new world of possibilities. You’ll finally be able to connect your CRM with Drupal and without the need for custom code.
3 thoughts on “Integrate Webform and Google Sheets using Zapier in Drupal 8”
Dude…. this is awesome! I didn’t know Zapier!
Can Zapier post to Drupal from another source say wordpress to Drupal?
I don’t think there is official support. But I recommend you do a quick google search “zapier drupal”.
But with custom code anything is possible. You could write a module to capture requests coming from Zapier.