# A Google Forms alternative when you've outgrown it

Let's be clear up front: Google Forms is free, unlimited, and completely fine
for most things people use it for. Party RSVPs, class surveys, quick office
polls — make the form, share the link, watch answers land in a Sheet. If
that's your situation, keep using it.

This post is for the moment you hit one of its actual walls:

- **Every form looks like a Google Form.** You can change the header image
  and a color; the rest is recognizably Google.
- **Scoring stops at "quiz mode."** Right/wrong answers with a total, but no
  outcome buckets — no "score 0–3 gets this result page, 4+ gets redirected
  to book a call."
- **No webhooks without Apps Script.** Getting a submission into your CRM,
  Slack, or backend means writing and babysitting a script.
- **No API-first workflow.** The form lives in an editor; its definition
  isn't a file you can version, diff, or generate.
- **No AI-assistant integration.** You can't ask Claude or ChatGPT to build
  the form and hand you a live link.

## What QuizGen does differently

QuizGen is a headless quiz/form service: the form is a JSON definition, and
you (or an AI assistant) `POST` it to get back a live hosted link like
`quizgen.dev/q/x7km2p` — mobile-friendly, autosaving, no account needed for
respondents. Point Claude or ChatGPT at [quizgen.dev/llms.txt](/llms.txt)
(or add the MCP server at `quizgen.dev/mcp`), describe the form in a
sentence, and get the link back in chat.

The parts Google Forms makes hard are built in:

- **Scored outcomes with buckets.** An `outcomes` block maps answers to
  points and points to result buckets — each bucket gets its own title, body,
  and optional `redirect_url`. That's a
  [lead-qualification form that scores itself](/blog/lead-qualification-form-that-scores-itself.md),
  no add-ons.
- **Real webhooks.** Set a URL and a secret, and every completed response
  POSTs to your endpoint with an HMAC-SHA256 signature
  (`X-QuizGen-Signature`) you verify before trusting the payload. Details in
  [quiz response webhooks](/blog/quiz-response-webhooks.md).
- **Response caps and close dates.** `max_responses` and `close_at` in
  settings — the form closes itself.
- **Definitions as JSON.** The form is a document you can keep in your repo,
  review in a PR, and regenerate on demand.

## The Apps Script test

Here's a quick self-diagnostic: have you ever opened the Apps Script editor
to get form submissions somewhere — a Slack ping, a CRM row, a POST to your
own server? Then you've already built a webhook by hand, minus the retries,
the signature, and the part where it keeps working after you forget it
exists. A webhook with an HMAC signature is that script, as a product
feature.

## Stay or switch

**Stay with Google Forms if:** you want free and unlimited, your answers
belong in a spreadsheet anyway, and everyone involved already knows how it
works. Those are real advantages — Sheets integration and familiarity are
hard to beat, and QuizGen's free tier is 3 live quizzes with 100 answers
each per month, not unlimited.

**Switch if:** the form is part of a funnel (scoring, outcomes, redirects),
part of a system (webhooks, JSON definitions, API), or something you'd
rather describe to an AI assistant than click together.

## The whole build step

```bash
curl -X POST https://quizgen.dev/api/v1/quizzes \
  -H "Content-Type: application/json" \
  --data '{ "schema_version": 1, "title": "Coffee or tea?",
    "sections": [ { "key": "main", "questions": [
      { "id": "pick", "type": "choice", "prompt": "Coffee or tea?",
        "options": [ { "value": "coffee", "label": "Coffee" },
                     { "value": "tea", "label": "Tea" } ] } ] } ] }'
```

That returns a live URL. No `Authorization` header makes it a 72-hour
sandbox preview capped at 10 responses; sign up free at
[quizgen.dev/login](/login) to keep quizzes and read responses back.

---

Full docs, one file: [quizgen.dev/llms.txt](/llms.txt).
