A branded form page — and a JSON endpoint — that lands in your Sheet.
Spin up a hosted, branded contact form at its own URL (share or embed it), with a live success state. It is also a JSON endpoint your own site can POST to. Submissions append to your Sheet and can email you, with honeypot + Cloudflare Turnstile spam protection.
A JSON endpoint you POST to from your own site.
Connect Google, configure, and spin it up — it lives in your Drive. No servers, no subscription.
What lands in your Google account
A Drive folder
Holds this app — yours to browse, share, or delete.
A Google Sheet
The app’s database — rows you own.
An Apps Script web app
Deployed as you — a permanent URL.
What you configure
- Form fieldsOne per line → Sheet columns + form inputs. Type is inferred (email/phone/message). Add "(optional)" to make one not required.
- Page headline
- Intro text (optional)
- Accent color
- Notify email (optional)Emailed on every submission. Leave blank for none.
- CC (optional)
- BCC (optional)
- Email subject (optional)
- Sender name (optional)
- Reply-to field key (optional)A field key (e.g. email) to set as the reply-to address.
- Honeypot spam protection
- Cloudflare Turnstile captcha
- Turnstile site keyPublic key. The widget validates on your own domain when embedded; the hosted page is best for testing.
- Turnstile secret keyVerified server-side. Stays in your private Sheet’s script.
Permissions
Beyond its own Sheet, this app requests script.send_mail. You authorize the script once, after it deploys into your account.