A customer feedback form template you can deploy in one request

Build & score

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."

{
  "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 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.


Full schema and API reference: quizgen.dev/llms.txt.

$ curl quizgen.dev/blog/customer-feedback-form-template.md

This guide as raw markdown — no HTML for your agent to parse.

View .md

Keep reading