# A customer feedback form template you can deploy in one request

Most "customer feedback form templates" are a doc you download, copy into a
form builder, and rebuild field by field. This one isn't. It's a complete,
valid QuizGen JSON definition — POST it as-is and it's live at a short URL
before you've finished your coffee. No editor, no rebuilding, no account
required to try it.

## The template

A post-project (or post-purchase) feedback form: one satisfaction score you
can aggregate, one "what did we do best" pick with a follow-up, and one
open-ended "what could be better."

```json
{
  "schema_version": 1,
  "kind": "survey",
  "title": "How did we do?",
  "description": "Two minutes, tops. Your feedback decides what we fix next.",
  "settings": {
    "collect_respondent": "email_optional",
    "autosave": true,
    "completion": { "message": "Thanks — we read every one of these." }
  },
  "sections": [ { "key": "main", "questions": [
    { "id": "satisfaction", "type": "scale",
      "prompt": "Overall, how satisfied are you with the project?",
      "required": true, "min": 1, "max": 10,
      "min_label": "Not satisfied", "max_label": "Extremely satisfied" },
    { "id": "best_part", "type": "choice",
      "prompt": "What did we do best?",
      "options": [
        { "value": "communication", "label": "Communication" },
        { "value": "quality", "label": "Quality of the work" },
        { "value": "speed", "label": "Speed of delivery" },
        { "value": "value", "label": "Value for the price" }
      ],
      "follow_up": "What specifically stood out?" },
    { "id": "improve", "type": "long_text",
      "prompt": "What could we have done better?", "rows": 4,
      "examples": [
        "Faster responses to questions",
        "Clearer pricing up front",
        "More progress updates along the way"
      ] }
  ] } ]
}
```

## Why these choices

**A `scale`, not free text, for the headline number.** "How satisfied were
you?" as a text box gives you paragraphs you can't average. A 1–10 scale with
`min_label`/`max_label` anchoring the ends gives you a number you can track
release over release, client over client.

**`follow_up` on the choice.** Picking "Communication" is nice; knowing *why*
is the useful part. The `follow_up` string shows a free-text box after the
respondent selects, and the answer comes back as `best_part__followup` — one
question's worth of screen space, two answers' worth of signal.

**`examples` as hint chips on the `long_text`.** A blank "what could be
better?" box invites "nothing, all good." The example chips ("Clearer pricing
up front"…) prime honest, specific answers without putting words in anyone's
mouth.

**`autosave` plus `email_optional`.** Answers save as people type, so
someone who rates you a 4 and then closes the tab still shows up — those
partial rows come back with `complete: false` when you read responses, which
is your drop-off (and quiet dissatisfaction) signal. And
`collect_respondent: "email_optional"` means happy customers can leave an
address for follow-up while nobody is forced to.

## Deploy it

Two ways, both under a minute:

**Through your AI assistant.** Paste this into Claude or ChatGPT:
"Read quizgen.dev/llms.txt and create this quiz for me: …" followed by the
JSON above. The assistant POSTs it and hands you the live link.

**With curl, no auth header.** POSTing to
`https://quizgen.dev/api/v1/quizzes` with no `Authorization` header creates
a sandbox quiz — live instantly, no signup. Sandboxes last 72 hours, cap at 10
responses, and the create response includes a `claim_url` you open to keep
the form (and its answers) permanently. Great for previewing the template
before you commit; sign up free at [quizgen.dev/login](/login) when you're
ready, then connect `https://quizgen.dev/mcp` and authorize.

Once responses are flowing, you can pipe every completed submission to your
own endpoint — see [quiz response webhooks](/blog/quiz-response-webhooks.md).

---

Full schema and API reference: [quizgen.dev/llms.txt](/llms.txt).
