{
  "_template": {
    "slug": "volunteer-signup-form",
    "name": "Volunteer Signup Form",
    "version": 1,
    "specVersion": 1,
    "source": "https://www.regform.com/form-templates/volunteer-signup-form"
  },
  "form": {
    "title": "Volunteer Signup Form",
    "nav": {
      "mode": "free",
      "backLabel": "Back",
      "nextLabel": "Next",
      "submitLabel": "Sign Me Up",
      "showProgress": true,
      "validatePerStep": true
    },
    "steps": [
      {
        "id": "step-about",
        "title": "About You",
        "fields": [
          {
            "id": "f-first-name",
            "key": "first_name",
            "type": "text",
            "label": "First Name",
            "required": true,
            "hidden": false,
            "options": []
          },
          {
            "id": "f-last-name",
            "key": "last_name",
            "type": "text",
            "label": "Last Name",
            "required": true,
            "hidden": false,
            "options": []
          },
          {
            "id": "f-email",
            "key": "email",
            "type": "email",
            "label": "Email Address",
            "required": true,
            "hidden": false,
            "options": [],
            "description": "Where your shift confirmation and any changes are sent.",
            "placeholder": "you@example.com",
            "editableAfterSubmit": true
          },
          {
            "id": "f-phone",
            "key": "phone",
            "type": "phone",
            "label": "Mobile Phone",
            "required": true,
            "hidden": false,
            "options": [],
            "description": "We will text you on the day if anything changes.",
            "placeholder": "+1 555 0100",
            "editableAfterSubmit": true
          },
          {
            "id": "f-over-18",
            "key": "over_18",
            "type": "radio",
            "label": "Are You 18 or Over",
            "required": true,
            "hidden": false,
            "options": [
              {
                "label": "Yes",
                "value": "Yes"
              },
              {
                "label": "No",
                "value": "No"
              }
            ]
          },
          {
            "id": "f-guardian-name",
            "key": "guardian_name",
            "type": "text",
            "label": "Parent or Guardian Name",
            "required": false,
            "hidden": true,
            "options": [],
            "description": "Required for volunteers under 18."
          },
          {
            "id": "f-guardian-phone",
            "key": "guardian_phone",
            "type": "phone",
            "label": "Parent or Guardian Phone",
            "required": false,
            "hidden": true,
            "options": [],
            "placeholder": "+1 555 0100"
          },
          {
            "id": "f-emergency-contact",
            "key": "emergency_contact",
            "type": "text",
            "label": "Emergency Contact Name and Phone",
            "required": true,
            "hidden": false,
            "options": []
          }
        ]
      },
      {
        "id": "step-shifts",
        "title": "Shifts",
        "fields": [
          {
            "id": "f-shift-intro",
            "key": "shift_intro",
            "type": "text_block",
            "label": "",
            "required": false,
            "hidden": false,
            "options": [],
            "content": "<p>Pick every shift you can cover. Full shifts stop accepting signups and will offer you a place on the waitlist instead.</p>"
          },
          {
            "id": "f-shifts",
            "key": "shifts",
            "type": "item_select",
            "label": "Shifts",
            "required": true,
            "hidden": false,
            "options": [],
            "description": "Select as many as you like. Each has its own headcount.",
            "pricingMode": "single",
            "selectionMode": "multi",
            "visibleItemIds": [
              "shift-fri-setup",
              "shift-sat-reg-am",
              "shift-sat-reg-pm",
              "shift-sat-session",
              "shift-sat-teardown"
            ]
          },
          {
            "id": "f-role-preference",
            "key": "role_preference",
            "type": "checkbox",
            "label": "Roles You Would Prefer",
            "required": false,
            "hidden": false,
            "options": [
              {
                "label": "Greeting and wayfinding",
                "value": "Greeting and wayfinding"
              },
              {
                "label": "Registration desk",
                "value": "Registration desk"
              },
              {
                "label": "Session and room support",
                "value": "Session and room support"
              },
              {
                "label": "Setup and teardown",
                "value": "Setup and teardown"
              },
              {
                "label": "Happy to go wherever needed",
                "value": "Happy to go wherever needed"
              }
            ]
          },
          {
            "id": "f-previous-volunteer",
            "key": "previous_volunteer",
            "type": "radio",
            "label": "Have You Volunteered With Us Before",
            "required": false,
            "hidden": false,
            "options": [
              {
                "label": "Yes",
                "value": "Yes"
              },
              {
                "label": "No",
                "value": "No"
              }
            ]
          },
          {
            "id": "f-orientation-note",
            "key": "orientation_note",
            "type": "text_block",
            "label": "",
            "required": false,
            "hidden": true,
            "options": [],
            "content": "<p><strong>First time with us.</strong> We will send a short orientation note the week before with everything you need to know. No experience required.</p>"
          }
        ]
      },
      {
        "id": "step-details",
        "title": "Practical Details",
        "fields": [
          {
            "id": "f-tshirt-size",
            "key": "tshirt_size",
            "type": "dropdown",
            "label": "Volunteer Shirt Size",
            "required": false,
            "hidden": false,
            "options": [
              {
                "label": "XS",
                "value": "XS"
              },
              {
                "label": "S",
                "value": "S"
              },
              {
                "label": "M",
                "value": "M"
              },
              {
                "label": "L",
                "value": "L"
              },
              {
                "label": "XL",
                "value": "XL"
              },
              {
                "label": "2XL",
                "value": "2XL"
              },
              {
                "label": "3XL",
                "value": "3XL"
              }
            ],
            "multiple": false
          },
          {
            "id": "f-dietary",
            "key": "dietary",
            "type": "checkbox",
            "label": "Dietary Restrictions",
            "required": false,
            "hidden": false,
            "options": [
              {
                "label": "Vegetarian",
                "value": "Vegetarian"
              },
              {
                "label": "Vegan",
                "value": "Vegan"
              },
              {
                "label": "Gluten free",
                "value": "Gluten free"
              },
              {
                "label": "Dairy free",
                "value": "Dairy free"
              },
              {
                "label": "Nut allergy",
                "value": "Nut allergy"
              },
              {
                "label": "None",
                "value": "None"
              }
            ]
          },
          {
            "id": "f-accessibility",
            "key": "accessibility",
            "type": "textarea",
            "label": "Accessibility or Support Needs",
            "required": false,
            "hidden": false,
            "options": [],
            "description": "Anything we should know to make your shift work, including standing, lifting or scheduling needs.",
            "placeholder": "Optional"
          },
          {
            "id": "f-notes",
            "key": "notes",
            "type": "textarea",
            "label": "Anything Else",
            "required": false,
            "hidden": false,
            "options": [],
            "placeholder": "Optional"
          }
        ]
      },
      {
        "id": "step-agreement",
        "title": "Agreement",
        "fields": [
          {
            "id": "f-waiver",
            "key": "waiver",
            "type": "legal",
            "label": "Volunteer Agreement and Waiver",
            "required": true,
            "hidden": false,
            "options": [],
            "legalMode": "text",
            "legalText": "<p>Replace this with your volunteer agreement. Cover what volunteers are and are not insured for, the code of conduct, confidentiality if volunteers handle attendee data, and what to do if they cannot make a shift.</p>",
            "agreementLabel": "I accept the volunteer agreement and waiver"
          },
          {
            "id": "f-photo-release",
            "key": "photo_release",
            "type": "checkbox",
            "label": "I consent to photography and video at this event",
            "required": false,
            "hidden": false,
            "options": []
          },
          {
            "id": "f-commitment",
            "key": "commitment",
            "type": "checkbox",
            "label": "I will let the organizers know as soon as possible if I cannot make a shift",
            "required": true,
            "hidden": false,
            "options": []
          }
        ]
      }
    ],
    "cart": {
      "enabled": true,
      "currencyCode": "USD",
      "items": [
        {
          "id": "shift-fri-setup",
          "name": "Friday Setup",
          "price": 0,
          "active": true,
          "capQuantity": 12,
          "description": "Friday 2pm to 6pm. Signage, registration desk setup, exhibitor support."
        },
        {
          "id": "shift-sat-reg-am",
          "name": "Saturday Registration Desk, Morning",
          "price": 0,
          "active": true,
          "capQuantity": 8,
          "description": "Saturday 7am to 11am. Badge collection and attendee questions."
        },
        {
          "id": "shift-sat-reg-pm",
          "name": "Saturday Registration Desk, Afternoon",
          "price": 0,
          "active": true,
          "capQuantity": 8,
          "description": "Saturday 11am to 3pm. Badge collection and attendee questions."
        },
        {
          "id": "shift-sat-session",
          "name": "Saturday Session Monitor",
          "price": 0,
          "active": true,
          "capQuantity": 10,
          "description": "Saturday 9am to 5pm. Room counts, microphone running, speaker support."
        },
        {
          "id": "shift-sat-teardown",
          "name": "Saturday Teardown",
          "price": 0,
          "active": true,
          "capQuantity": 15,
          "description": "Saturday 5pm to 8pm. Breakdown, lost property, load out."
        }
      ],
      "fees": [],
      "requireEmail": true,
      "paymentProviders": [
        "stripe"
      ],
      "promoStackingMode": "none",
      "buyerEmailFieldKey": "email"
    },
    "theme": "light",
    "editLinkTtl": {
      "unit": "days",
      "value": 90,
      "enabled": true
    },
    "cookieNotice": {
      "enabled": true,
      "privacyPolicyUrl": ""
    },
    "integrations": [
      {
        "key": "waitlist",
        "enabled": true,
        "settings": {
          "mode": "fifo",
          "offerWindow": {
            "unit": "hours",
            "value": 48
          },
          "reviewFieldKeys": [
            "first_name",
            "last_name",
            "email",
            "phone"
          ],
          "itemCapacityEnabled": true
        }
      },
      {
        "key": "confirmation_email",
        "enabled": true,
        "settings": {
          "bodyHtml": "<p>Thank you for volunteering. Your shifts are listed below. Replace this text with where to report, who to ask for and what to wear, and add a number to call if plans change.</p>",
          "includeCalendarLinks": false,
          "includeSessionIcsFile": false,
          "includeEventCalendarLink": false
        }
      }
    ],
    "notifications": {
      "emailOwnerOnSubmission": true
    },
    "thankYouMessage": "Thank you for volunteering. Your shifts are confirmed and the details are on their way to your inbox.",
    "showLanguageSelector": false
  },
  "rules": [
    {
      "id": "rule-guardian",
      "actions": [
        {
          "action": "show_field",
          "target": "guardian_name"
        },
        {
          "action": "require_field",
          "target": "guardian_name"
        },
        {
          "action": "show_field",
          "target": "guardian_phone"
        },
        {
          "action": "require_field",
          "target": "guardian_phone"
        }
      ],
      "conditions": [
        {
          "fact": "over_18",
          "value": "No",
          "operator": "equal"
        }
      ],
      "logicType": "all",
      "description": "Volunteers under 18 need a guardian contact",
      "evaluationMode": "immediate"
    },
    {
      "id": "rule-orientation",
      "actions": [
        {
          "action": "show_field",
          "target": "orientation_note"
        }
      ],
      "conditions": [
        {
          "fact": "previous_volunteer",
          "value": "No",
          "operator": "equal"
        }
      ],
      "logicType": "all",
      "description": "Reassure first time volunteers",
      "evaluationMode": "immediate"
    }
  ]
}