# Liability waiver form template with a recorded signature

Short answer: this is a complete QuizGen JSON definition — waiver text,
participant details, an emergency contact, a medical-conditions question,
and a required `consent` checkbox that records a timestamped agreement
tied to the participant's email. It is a structural template, not legal
advice, and the waiver text inside it is placeholder text you must replace
before using it for anything real.

**We are not a lawyer and this is not a law firm.** Whether an electronic
waiver holds up depends on your jurisdiction, your activity, and how it's
presented — and in most places, no waiver (electronic or paper) can sign
away gross negligence or intentional harm. Take this structure to a lawyer
who knows your state or country and your specific activity before you rely
on it for anything involving physical risk.

## The template

Every line inside the `statement` question below is generic placeholder
text. Replace it entirely with wording your lawyer approves for your
activity and jurisdiction before this goes live.

```json
{
  "schema_version": 1,
  "kind": "form",
  "title": "Liability waiver — Riverbend Climbing Gym",
  "description": "Please read the waiver below and complete this form before your first visit.",
  "settings": {
    "collect_respondent": "email_required"
  },
  "sections": [
    {
      "key": "waiver",
      "title": "Waiver of liability",
      "questions": [
        { "id": "waiver_text", "type": "statement",
          "title": "Assumption of risk and release",
          "body": [
            "[PLACEHOLDER — replace with your lawyer's wording.] Participation in climbing activities carries inherent risks, including but not limited to falls, equipment failure, and physical injury.",
            "[PLACEHOLDER] By signing below, I acknowledge these risks and release Riverbend Climbing Gym, its owners, and staff from liability for injuries arising from ordinary negligence, to the extent permitted by law.",
            "[PLACEHOLDER] This waiver does not release the gym from liability for gross negligence or intentional misconduct."
          ] },
        { "id": "participant_name", "type": "short_text", "prompt": "Participant full name",
          "required": true, "placeholder": "Jordan Smith" },
        { "id": "participant_email", "type": "email", "prompt": "Email address",
          "required": true, "placeholder": "you@example.com" },
        { "id": "participant_phone", "type": "phone", "prompt": "Phone number",
          "required": true },
        { "id": "activity_date", "type": "date", "prompt": "Date of activity" },
        { "id": "under_18", "type": "yes_no", "prompt": "Is the participant under 18?",
          "required": true },
        { "id": "guardian_name", "type": "short_text", "prompt": "Parent or guardian full name",
          "required": true,
          "show_if": { "question": "under_18", "op": "eq", "value": "yes" } },
        { "id": "guardian_consent", "type": "consent",
          "prompt": "I am the participant's parent or legal guardian and I consent to their participation and to this waiver on their behalf.",
          "required": true,
          "show_if": { "question": "under_18", "op": "eq", "value": "yes" } }
      ]
    },
    {
      "key": "emergency",
      "title": "Emergency contact",
      "questions": [
        { "id": "emergency_name", "type": "short_text", "prompt": "Emergency contact name",
          "required": true },
        { "id": "emergency_phone", "type": "phone", "prompt": "Emergency contact phone",
          "required": true },
        { "id": "has_medical_conditions", "type": "yes_no",
          "prompt": "Does the participant have any medical conditions or allergies we should know about?",
          "required": true },
        { "id": "medical_details", "type": "long_text",
          "prompt": "Please describe, including any medications carried.",
          "rows": 4,
          "show_if": { "question": "has_medical_conditions", "op": "eq", "value": "yes" } }
      ]
    },
    {
      "key": "agreement",
      "title": "Agreement",
      "questions": [
        { "id": "agreement", "type": "consent",
          "prompt": "I have read and agree to the waiver of liability above.",
          "required": true }
      ]
    }
  ]
}
```

## What each piece is doing

- `kind: "form"` — everything on one page with a progress bar, which fits
  a document someone reads once and completes in order, rather than a
  quiz stepped through one question per screen.
- `waiver_text` — a `statement` question: `title` + `body` (an array of
  paragraphs), display-only, collects nothing. This is where your lawyer's
  actual waiver language goes, not the placeholder text shown above.
