A client intake form template that's live before your next call
Most client intake form templates are a document you copy, reformat, and then retype into some form builder. This one skips all of that: it's a complete, valid QuizGen definition. POST it as-is and you get a hosted, mobile-friendly, autosaving intake form at a short URL — or hand it to an AI assistant and say "take this intake template and adapt it for a wedding photographer" before posting.
The template
{
"schema_version": 1,
"kind": "form",
"title": "New client intake",
"description": "Three minutes now saves the first twenty of our call.",
"sections": [
{
"key": "contact",
"title": "About you",
"questions": [
{ "id": "welcome", "type": "statement",
"title": "Before we talk",
"body": [
"A few questions about you and the project so our first call starts at step two.",
"Answers autosave — you can close the tab and pick up later."
] },
{ "id": "full_name", "type": "short_text", "prompt": "What's your name?",
"required": true, "placeholder": "Jordan Smith" },
{ "id": "work_email", "type": "email", "prompt": "Best email to reach you?",
"required": true, "placeholder": "you@company.com" }
]
},
{
"key": "project",
"title": "The project",
"questions": [
{ "id": "service_type", "type": "choice",
"prompt": "What do you need help with?", "required": true,
"options": [
{ "value": "new_website", "label": "A new website",
"detail": "Design and build from scratch" },
{ "value": "redesign", "label": "A redesign",
"detail": "Existing site, new direction" },
{ "value": "ongoing_support", "label": "Ongoing support",
"detail": "Retainer or maintenance" }
] },
{ "id": "current_site", "type": "short_text",
"prompt": "What's the current site's address?",
"placeholder": "https://",
"show_if": { "question": "service_type", "op": "eq", "value": "redesign" } },
{ "id": "budget", "type": "number", "prompt": "Rough budget?",
"help": "A ballpark is fine — it tells us which options to bring.",
"min": 0, "unit": "USD" },
{ "id": "goals", "type": "long_text",
"prompt": "What does success look like six months in?", "rows": 5,
"examples": [
"Double demo signups by Q4",
"Stop losing mobile visitors at checkout"
] },
{ "id": "referral_source", "type": "multi_choice",
"prompt": "How did you hear about us?", "min": 1, "max": 2,
"options": [
{ "value": "search", "label": "Search" },
{ "value": "referral", "label": "A referral" },
{ "value": "social", "label": "Social media" },
{ "value": "other", "label": "Somewhere else" }
] }
]
}
],
"settings": {
"completion": { "message": "Thanks — we'll review this before the call." }
}
}
Why it's shaped this way
The statement at the top isn't a question — it's an info panel with a
title and a body array of paragraphs, and it collects nothing. Use it to
set expectations ("this is short, it autosaves") so people actually finish.
The current_site question only appears when someone picks the redesign
option, via show_if: one condition referencing an earlier question
(question / op / value). New-build and retainer clients never see it,
and hidden questions are never required — so nobody gets stuck on a field
that doesn't apply to them.
The two sections — contact, then project — each render as their own page, so the easy identity questions come first and the thinking questions get a screen of their own.
Customize it with an AI assistant
Because the template is plain JSON against a documented schema, any AI
assistant that has read quizgen.dev/llms.txt can reshape it
reliably: swap service_type options for photography packages, add a date
question for the event, change the budget unit — then POST the result. That's
the whole point of a headless form service: the template is data, not
screenshots of someone else's form builder.
Want it to qualify leads too?
Intake gathers the details; qualification scores them. If you want this form
to also sort respondents into "book a call now" vs. "nurture," add an
outcomes block with points per answer and score buckets — we've written
that up separately in
the lead-qualification form that scores itself,
and the two combine cleanly in one definition.
Try it without an account
POST the template to https://quizgen.dev/api/v1/quizzes with no
Authorization header and it goes live immediately as a sandbox quiz: 72-hour
lifetime, capped at 10 responses, no updates or read-back. The response
includes a claim_url — keep it, it's the only way to claim the quiz into a
free account and keep its answers (you can also have it emailed by passing
your address in an X-Creator-Email header). When you're ready for a
permanent form, sign up free at quizgen.dev/login — then open the
claim_url to keep this one, or connect https://quizgen.dev/mcp and
authorize so every new form is permanent.
Full schema, question types, and endpoints: quizgen.dev/llms.txt.
$ curl quizgen.dev/blog/client-intake-form-template.md
This guide as raw markdown — no HTML for your agent to parse.
Keep reading
- Order form template that takes paymentPick the product, pay by card, done — in one submission.
- Quote template your client can approve in one clickNot a document to email — a hosted quote with a recorded approval.
- Event registration form template (with paid tickets)Ticket tiers, a capacity cap, and card payment on the registration page.