An open-source toolkit that pipes your static website's contact form submissions into Google Sheets — with email notifications, spam protection, and rate limiting. MIT-licensed, free forever.
📖 Read the tutorial: How to Build a Contact Form Backend for $0/Month Using Google Sheets — full step-by-step walkthrough with code snippets, competitor pricing comparison, and architecture deep-dive.
📢 Also on DEV Community — developer discussion and reactions.
Freelancers and agencies building static sites hit the same wall: the client wants a contact form, but nobody wants to set up a backend for 5 lines of HTML.
Existing solutions charge monthly:
- web3forms Pro: $10/month for Google Sheets integration → $120/year
- Formspree: $20/month for file uploads + Sheets
- Formcarry: $15/month for 5,000 submissions
For a marketing site that gets 20 submissions a month, that's $120-240/year for a feature the client barely uses.
Form Handler replaces all of that with a free Google Apps Script. Paste it in, deploy it once, and it runs forever on Google's infrastructure (free — 20,000 emails/day, unlimited sheet rows).
- Google Sheets integration — submissions land directly in a spreadsheet
- Email notification — instant alerts for new submissions
- Spam protection — honeypot field detection + keyword blocklist
- Rate limiting — per-IP submission cap, configurable per hour
- Auto-responder — templated "thanks" email back to every submitter
- JSON + form-urlencoded — supports both content types
- Origin whitelisting — restrict submissions to your domains
- Go to script.google.com and create a new project
- Copy
form-handler.gsinto the editor - Deploy as a Web app (Execute as: Me, Access: Anyone)
- Update the configuration object at the top of the script with your email and sheet name
- Add the form from
example-form.htmlto your static site - Replace
YOUR_SCRIPT_URLwith your deployment URL
Submissions now flow into your Google Sheet. Done.
MIT — you own the code. Use it for unlimited clients, bundle it with your agency projects, modify it however you want.
- URL Environment Switcher — One-click Chrome extension to jump between localhost, staging, and production while preserving path, query, and hash. Free, MIT licensed.
selfloom — we build tools for developers who hate subscriptions.