The short answer
Formspark and RG Forms are both aimed at developers who want to design their own form and just need somewhere for it to POST. Formspark is a paid, hosted service: submissions are stored on their platform, managed in their dashboard, and routed on via email, webhooks and integrations, with a pricing model based on submission volume rather than a per-seat subscription. RG Forms is free and stores nothing — it provisions a Google Sheet and an Apps Script endpoint inside your own Google account, so submissions land in your Drive and there is no vendor holding the data. Choose Formspark for a supported product with integrations; choose RG Forms when you want zero cost and full ownership.
Side by side
| Formspark | RG Forms | |
|---|---|---|
| Model | Hosted service, paid by submission volume | Free; endpoint provisioned into your own Google account |
| Where submissions live | Formspark’s platform | A Google Sheet in your Drive |
| Setup | Create a form, copy the endpoint | Sign in with Google, define fields, copy the endpoint |
| Integrations | Webhooks, email routing, Zapier and other connections | Anything that reads Google Sheets; the Apps Script is yours to edit |
| Spam protection | Integrated options | Honeypot, plus Cloudflare Turnstile verified server-side |
| Multiple forms | Create as many as your plan allows | Unlimited tabs in one project, one endpoint URL |
| Support | A company you can email | GitHub issues and the docs |
| Data portability | Export from their dashboard | It’s already a spreadsheet in your Drive |
Formspark’s pricing has changed over time — check their site for current numbers rather than trusting any comparison page, including this one.
What paying for it buys you
It’s worth being clear that “free” isn’t automatically the winning argument. Paying a vendor buys accountability: someone maintaining the service, monitoring uptime, filtering spam across a large corpus of traffic, answering support email, and shipping integrations you’d otherwise build yourself.
With RG Forms, the infrastructure is Google’s and the responsibility is yours. If your Apps Script needs a change, you open the editor. If something behaves oddly, you read the code. That’s a good deal for people who like owning their stack — and the wrong deal for people who want a vendor to call.
Where RG Forms is genuinely different
The Apps Script endpoint has no dependency on rgforms.com. It isn’t a proxy to our servers or an API key we can revoke — it’s a deployment in your Google account that we happened to create for you. Delete your RG Forms session, and the endpoint keeps running.
That property is unusual in this category, and it’s the reason to pick it: not because it costs nothing, but because there’s nobody in the middle.
Test any endpoint before committing
Whichever you pick, prove the round trip first — it takes ten seconds and saves an afternoon.
curl -L -X POST "https://script.google.com/macros/s/AKfycb.../exec" \
-H "Content-Type: text/plain" \
-d '{"tab":"contact","fields":{"name":"Ada","email":"ada@example.com","message":"Hello"}}'
# → {"result":"success"} and a new row appears in your Google SheetCommon questions
Is RG Forms slower than a purpose-built service?
Marginally, on the first request. Apps Script cold-starts in roughly 800ms–2s after a quiet period; after that it’s quick. With a “Sending…” state on the button nobody notices.
What happens at high volume?
Rows keep appending — Sheets holds millions of cells. The practical ceiling is notification email, which Google caps at about 100 recipients/day on free Gmail and 1,500 on Workspace. Past the cap, rows still save and only the email is skipped.
Can I edit what happens on submission?
Yes — the Apps Script is in your account. Add a Slack webhook, write to a second sheet, transform values before they’re stored. That’s not really possible with a hosted service unless it exposes a webhook.
Which is better for an agency?
It depends on your billing model. If you resell a managed service, a paid product with a dashboard and support is easy to justify. If you want to hand each client a site with no ongoing dependency on you, an endpoint in their own Google account is a cleaner exit.
More answers in the full FAQ.