If you live in spreadsheets (or your clients do), pushing form submissions straight into Google Sheets keeps everything in one place: leads, inquiries, registrations, internal requests, and more. No manual copy‑paste. No CSV exports. Just clean rows you can sort, filter, share, and report on. Connecting WordPress forms to Google Sheets doesn’t require any code or even much of your time. Better yet, once you’ve set it up, it just works. No babysitting connections! Here’s how to get it done in 5 easy steps!
Set it up: WordPress forms to Google Sheets in 5 easy steps
What you’ll need
-
A WordPress site with the free Ninja Forms plugin installed.
-
The Ninja Forms Zapier add‑on (available à la carte or included with select memberships).
-
Accounts for Zapier and Google.
1) Open (or create) your form in Ninja Forms
Pop open the form that you want submissions to go to Google Sheets for.
With the Ninja Forms Zapier add-on installed and activated, you’ll have a Zapier action available to add to your form under the Emails & Actions tab of the form builder. Add that now and leave your form open in its own tab when you move on to Step 2.

2) Create your Zap
Thanks to Zapier’s new AI Zap builder, this is an absolute breeze. Just tell Zapier what you want to do. I told it:
send form responses from Ninja Forms to Google Sheets
And just like that, I have my Zap.

3) Copy & paste Zapier’s webhook into your form
This is how your form and Zapier know how to talk to each other.
In your Zap, click Ninja Forms – 1. New Form Submission and copy the webhook from there:

Now back over to the tab you left open with your form and the Zapier action you just added.
- Paste the Webhook into the Zapier Web Hook field of the action.
- Save (Publish) the form
- Preview the form
- Submit the form
This established the connection between form and Zap. Head back over to your Zap now, same spot you copied the webhook from. Click Test Trigger. You should receive confirmation of the connection. If not, you skipped a step above. Just walk back through it, no worries.
4) Configure your Zap
First, create or locate your spreadsheet. Make sure it has headers; once this is set up, each submission of the form will create a new row and each column will correspond to a field or information about the submission, like Date or ID. Here’s mine so far:

Now back to your Zap. Click on Google Sheets and See the Action Event setting.
Create Spreadsheet Row is the option you want for sending each new form submission over as a new row in your spreadsheet. Other Action Events exist and may come in handy for spreadsheet power users. We won’t touch on each here, but peruse in Zapier if you’re interested!

Now click continue. You’ll be prompted for the location of the sheet (My Google Drive is the “standard” option), the name of the spreadsheet, and the specific worksheet within the spreadsheet you want submissions routed to.
Once that’s done, you will see each column of your sheet by its header label:

Each column of the sheet needs to be mapped to your form now. Click the + sign of the column header. Here you’ll see each form field and bit of metadata about the form submission (like submission ID, submission date, etc) that can be mapped to a column.
For my Date column, I’m capturing the date submission metadata (I don’t have a date field on the form).
For the others, I’m selecting the corresponding form field. Back in Step 3 you connected the form and zap via webhook by previewing the form and making a test submission.You’ll see that test submission’s data next to each field that can be mapped.
Note that for my radio field, I can see the test submission for the field + each individual list option. I want to select the test submission for the field here so that the sheet will know to grab the user’s selection in the field to pass to the sheet. If you choose an individual list option instead, that option will be what always appears in the sheet for the submission. Useful for edge cases, not useful for our purposes here.

5) Test and publish your Zap
Now continue and test. You should see your test data in the sheet now! Publish your zap and you’re good to go.

Bonus tips
- One worksheet per form keeps columns consistent and avoids accidental overwrites.
- Lock the header row and avoid renaming or reordering columns after go‑live. If you must change the sheet later, hop back into Zapier and re‑map the fields.
- If your form collects file uploads, the Zap will pass file URLs. You’ll be able to click right through to the file. Especially convenient if you have File Uploads configured to send uploaded files to Google Drive.
You’re done! Your WordPress form now logs to Google Sheets
By following the steps above, you’ve eliminated copy‑paste and CSV exports. Every new submission becomes a clean row in Google Sheets that you can filter, chart, and share.



Maria Crencenzio says:
Can I make all submissions via Ninja Forms automatically feed a table created in Ninja Tables? That would be so awesome!
Quay Morgan says:
Hey! Ninja Tables is not actually an add-on we offer or support, it’s made by an independent developer that’s not affiliated with us. Keep an eye open for an official way to display submitted data as a front-end table very soon 🙂
JOHAN says:
Is it free? or you have to pay for adding the zapier add on?
Quay Morgan says:
Ninja Forms itself is free, and Zapier has a free account option up to a certain number of Zaps. There is a license fee for the Zapier add-on so that we can continue to keep it updated and support you with any questions you may have while using it 🙂
Alexandre Eggermont says:
I just bought the plugin and it’s not as easy as you say. It’s been 2h and it still doesn’t work. First step gets the data from the form yes, but it’s unable to feed it in the spreadsheet. It’s also unclear on how to do it. Do we need to create an empty sheet with titles named the same as the entries of the form ? (which I did, but it doesn’t work still)
I also don’t get this “Now just map the fields of your form to the sheet headers you want to populate”. What do you mean by just map ?
I get this message “We created a spreadsheet row! We were able to create a spreadsheet row in your Google Sheets account.”, but it’s creating an empty row, all the data are empty.
Thank you
Quay Morgan says:
Well apparently when we updated this article to reflect Zapier’s new Zap workflow, we left out an important screenshot. Sorry for the headache. Looking back at the article under the “Now just map the fields of your form to the sheet headers you want to populate:” line, you now have a visual to work with for this step.
Basically, in the Zap under the “Customize Spreadsheet Row” section, you need to click on each field (these represent columns in your new row of the spreadsheet). When you do so you’ll have a list of the fields from your form that you can choose from to appear in that position on the sheet.
Again, sorry for the headache. It’s simple to do but missing the visual representation I can totally get where it would be confusing. Hope this helps 🙂
Alex Mirr says:
I had a hard time doing this before. I am very grateful to you for publishing this article so that I can do it easily. Sorry for bad my english
gina@waverlyhicks.com says:
This is working great except for my HTML fields in Ninja Forms. Those aren’t showing up as an option to map in Zapier. Is that possible with this setup?
Shaylee Hansen says:
The HTML fields are presentation-only fields. This means that any contents of an HTML field will not display in submission data . For additional assistance please do reach out to our customer support team here, where we’d be happy to assist with your specific issues: https://ninjaforms.com/contact/
Iheaneme Gregory says:
so I have a multistep form I would like to send the first step data over to google sheet before sending the other form data, is that possible as well?
Shaylee Hansen says:
Hello Iheaneme Gregory,
Please reach out to our customer support team so that we can further assist you: https://ninjaforms.com/contact