Most tutorials for connecting an HTML form to Google Sheets send you down a rabbit hole.
Set up a Google Apps Script. Deploy it as a web app. Handle CORS errors. Debug broken endpoints. Maintain a script you did not write and do not fully understand. Then do it all over again when something breaks six months later.
For a developer who just wants form submissions in a spreadsheet, that process is a time sink with too many moving parts. And if you are not a developer at all, it is basically a wall.
There is a simpler way.
This guide shows you how to connect any HTML form to Google Sheets in under 3 minutes using Formgrid. No backend. No Google Apps Script. No CORS errors. No Zapier subscription. Just paste one endpoint URL into your form action and share a Google Sheet with one email address. That is the entire setup.
Who This Is For
This guide is for developers and builders who already have an HTML form and want submissions going straight to Google Sheets without writing any server-side code:
Static site developers running sites on GitHub Pages, Netlify, Vercel, Cloudflare Pages, or any static host who need a form backend without spinning up a server. Static sites cannot process forms on their own. You need somewhere to send the data. Formgrid is that somewhere.
Frontend developers who built a contact form, inquiry form, job application form, or event registration form and want every submission organized in a spreadsheet automatically. You already wrote the HTML. You should not need to write a backend just to collect it.
Indie hackers and solopreneurs who want a lightweight form setup without paying for Zapier on top of everything else. If you are running lean, adding a $20/month Zapier subscription just to move form data into a spreadsheet is a tax you should not have to pay.
No-code builders who use HTML forms embedded in Webflow, Framer, Carrd, or similar tools and want data flowing into Google Sheets in real time. The form is already there. You just need the backend to catch it.
HR teams and small business owners who collect applications, inquiries, or registrations through a form on their website and want every entry in a shared spreadsheet their team can access without logging into a separate tool.
If you have an HTML form and you want submissions in Google Sheets, this guide gets you there in one sitting.
The Problem With Google Apps Script
Before getting into the setup, it is worth understanding why the standard approach breaks down. Because you will find dozens of tutorials recommending Google Apps Script, and most of them skip over the parts that actually cause problems.
The standard flow looks like this: write a doPost function in Apps Script, deploy it as a web app, copy the deployment URL, paste it into your form action, and hope it works. Then every time you make a change to the script, you redeploy and get a new URL. Then you update your form. Then you remember you also have to handle CORS because your HTML file is on a different origin than the Apps Script deployment. Then you spend an hour reading Stack Overflow threads from 2019.
It works eventually. But it requires you to own a piece of infrastructure that is fragile, annoying to maintain, and breaks in ways that are hard to debug. If you are a developer building your own project, you might be fine with that. If you are setting this up for a client, a team, or a non-technical colleague who will need to manage it later, you are creating a maintenance burden for someone.
The deeper issue is that Google Apps Script was not really designed for this use case. It is a general-purpose automation tool that happens to be able to do this. Formgrid is specifically built for it.
What You Get With Formgrid
Once your HTML form is connected to Formgrid and your Google Sheet is linked, here is what happens on every submission:
Every entry from your HTML form appears as a new row in your spreadsheet automatically. No manual export. No logging into a dashboard every day. No copy and paste.
Column headers are created automatically from your form field names on the very first submission. You do not need to set up the spreadsheet structure yourself. Name your input fields clearly and Formgrid handles the rest.
The integration works in real time. The moment someone submits your form, the row appears in Google Sheets within seconds. Not the next time a Zap runs. Not on a schedule. Instantly.
You also get email notifications on every submission, so you are not dependent on checking Sheets. Spam protection is built in through honeypot fields and rate limiting, so fake submissions do not pollute your data. And every submission is saved to your Formgrid dashboard as a backup, so if anything ever goes wrong with your Sheet, you have a full record to fall back on.
Before You Start
You will need three things:
A Formgrid account, which is free to create at formgrid.dev. No credit card required to sign up.
A Formgrid Business plan for Google Sheets integration, which is $29/month. If you are on the Free or Premium plan, you will see a prompt to upgrade when you open the Integrations tab.
An existing HTML form on your site, or a willingness to add a basic one. The only change you will make to your HTML is updating the action attribute on your form tag. Everything else stays exactly as it is.
Part One: Point Your HTML Form at Formgrid
Step 1: Create a Form in Your Formgrid Dashboard
Log in at formgrid.dev and create a new form. Give it a name that matches what you are collecting, for example, "Contact Form," "Job Applications," or "Event Registrations."
You do not need to use the Formgrid drag-and-drop form builder for this. You are building your own HTML form, and you are only creating a Formgrid form entry to generate your endpoint URL. Think of it as registering your form so Formgrid knows where to route the submissions.
Step 2: Copy Your Endpoint URL
Inside your form dashboard, copy your unique endpoint URL. It will look like this:
https://formgrid.dev/api/f/your-form-id
This URL is permanent. It never changes when you update your form or your settings. You set it once and forget it.
Step 3: Update Your HTML Form
Open your HTML file and change your form's action attribute to your Formgrid endpoint URL. Set the method to POST:
<form action="https://formgrid.dev/api/f/your-form-id" method="POST">
<input type="text" name="name" placeholder="Your Name" required />
<input type="email" name="email" placeholder="Your Email" required />
<textarea name="message" placeholder="Your Message"></textarea>
<button type="submit">Send</button>
</form>
That is the only change to your HTML. One attribute on one tag. Your form now sends submissions to Formgrid instead of disappearing into nothing.
One important detail: Formgrid reads the name attribute of each input field and uses those values as the column headers in your Google Sheet. If your input has name="email", then the column in your Sheet will be labelled "email." If it has name="company_name" the column will be "company_name." Make sure every field in your form has a clear, descriptive name attribute before you connect your Sheet.
Step 4: Test That Submissions Are Reaching Formgrid
Before connecting Google Sheets, do a quick sanity check. Submit a test entry through your form and log into your Formgrid dashboard. You should see the submission appear in your form's submissions list.
If it is not showing up, open your browser developer tools, go to the Network tab, submit the form again, and look for the POST request to formgrid.dev. Check the response status. A 200 means it worked. Anything else means there is a configuration issue to sort out before moving on.
Part Two: Connect Google Sheets
Step 5: Open the Integrations Tab
In your Formgrid dashboard, click on your form and open the Integrations tab at the top of the page. You will see the Google Sheets integration section. If you are on the Business plan, the connect interface is ready to use immediately.
Step 6: Create a Blank Google Sheet
Click the Create blank Google Sheet button. This opens a fresh blank spreadsheet in Google Sheets in a new tab.
Give your sheet a name that is easy to identify later. Something like "Contact Form Submissions 2026" or "Job Applications: Marketing Role" works well. If you manage multiple forms, a consistent naming convention will save you confusion later.
You do not need to create any columns, add any headers, or set up any structure at all. Formgrid creates the column headers automatically from your form field names on the very first submission. The spreadsheet should be empty when you connect it.
Step 7: Share the Sheet With Formgrid
In your Google Sheet click the Share button in the top right corner of the page.
In the share dialog, add this email address as an Editor:
formgrid@sheetrocket.iam.gserviceaccount.com
This is the Formgrid service account email. Rather than typing it out manually, go back to your Formgrid dashboard where the service account email is displayed with a Copy button next to it.
Copy it there and paste it directly into the Google Sheets share dialog. It avoids any chance of a typo.
One thing to get right here: make sure you select Editor access, not Viewer. Formgrid needs Editor access to write new rows to your sheet. If you accidentally add it as a Viewer, the connection will fail with a permissions error when it tries to write.
Click Send or Done in the share dialog to confirm.
Step 8: Paste Your Sheet URL Into Formgrid
Go back to your browser tab with Formgrid open. Copy the URL of your Google Sheet from the address bar of the tab where your Sheet is open.
The URL will look something like this:
https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms/edit
Paste the full URL into the sheet URL field in your Formgrid dashboard. Make sure you are copying from the address bar and not from somewhere else. The URL needs to contain the full spreadsheet ID, which is the long string of characters between /d/ and /edit.
Step 9: Choose Whether to Sync Existing Submissions
Before clicking Connect, you will see this option:
Sync existing submissions to this sheet?
If you already have submissions, Formgrid can add them all to your
Google Sheets now, so your entire history is in one place.
[ ] Yes, sync my existing submissions
If you have been collecting submissions for a while and want your full history to appear in the Sheet immediately, check this box. Formgrid will write all past submissions to the sheet in chronological order before it starts adding new ones. Your entire submission history will be there from the moment you connect.
If you only want new submissions going forward and you do not need historical data in the Sheet, leave it unchecked.
Step 10: Click Connect
Click the Connect Google Sheets button.
Formgrid will verify it can access your sheet, confirm the service account has the right permissions, and save the connection. If you selected the sync option, it will also write your existing submissions to the sheet now.
If everything is set up correctly you will see a success message:
Connected successfully
Your sheet is ready. Every new submission will appear as a new row automatically.
Part Three: Verify It Is Working
Step 11: Submit a Test Entry Through Your HTML Form
Go to your actual HTML form on your site and submit a test entry with dummy data. Use a realistic-looking name and email so it is easy to spot in the Sheet.
Open your Google Sheet. Within a few seconds, you should see:
Row 1 contains the column headers created automatically from your form field names. These come directly from the name attributes you set on your HTML inputs.
Row 2 contains your test submission data. The last column will contain a timestamp showing exactly when the submission was received.
Every subsequent submission from your HTML form will appear as a new row below this one in real time. You never need to log into Formgrid or export anything. The data goes straight to Google Sheets the moment someone fills out your form.
What Happens on Every Submission
Here is the full flow from form fill to spreadsheet row:
Visitor fills out your HTML form on your site
↓
The browser sends a POST request to your Formgrid endpoint
↓
Formgrid receives the submission and saves it to your dashboard
↓
Email notification sent to you (and any other recipients you configured)
↓
New row added to your Google Sheet instantly
↓
Spam protection runs in the background to filter out fake submissions
You get the submission in three places simultaneously: your email inbox, your Formgrid dashboard, and your Google Sheet. If any one of those ever has an issue, you still have the other two.
Real World Example: Event Registrations for a 200-Person Ride
Annie manages endurance horse riding events in San Diego. Her team collects registrations through a form on their website. Before Formgrid, every registration arrived as an email with all the details dumped in one long, unformatted block. Rider name, horse details, session selection, and payment status are all mixed with no labels and no structure. Her event manager had to manually scan through every single registration to pull out the information she needed. For a 200-person event, that was hours of unnecessary work before the event even started.
She now uses Formgrid with Google Sheets connected to her registration form. Every new registration appears instantly as a new row in a shared Google Sheet that her entire team can see in real time. Rider name in one column, horse details in the next, session selection after that, payment status at the end. Organized. Automatic. No manual work.
Her event manager can sort by session, filter by payment status, and share the sheet with volunteers on the day of the event. All from a Google Sheet that fills itself.
She is on the Business plan at $29/month.
"The level of personal support was impressive."
Annie Libby, Event Manager, San Diego Endurance Riders
Managing Your Connection
Once connected, the Integrations tab in your Formgrid dashboard shows your current connection status and gives you a few controls:
Pause the integration using the Active toggle. When paused, new submissions are still saved to your Formgrid dashboard, and you still receive email notifications, but they are not sent to Google Sheets. Toggle it back on to resume syncing at any time.
Disconnect removes the connection entirely. Your existing sheet data stays in Google Sheets exactly as it is. New submissions will no longer be synced until you reconnect.
Open Sheet takes you directly to your connected Google Sheet with one click, so you do not have to go hunting for it in your Drive.
How This Compares to Google Apps Script
| Google Apps Script | Formgrid Native | |
|---|---|---|
| Setup time | 30 to 60 minutes | Under 3 minutes |
| Maintenance | You own the script | Zero maintenance |
| CORS handling | Manual, error-prone | Built in |
| Endpoint stability | New URL on every redeploy | Never changes |
| Spam protection | None built in | Honeypot + rate limiting |
| Email notifications | Requires extra setup | Included |
| Historical data sync | Manual | One checkbox |
| Support | Stack Overflow | Direct access to the founder |
How This Compares to Using Zapier
A common alternative is to use a form backend to collect submissions and then use a Zapier Zap to push them into Google Sheets. It works, but you are paying for two services instead of one and adding a delay between submission and Sheet row because Zapier runs on a schedule rather than in real time.
| Zapier Route | Formgrid Native | |
|---|---|---|
| Extra monthly cost | $19.99/month for Zapier | Included in $29/month |
| Setup steps | 6 to 8 steps across two tools | 3 steps in one place |
| Real time sync | Depends on Zap frequency | Instant |
| Failure points | Two services that can break | One |
Troubleshooting
Form submissions not appearing in Formgrid at all
Check that your form action URL is pointing to your Formgrid endpoint and that the method attribute on your form tag is set to POST, not GET. Open your browser developer tools, go to the Network tab, submit the form, and look for the POST request to formgrid.dev. A 200 response means the submission was received. Any other status code means something is misconfigured.
"Could not access this sheet" error on connect
This means Formgrid cannot write to your sheet. Go back to Google Sheets, click Share, and confirm that the Formgrid service account email is added as an Editor, not a Viewer. If you added it as a Viewer, remove it and re-add it with Editor access, then try connecting again.
Column headers not appearing or appearing incorrectly
Column headers come from the name attribute of your HTML input fields. If a column is missing, check that the corresponding input has a name attribute set. Fields without a name attribute are not included in the submission. If a header looks wrong, update the name value on that input and resubmit a test entry.
Submissions appearing in Formgrid but not in Google Sheets
Check that the Google Sheets integration is showing as Active in your Integrations tab. If it shows as Paused, click the toggle to resume. If it shows as Active but submissions are still not appearing, disconnect and reconnect the integration.
Invalid Google Sheets URL error
Make sure you copied the full URL from your browser address bar, not just the spreadsheet title or a partial URL. The URL must contain /spreadsheets/d/ followed by a long alphanumeric string. Always copy from the address bar of the tab where your Sheet is open.
What the Formgrid Business Plan Includes
At $29/month the Business plan gives you everything you need to run forms seriously:
Google Sheets native integration (this guide)
Custom HTML email templates so every notification looks exactly the way you want
Auto-responder emails are sent automatically to people who submit your form
Webhooks to connect to Zapier, Make, Slack, Notion, Airtable, and 5,000+ more tools
Multiple email notification recipients, so your whole team gets notified
Custom email subject lines
15,000 submissions per month
Priority support with direct access to the founder
No contracts. Cancel anytime.
Start your Business plan at formgrid.dev
Final Thoughts
Connecting an HTML form to Google Sheets does not require a backend, a Google Apps Script, a Zapier subscription, or an afternoon of debugging CORS errors.
Update one attribute in your form tag. Share a Google Sheet with one email address. Click connect.
Every submission lands in your spreadsheet automatically, in real time, from that moment forward.
That is what Formgrid delivers.
👉 Try Formgrid free at formgrid.dev
Upgrade to Business when you are ready for Google Sheets integration.
Full disclosure: I built Formgrid. Written as honestly as I could. Let me know in the comments if anything is unclear or looks off.
Tags: #webdev #html #googlesheets #tutorial #staticsite #nobackend #javascript #indiedev #productivity














Top comments (0)