How RG Forms works
RG Forms gives you a live contact form endpoint in under 2 minutes — backed entirely by a Google Sheet you own. No server to manage, no monthly fee, no third-party data storage.
The idea
Most contact form tools store your submissions on their servers. You pay monthly, you depend on their uptime, and your data lives in their database. RG Forms does the opposite: every submission goes directly into a Google Sheet in your own Google Drive, sent by an Apps Script you own and control.
RG Forms provisions that sheet and script for you — the whole thing takes about 90 seconds. After that, your endpoint works forever at no cost, independent of any RG Forms server.
Architecture
RG Forms is a fully static web app. There is no RG Forms server, no database, and no backend. Every API call during setup goes directly from your browser to Google using your own OAuth token.
Setup (one time, in your browser):
Your Browser
├─── Google OAuth ──▶ Short-lived token (memory only)
├─── Google Drive API ──▶ Creates Sheet + Drive folder
└─── Apps Script API ──▶ Creates & deploys form handler
Live endpoint (after provisioning):
Your Website / App
└─── POST to script URL
└─── Apps Script (in your Google account)
├─── Appends row to Google Sheet
├─── Sends email notification
└─── Returns { result: "success" }Step-by-step walkthrough
Sign in with Google
You grant RG Forms a temporary OAuth access token. This token lives only in browser memory — it's never sent to any RG Forms server, never written to disk, and disappears when you close the tab.
Configure your form
Give your form a name (e.g. 'Contact' or 'Get a Quote'), set the email address for notifications, and configure your fields. You can add any fields you need — text, email, phone, textarea, select — and mark them required or optional.
We provision everything
RG Forms creates a Drive folder, a Google Sheet with your form's column headers and a hidden _manifest tab, and an Apps Script project. The script is deployed as a public HTTPS web app — giving you a permanent endpoint URL.
Authorize your script
Because the script was deployed via API, Google requires a one-time manual authorization. Open the script URL shown in the dashboard, sign in if prompted, and approve the permissions dialog. The script only requests access to its one spreadsheet and email sending — nothing else.
Start receiving submissions
POST JSON to your endpoint from any website, app, or no-code tool. Each submission appends a row to your Google Sheet and sends you an email notification. You can edit field labels, add new fields, or update email settings at any time without reprovisioning.
What gets created in your Google Drive
A Drive folder
Named after your form slug. Contains your Google Sheet. Browse, share, and manage it like any other Drive folder.
A Google Sheet
One tab for your form submissions, pre-populated with your column headers, plus a hidden _manifest tab the script reads on every request.
An Apps Script web app
Handles form submissions (POST), appends rows, and sends email notifications. Deployed as a permanent HTTPS endpoint under your Google account.
Submitting to your endpoint
Your endpoint accepts a JSON POST with a tab and fields object. Use Content-Type: text/plain — this avoids a CORS preflight that Apps Script cannot respond to, while the body is still parsed as JSON.
// POST directly from your site — no server proxy needed.
// Use Content-Type: text/plain to avoid a CORS preflight.
// Apps Script reads e.postData.contents as JSON regardless.
const res = await fetch(FORM_SCRIPT_URL, {
method: 'POST',
headers: { 'Content-Type': 'text/plain' },
body: JSON.stringify({
tab: 'contact',
fields, // { name, email, phone, message, ... }
}),
});
const data = await res.json();
// { result: 'success' } or { result: 'error', error: '...' }The RGFORMS.md export from your dashboard gives any AI assistant the exact field names, tab name, and endpoint URL — so it can wire up the form for you automatically.
What's included
Email notifications
Every submission triggers an email to your notification address. Configurable subject line.
CC / BCC support
Copy other addresses on every notification without exposing them in your frontend code.
Reply-to field
Map a form field (like email) as the reply-to address so you can respond directly.
Honeypot spam protection
A hidden field bots fill out; the script silently discards those submissions.
Multiple forms
Add more form tabs to the same sheet from the dashboard — separate tabs, same endpoint.
Edit fields any time
Update labels, add fields, remove fields — no reprovisioning or redeployment needed.
RGFORMS.md export
Export an AI skill file compatible with any AI IDE — Claude Code, Cursor, Copilot, Windsurf, and more.
Manifest JSON
Download your full configuration as JSON for your own records or tooling.
Limitations to know about
Email quota
Google Apps Script accounts are limited to roughly 100 email notifications per day on free Google accounts. This is a Google-imposed quota.
One-time script authorization required
After provisioning, you must open the script URL once while signed in to Google and approve the permissions. This is a Google requirement for scripts deployed via API.
Apps Script API must be enabled
The Google Apps Script API must be enabled in your Google account before provisioning. RG Forms will detect this and show a direct link to enable it — it's a single toggle.
Honeypot-only spam protection
Forms support a honeypot hidden field. For high-traffic forms, consider adding reCAPTCHA to your frontend HTML manually.
From the makers of RG Forms
Need a full website backend? Try Sheetspin →
Instantly provision a complete multi-tab Google Sheet backend — blog, gallery, events, newsletter, site config, and more — in under 2 minutes.