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.