Connecting an Elementor form to Google Sheets can make lead management much easier. Instead of checking WordPress submissions one by one or copying information manually, you can have new form entries appear in a spreadsheet automatically.
And here is the good news: you do not necessarily need Zapier to make it happen.
In this guide, we will build the connection using an Elementor webhook and a Google Apps Script web app. The basic idea is simple: Elementor sends the submitted form data to a URL, Google Apps Script receives that data, and the script adds it to your Google Sheet.
Elementor officially supports a Webhook action for form submissions, while Google Apps Script can publish a script as a web app and handle HTTP POST requests through doPost(e).
Why Send Elementor Forms to Google Sheets?
Easier Lead Management
Imagine receiving 50 inquiries from your website every week. Searching through emails or WordPress submissions can quickly become messy.
Google Sheets gives you a simple grid where every submission can become a new row. You can sort leads, filter them, assign statuses, add notes, and share the information with your team. Beyond form submissions, you can apply this exact management system to store sales by learning how to Automatically Export Woocommerce Orders to Google Sheets.
Instead of treating every form submission like a separate message, you turn your leads into an organized dataset.
Better Team Collaboration
Google Sheets is also useful when several people need access to the same information. Your sales team, marketing team, or customer support staff can work from one shared spreadsheet.
You can add columns such as Status, Assigned To, Follow-Up Date, and Notes without changing the original Elementor form.
What You Need Before Starting
Elementor Pro
You need an Elementor form that supports the Webhook action. Elementor's current documentation lists Webhook among its available form actions.
If you already have an Elementor Pro form on your WordPress website, you can use that form as the starting point.
Google Account and Sheet
You also need a Google account with access to Google Sheets and Google Apps Script.
Create a new spreadsheet where you want to store your submissions. You do not need a complicated database. A basic Google Sheet is enough for this setup.
How the Integration Works
Elementor Webhook
The first half of the connection lives inside Elementor.
When someone submits your form, Elementor can send the submitted information to an external URL using its Webhook action. Elementor describes webhooks as a way for applications to automatically share information with another system.
Think of the webhook as a courier. Elementor packages the form information and sends it to the address you provide.
Google Apps Script
Google Apps Script acts as the receiver.
A published Apps Script web app can receive HTTP requests. Google documents that doPost(e) runs when a program sends an HTTP POST request to the web app.
Our script will take the incoming data and add it as a new row in the spreadsheet.
Step 1 — Create Your Google Sheet
Add Column Headers
Open Google Sheets and create a new spreadsheet.
For example, your first row might look like this:
| Name | Phone | Message | Date |
|---|
The exact columns depend on your Elementor form.
If your form asks for name, email, phone, and message, create corresponding columns in the sheet.
Keep the Sheet Organized
Give the worksheet a simple name such as Leads.
You can also add additional internal columns later, such as:
- Lead Status
- Assigned To
- Follow-Up Date
- Notes
Keep your original form fields easy to identify. A clean spreadsheet structure makes troubleshooting much easier later.
Step 2 — Open Google Apps Script
Create a Script
From your Google Sheet, open the Apps Script editor through the Google Sheets extensions menu.
Google's documentation explains that a script can be bound directly to a spreadsheet and can use the Spreadsheet service to modify cells and rows.
You will see a script editor with a default function. You can remove the starter code and add your own function.
Choose the Spreadsheet
Because the script is created from the spreadsheet, you can use the active spreadsheet or explicitly open the spreadsheet by URL.
For a simple setup, using the active spreadsheet keeps the code straightforward.
Step 3 — Add the Apps Script Code
Create the doPost Function
Add the following code to your Apps Script project:
function doPost(e) {
try {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Leads");
const data = JSON.parse(e.postData.contents);
sheet.appendRow([
data.name || "",
data.email || "",
data.phone || "",
data.message || "",
new Date()
]);
return ContentService
.createTextOutput(JSON.stringify({
status: "success"
}))
.setMimeType(ContentService.MimeType.JSON);
} catch (error) {
return ContentService
.createTextOutput(JSON.stringify({
status: "error",
message: error.toString()
}))
.setMimeType(ContentService.MimeType.JSON);
}
}This example assumes your Elementor webhook sends JSON data using the field names name, email, phone, and message.
Google Apps Script provides the appendRow() method specifically for adding an array of values to the bottom of a sheet's current data region.
Understand the Incoming Data
The important part is this line:
const data = JSON.parse(e.postData.contents);It reads the JSON payload sent by Elementor and turns it into an object that JavaScript can use.
Then this section:
sheet.appendRow([
data.name || "",
data.email || "",
data.phone || "",
data.message || "",
new Date()
]);takes those values and places them into a new spreadsheet row.
Why Field Names Matter
Your JavaScript property names need to correspond to the data being sent by the Elementor webhook.
If your actual field IDs are different, such as full_name instead of name, change the script accordingly.
Step 4 — Deploy the Script as a Web App
Configure Deployment
Your script needs to be publicly reachable by the Elementor webhook.
In Google Apps Script, choose Deploy → New deployment, select Web app, and configure the deployment.
Google's official documentation confirms that Apps Script web apps require a doGet(e) or doPost(e) function and can be deployed from the Deploy menu.
Set Access Permissions
For a website webhook to reach the script without a person manually signing in, the deployment must be configured with appropriate access permissions.
Follow Google's current deployment options because Google can change the available permission choices over time.
Once deployment is complete, Google gives you a web app URL.
Copy the deployed web app URL because this is the address Elementor will send your form data to.
Step 5 — Configure Your Elementor Form
Open Actions After Submit
Go to the WordPress page containing your Elementor form.
Select the Form widget and open:
Content → Actions After Submit
Elementor uses the Actions After Submit area to determine what happens after visitors submit a form.
Add Webhook
Click the plus icon in the Actions After Submit section and add Webhook.
A new Webhook settings section should appear.
This is where Elementor will be told where to send the form submission.
Step 6 — Add the Google Web App URL
Copy the Deployment URL
Paste the Google Apps Script web app URL into Elementor's Webhook URL field.
Do not use a random Google Sheet URL here.
The webhook needs the Apps Script web app endpoint, because that endpoint contains the doPost() function that receives the request.
Avoid Using the Test URL
Google provides a testing deployment URL that ends in /dev. Google's documentation explains that the /dev URL is intended for testing and is only accessible to users who have edit access to the script.
For your live Elementor form, use the deployed web app URL intended for the actual deployment rather than the development URL.
Step 7 — Match Elementor Fields With Google Sheets
Use Field IDs
This is one of the most important parts of the setup.
Suppose your Elementor form has these fields:
| Elementor Field | Field ID | Google Sheet Column |
|---|---|---|
| Name | name | Name |
| Phone | phone | Phone |
| Message | message | Message |
Your Apps Script should read those same property names.
For example:
data.name
data.email
data.phone
data.messageKeep Column Order Consistent
The order inside appendRow() determines where the values appear.
For example:
sheet.appendRow([
data.name,
data.email,
data.phone,
data.message
]);means the name goes into the first column, email into the second, phone into the third, and message into the fourth.
If you change the spreadsheet column order, remember to update the script too.
Step 8 — Test the Connection
Submit a Test Entry
Open your website and submit the Elementor form yourself.
Use clearly recognizable test information, such as:
- Test User
- test@example.com
- 123456789
- This is a test submission
Then open your Google Sheet.
If everything is configured correctly, the information should appear as a new row.
Check Apps Script and Sheets
If nothing appears, do not immediately rebuild everything.
Start with the basics:
- Is the Apps Script deployment active?
- Did you use the correct web app URL?
- Is the sheet name exactly
Leads? - Do the JavaScript field names match your submitted data?
- Is Webhook enabled under Actions After Submit?
- Did the form actually submit successfully?
Google Apps Script also provides execution information that can help you investigate script errors.
Common Problems and Fixes
Data Does Not Appear
One common problem is using the wrong URL.
Make sure Elementor contains the deployed Apps Script web app URL, not the Google Sheet URL and not the /dev testing URL.
Another possibility is that the script is looking for a worksheet called Leads while your actual worksheet is called Sheet1.
Check this line:
getSheetByName("Leads")If your tab is named Sheet1, either rename the tab or change the code.
Wrong Column or Field
If the name appears but the email is empty, the problem may be the field name.
For example, your Elementor form may send:
full_namewhile your script expects:
nameThose are different keys.
The field ID and the script property name must match your actual payload.
Improve Reliability and Security
Protect the Spreadsheet
Your Google Sheet may contain names, emails, phone numbers, or other customer information.
Do not make the spreadsheet publicly editable just because the Apps Script web app needs to receive data.
Keep spreadsheet access restricted to the people who actually need it.
Validate Incoming Requests
A public webhook endpoint can potentially receive requests from sources other than your website.
For a basic personal project, the simple setup may be enough. For a business handling valuable or sensitive lead information, consider adding validation, authentication, rate limiting, or another verification mechanism.
Also avoid putting private credentials or secret tokens directly into client-side code.
Elementor Webhook vs. Zapier
Cost
One of the biggest reasons people search for a way to connect Elementor to Google Sheets without Zapier is to reduce the number of paid automation services involved.
With the Apps Script method, your workflow is essentially:
Elementor → Google Apps Script → Google Sheets
There is no separate Zapier workflow sitting in the middle.
Control and Flexibility
Zapier is excellent when you want a visual automation platform connecting many different services.
But if your only goal is to send Elementor form submissions to one Google Sheet, a custom Apps Script can be surprisingly lightweight.
You are replacing a general-purpose automation layer with a small piece of code designed specifically for your workflow.
Benefits of This Method
Fewer Tools
The workflow uses tools you may already have:
- WordPress
- Elementor
- Google Sheets
- Google Apps Script
There is no need to introduce another automation dashboard simply to move form data into a spreadsheet.
Direct Data Flow
The architecture is easy to understand:
Visitor submits form → Elementor sends webhook → Apps Script receives data → Google Sheet gets a new row.
That simplicity can be valuable when you are troubleshooting.
When You Should Still Use Zapier
Complex Automation
If you want every Elementor submission to trigger several actions, Zapier may save you development time.
For example, you might want to:
- Add a lead to a CRM
- Send a Slack notification
- Create a task
- Add a subscriber to an email platform
- Update another database
A visual automation platform can make these multi-step workflows easier to manage.
Multiple Apps
If Google Sheets is only one stop in a much larger automation process, Zapier or another automation platform can make sense.
But for a simple Elementor-to-Sheets connection, Apps Script gives you a direct alternative.
Best Practices for Elementor-to-Sheets Automation
Use Clear Headers
Keep your spreadsheet headings simple and consistent.
For example:
Name | Email | Phone | Message | DateAvoid changing column names every few days while your script is running.
Test Before Going Live
Always perform several test submissions before sending real visitors to the form.
Test:
- A normal submission
- A missing optional field
- A long message
- Different email addresses
- Multiple submissions in a row
This helps you find problems before they become lost leads.
Conclusion
Connecting an Elementor form to Google Sheets without Zapier is completely achievable with a webhook and Google Apps Script.
The basic workflow is straightforward: Elementor sends the form submission to an Apps Script web app, doPost(e) receives the request, and appendRow() adds the information to your spreadsheet. Google officially supports both the web-app and spreadsheet functionality used in this approach.
The biggest challenge is usually not the code itself. It is keeping the Elementor field IDs, Apps Script property names, spreadsheet columns, and deployment URL aligned.
Once those pieces match, you have a lightweight way to send website leads directly into Google Sheets without adding Zapier to the workflow.
FAQs
Is Elementor Pro required to connect a form to Google Sheets this way?
For this method, you need an Elementor form with the Webhook action available. Elementor's documentation lists Webhook among its form actions.
Can I connect multiple Elementor forms to one Google Sheet?
Yes. You can design your Apps Script to accept different fields from multiple forms. However, you should keep the data structure consistent or add logic that identifies which form submitted the data.
Can I send Elementor form submissions to different Google Sheets?
Yes. You can create separate Apps Script web apps or add logic that routes submissions to different spreadsheet files or worksheet tabs based on the form or another value.
Do I need to keep Google Sheets open for the integration to work?
No. The spreadsheet does not need to remain open in your browser. The Apps Script web app can receive requests and write data to the spreadsheet through Google's server-side services.
What happens if Google Apps Script stops working?
Check the Apps Script deployment, execution history, permissions, spreadsheet name, and webhook URL first. Also make sure you are using the current deployed web app URL rather than the development /dev URL. Google's web-app documentation provides the current deployment and testing process.
Can I add a submission date automatically?
Yes. The example script uses new Date() to add the current execution date and time as another value in the new spreadsheet row.
Is this method better than Zapier?
It depends on your needs. If you simply want Elementor submissions stored in Google Sheets, Apps Script can provide a direct and lightweight solution. If you need complicated multi-app automation, a dedicated automation platform may be more convenient.
Can I customize the script for more Elementor fields?
Absolutely. You can add additional properties to the appendRow() array. The key is making sure the names you use in the script correspond to the actual data being sent by your Elementor webhook.

Comments
Post a Comment