How to submit a Google Form response using a Webhook

  • 22 October 2021
  • 4 replies

Userlevel 7
Badge +11
  • Community Manager
  • 5076 replies

Hey friends! Want to have a Zap submit Google Form responses? And have those responses appear in the list of form responses in Google Forms, as well as in the connected Google Sheet?

Well, I have good news for you! After some digging through Google’s API docs, I figured out a way to do that using a Webhook action. You’re welcome ;-)


In order to set up the webhook we simply need to know two things:

  1. The URL for your Google Form

  2. The IDs for your Google Form fields 

Don’t know how to find that info? No worries, we’ll be covering that next...

How to get the URL for your form

In Google Forms, click on the eye icon to preview your form:


This will open the form in a new tab. In the address bar you’ll see the URL for your form:


How to get the IDs for each form field

A easy way to get the field ID is to use the pre-filled link option. To get the pre-filled link, when editing your Google Form click the 3 dots icon on the top right of the screen and select Get pre-filled link:


This will open a new tab with a preview of the form. Here you’ll need to fill out all of the fields in the form so that they have a value. Then click the Get Link button.

At the bottom of the screen a message will appear with a link that says COPY LINK - click that to get the pre-filled link copied to your clipboard.


Here’s an example of how that pre-filed link would look:!&entry.604818352=Superman

In the example above, I’ve highlighted the IDs of each field in bold. These are followed by the value that was entered for each field. 

Setting up the Webhook

In the Zap that you want to have submitting the form, add a Webhooks by Zapier step and select the POST action event.


For the URL we’ll want to take the form URL we found earlier and replace the viewform text that appears at the end of it, with formResponse instead. The new URL will look something like this: 


Next, make sure the Payload Type has been set to form:


Then in the Data section you’ll want to start copying over the IDs for the fields from that pre-filled link. The IDs should go on the left and the values to be added to those fields should go on the right:


For fields with predetermined options to choose from (like checkboxes), make sure the values you’re sending exactly match the available options or you’ll run into a Bad Request error. 

Finally, you’ll need to add a Content Type header with a value of application/x-www-form-urlencoded:


Next, you’re ready to test your Zap. From the Test Action screen, click the Test & Review button to submit the response. That should then add the test form response into both Google Forms and Google Sheets:


And that’s it. I hope you find this workaround useful! :)

4 replies

I love this! Thank you!


I’m having a bit an issue with the authentication. 

“The app returned "Unauthorized".”


do I need to add an API key or something?


Userlevel 7
Badge +11

Hey @cvelez, welcome to the Community! :slight_smile:

Hmm, it shouldn’t be necessary to provide authorisation. That said, I’ve seen that “Unauthorized” error in the past when a Google Form had permissions set so that only users in the form owner’s organisation could view it. If that’s the case here, can you try adjusting the permissions for the form in Google directly to see if you’re then able to successfully submit the webhook without error?

I don't understand the point. What would be a use case for having a form filled out? Why is this form being filled out this data being taken from someone and put into the form? Doesn't Google forms already create a spreadsheet once the form has been submitted? 

This is exactly what I am looking for. Unfortunately, getting the following error:


Failed to create a request in Webhooks by Zapier
Page Not Found


I also tried changing the url slightly based on an actual form submission url from chromes devtools/network but getting the same error:


Thanks in advance for any ideas on what to try.