- `participant_phone` and `activity_date` use the dedicated `phone` and
  `date` types rather than generic text fields, so QuizGen validates the
  format instead of accepting anything typed in.
- `under_18` + `show_if` — a `yes` reveals `guardian_name` and a second
  `consent` question for the guardian, so a minor's registration requires
  a guardian's agreement rather than the minor's own. `show_if` supports
  exactly one condition referencing an earlier question; hidden questions
  are never required.
- `has_medical_conditions` + `show_if` on `medical_details` — the detail
  box only appears when there's something to say, instead of showing an
  empty text field to everyone.
- `agreement` — the required `consent` question that stands in for the
  signature. With `collect_respondent: "email_required"`, every response
  is tied to a real email address, so the stored record is a timestamped,
  attributable "yes I agree" — not an anonymous checkbox.

## What this actually records — and its limits

Be clear-eyed about what you're getting versus a dedicated e-signature
product:

- QuizGen records a **checkbox agreement with a timestamp and an email
  address**. It does not produce a cryptographically signed PDF, an audit
  certificate, or a chain-of-custody record the way DocuSign or Dropbox
  Sign do.
- You **can** attach a photo — a scanned ID, an insurance card, or a
  picture of a signed paper form — using a `file_upload` question on the
  Pro or Business plan. That strengthens the record, but it is still a
  photo stored next to a checkbox, not a signature a court-ready audit
  trail is built around.
- If you need a legally robust, independently verifiable signed document —
  for higher-risk activities, insurance requirements, or anywhere your
  liability exposure is significant — use a real e-signature product built
  for that, and ask your lawyer whether it needs to be paired with an
  in-person or notarized process for your activity.

QuizGen's honest use case here is a low-friction, good-faith record for
lower-risk activities (gyms, rentals, day trips, kids' classes) where "we
have their name, contact info, and a timestamped agreement" is what your
lawyer says is sufficient — not a substitute for a signed legal instrument
where more is required.

### Optional: collect a photo ID

The template above works on every plan. If you're on Pro or Business and
your process needs a photo — an ID, an insurance card, a guardian's signed
paper consent — add this question to the `participant` section:

```json
{ "id": "photo_id", "type": "file_upload",
  "prompt": "Upload a photo of your ID",
  "help": "A clear photo or scan is fine.",
  "max_files": 1, "accept": ["image", "pdf"] }
```

Leave it out on the free plan — a definition containing `file_upload`
returns 402 `plan_limit` there. And think before you ask: ID photos are
sensitive personal data, so collect them only if you genuinely need them,
and know how long you're keeping them.

## Customize it with an AI assistant

Because it's plain JSON against a documented schema, an AI assistant
connected to [QuizGen's MCP server](/mcp)
can adapt the structure directly — though it should never write your
waiver language for you. For example:

> Read https://quizgen.dev/blog/liability-waiver-form-template.md and
> rebuild the structure for a kayak rental business — keep the emergency
> contact and minor/guardian sections, but leave the waiver_text body
> exactly as three placeholder paragraphs I'll fill in with my lawyer's
> wording. Give me the live link.

## FAQ

**Is a checkbox "signature" enforceable?** It depends entirely on your
jurisdiction and activity — ask a lawyer. Many places treat a clear,
attributable electronic agreement as valid for lower-risk activities, but
this varies enough that a blanket answer would be irresponsible to give.

**Can I collect a real drawn signature?** Not in QuizGen — there's no
signature-pad or file-upload question type. If a drawn signature is a hard
requirement, use DocuSign or Dropbox Sign instead.

**What about minors?** Use the `under_18` `yes_no` question with
`show_if` to reveal guardian name and consent fields, as in the template
above — the guardian's consent, not the minor's, is what should govern
whether they can participate.

**Can I require the waiver be re-signed each visit?** Yes — send the same
link (or a fresh POST of the definition) each time and treat every
completed response as a new signature; `GET /quizzes/:id/responses` shows
you each one by `completed_at`.

**Where do responses go?** Your dashboard at
[quizgen.dev/dashboard](/dashboard), or export via
`GET /quizzes/:id/responses` — add `?format=csv` for a spreadsheet you can
hand to insurance or legal on request.
