• Documentation
  • Introduction
    • The member journey
  • Training
    • Create a program
    • Courses and sections
    • Lessons, media and publication
    • Milestones and paths
    • Tasks and deliverables
    • Cohorts and groups
  • Student & Community
    • Joining a school
    • Learning and resuming
    • Submitting and revising work
    • Calendar and lives
    • Spaces and questions
    • Reading progress
  • Coaching
    • Roles and assignments
    • Member context and work queue
    • Reviews and feedback
    • Sessions and interventions
    • Cohort cockpit and live operations
  • Leads & Qualification
    • People, leads and applications
    • Contacts and import
    • Qualification forms
    • Application triage
  • Setting & Booking
    • Setter scope
    • Sales availability
    • Share a booking link
    • Prospect booking
    • Agenda and booking management
    • Prepare a call and share its meeting link
  • Closing, Offers & Payments
    • Closer scope
    • Compose an offer
    • Share a nominal payment link
    • Buyer checkout and access
    • Instalments
    • Offline payment
    • Track payment and access failures
    • Stripe school account
  • Administration & Integrations
    • Organization roles and domains
    • API keys and tenant binding
    • Webhooks
    • Payment setup
  • API quickstart
  • API reference
    • Connect with MCP
    • Enrollments
      • GETGet the enrollment timeline
      • GETGet the coaching briefing
      • POSTPause an enrollment
      • POSTResume an enrollment
      • POSTExtend a deadline
      • POSTTransfer an enrollment
      • POSTClose an enrollment
      • POSTSubmit an outcome measure
      • GETList outcome measures
      • GETList deadline extensions
      • DELETECancel a deadline extension
      • GETList enrollments
      • POSTEnroll a person
    • Cohorts
      • GETGet the cohort cockpit
      • GETList the enrollments behind a cockpit signal
      • PATCHConfigure a cohort
      • POSTMove a cohort to another phase
      • POSTCreate a cohort
      • POSTChange a cohort's status
    • Coaching sessions
      • GETList coaching sessions
      • GETGet a coaching session
      • POSTRecord a coaching session
      • POSTAppend coaching session entries
    • Interventions
      • GETList interventions
      • POSTPlan an intervention
      • POSTClose an intervention
    • Live sessions
      • PATCHRecord live attendance
      • GETList live attendance
      • GETRead one enrollment's attendance
      • GETList live sessions
      • POSTSchedule a live session
      • PATCHUpdate a live session
      • POSTCancel a live session
      • GETGet live session
    • Programs
      • GETList programs
      • POSTCreate a program
      • GETRead a program
      • PATCHUpdate a program
      • POSTArchive a program
      • POSTRestore a program
    • Courses
      • GETList the courses of a program
      • POSTCreate a course
      • PATCHUpdate a course
      • POSTRename a course
      • POSTArchive a course
      • POSTReorder the courses of a program
      • POSTUpload a course cover
    • Sections
      • GETList the sections of a course
      • POSTCreate a section
      • POSTRename a section
      • POSTDissolve a section
      • POSTReorder the sections of a course
      • POSTMove a lesson into a section
      • DELETETake a lesson out of its section
    • Lessons
      • GETList the lessons of a program
      • POSTCreate a lesson
      • GETRead a lesson
      • PATCHUpdate a lesson
      • POSTPublish a lesson
      • POSTArchive a lesson
      • POSTMove a lesson to another course
      • POSTReorder the lessons of a program
      • POSTAttach a resource
      • DELETEDetach a resource
      • POSTReorder the resources of a lesson
      • POSTUpload a lesson resource
      • POSTUpload a lesson video
      • GETRead a lesson by its identifier
      • PATCHUpdate a lesson by its identifier
      • GETRead the discussion of a lesson
      • POSTComment on a lesson
    • Milestones
      • GETList the milestones of a program
      • POSTCreate a milestone
      • PATCHUpdate a milestone
      • POSTArchive a milestone
      • POSTReorder the milestones of a program
      • GETList the contributions of a milestone
      • POSTAttach a contribution
      • DELETEDetach a contribution
    • People
      • POSTImport people
      • POSTLink a duplicate person
      • DELETEUnlink a duplicate person
    • Delivery analytics
      • GETGet delivery analytics
    • Sales availability
      • GETRead sales availability
      • GETPreview sales slots
      • PUTReplace sales availability
      • GETList eligible sales closers
    • Community
      • POSTUpload an attachment
      • POSTAttach to a thread
      • POSTCreate a space
      • POSTPost a thread
      • POSTReply to a thread
      • POSTLink a thread
      • GETList spaces
      • GETRead a thread
      • GETSearch the community
    • Offer payments
      • POSTPause automatic charging
      • DELETEResume automatic charging
      • POSTCharge an instalment now
      • GETGet collections dashboard
    • Member tasks
      • POSTCreate a member task
      • GETList the tasks of a milestone
      • PUTUpdate a member task
      • POSTArchive a member task
      • POSTReorder the tasks of a milestone
      • GETRead a task
      • GETList program tasks
    • Deliverables
      • POSTCreate a deliverable
      • GETList the deliverables of a task
      • GETGet a deliverable
      • PUTUpdate a deliverable
      • POSTArchive a deliverable
    • Groups
      • GETList groups
      • POSTCreate a group
      • GETGet a group
      • PATCHUpdate a group
      • POSTAdd a Group membership
      • DELETERemove a Group membership
    • Paths
      • GETList program paths
      • POSTCreate a path
      • GETGet a path
      • PATCHVersion or promote a path
    • Webhooks
      • GETList webhook subscriptions
      • POSTCreate a webhook subscription
      • GETGet a webhook subscription
      • PATCHUpdate a webhook subscription
      • DELETEDelete a webhook subscription
      • POSTVerify a webhook subscription
      • POSTRotate a webhook secret
      • POSTPause or reactivate a webhook subscription
      • GETList webhook deliveries
      • GETGet a webhook delivery
      • POSTReplay a webhook delivery
    • Media
      • GETList media
      • POSTUpload a media
      • PATCHRename a media
      • DELETEDelete a media
    • Bookings
      • GETList the open slots of a booking link
      • POSTSave a booking lead
      • POSTBook a call for a prospect
      • GETGet booking details
      • GETList bookings
      • GETGet booking
      • PATCHUpdate booking details
      • GETGet booking agenda
      • GETGet closer meeting link
      • GETList person bookings
      • PUTSet closer meeting link
      • GETList booking links
      • POSTSend a booking email
      • GETRead booking follow-up
      • POSTCreate booking link
      • GETGet booking link
      • PUTRecord booking attendance
      • GETRead booking reminder settings
      • PATCHUpdate booking link
      • POSTReschedule booking
      • PUTSet booking reminder settings
      • POSTCancel booking
      • GETList booking reassignment candidates
      • POSTReassign booking
      • GETList booking reschedule slots
      • GETList booking reassignment slots
    • My learning
      • GETList my enrollments
      • GETGet my learning context
      • GETList my lessons
      • GETGet one of my lessons
      • GETList my agenda
      • GETGet my lesson note
      • PUTSave my lesson note
      • DELETEDelete my lesson note
      • GETList my lesson notes
      • GETGet my lesson's agent section
      • GETList my tasks
      • GETRead my submission
      • POSTOpen my submission draft
      • PUTSave my submission draft
      • POSTSubmit my work
      • POSTResubmit my work
    • Forms
      • GETList forms
      • POSTCreate a form
      • GETGet a form
      • PATCHUpdate form identity
      • DELETEDelete a form
      • PUTSave form definition
      • PUTSet form theme
      • PUTSet form qualification
      • PUTSet submission mode
      • PUTOpen or close a form
      • POSTPublish a form
      • POSTUnpublish a form
      • GETList form responses
      • GETGet a form response
      • GETRead form statistics
      • POSTRetry response qualification
      • GETRead form definition
      • GETRead form theme
      • GETRead form qualification
      • GETRead form submission-settings
      • GETRead form identity fields
      • PUTSet form identity fields
    • Calendar connections
      • GETList calendar connections
      • GETRead a calendar connection
      • POSTRequest calendar consent
      • GETList writable calendars
      • PUTSelect a calendar
      • DELETEDisconnect a calendar
    • Offers
      • GETList offers
      • POSTCreate an offer
      • GETGet an offer
      • PATCHUpdate an offer
      • GETGet composer options
    • Responsibilities
      • GETList responsibilities
      • POSTAssign a responsibility
      • DELETERemove a responsibility
    • Submission reviews
      • GETList submission reviews
      • GETRead a submission review
      • POSTTake a submission in review
      • POSTDecide a submission review
    • Closers
      • GETList closer invitations
      • POSTInvite a closer
      • POSTResend a closer invitation
      • DELETECancel a closer invitation
      • GETRead commercial responsibility
      • PUTAssign commercial responsibility
      • GETRead my sales availability
      • PUTUpdate my sales availability
      • GETRead my closer setup
    • Personal preparation
      • GETRead my work profile
      • PATCHUpdate my work profile
      • GETRead my preparation
    • Video library
      • GETList video resources
      • GETGet a video resource
      • POSTPublish a video resource
      • PATCHUpdate a video resource
      • POSTUnpublish a video resource
      • POSTRepublish a video resource
    • Video questions
      • POSTAsk a question
      • GETList my questions
      • GETGet my question
      • GETList received questions
      • PATCHAssign a question
      • POSTAnswer a question
      • POSTCancel a question
  1. Documentation
  2. Leads & Qualification
  3. Qualification forms
HomeBlogDocumentationPricingContact

Qualification forms

PreviousContacts and importNextApplication triage
On this page
Publish a version people can answerChoose how candidates see the formSave incomplete responses

A qualification form asks the questions an owner/admin needs before deciding whether to speak with a candidate. Only the school's owner and admins can read, compose, publish, and manage forms. A closer or setter cannot use the form workshop or see its responses. The respondent needs no school account: they open a public address tied to the school and the form.

For Maya Chen, create a short Agentic AI Developer interest questionnaire. Ask what she wants to build, how much experience she has, and whether she wants a conversation. The same form can be attached to target programs or cohorts, but zero attachments is valid. A form response is evidence for triage, not an enrollment or payment.

Publish a version people can answer

  1. 1

    Create the draft

    Open CRM → Forms and choose New form. Enter the Form title and an optional Description. The form begins as Draft, with no public address. Use Edit the form later if its title, description or attachments need changing.

  2. 2

    Compose and preview

    In Composition, use Add a question for each prompt. Give each a stable Question key, the Question asked, an Answer type, and whether an answer is required. Choice questions need offered options. Reorder the questions, then inspect Preview; its Send my answers button is inactive because preview records nothing. A draft can be saved incomplete, but an empty or invalid choice list cannot serve a useful respondent.

  3. 3

    Publish and share

    Choose Publish when the draft is ready. The workshop shows Version 1, its Public address, and Open to responses. Use Copy the public address and send the complete link to Maya. The address follows /en/f/{school}/{form} on your site; the school and published version are resolved from that link, not from a value Maya chooses in a request.

Workshop stateWhat Maya receives at the public addressOwner/admin action
Draft, never publishedNo questionnaire or shareable public addressFinish questions and Publish
Live, version publishedThe current frozen published versionShare the address; use View responses after submissions
Draft changed after publicationStill the earlier published versionCheck changes, then Publish the changes to create the next version
Closed to responsesThe address exists but serves no questionnaireTurn Open to responses on when ready
UnpublishedThe address stops answering; its version history remainsPublishing again makes a new version, rather than restoring the old one

Editing a question or the form title after publication changes the draft only. Maya still sees the published version until you choose Publish the changes. Her submitted answers remain readable with the wording and answer types she saw, even after later publications. The public address does not change when you rename the form after its first publication.

Warning

To pause submissions temporarily, switch off Open to responses. Unpublish also stops the address, but publishing later creates another version. Neither action erases earlier responses. If Maya reports an unavailable link, check the form's Live/Closed state and the exact school/form address before sending a new one.

Choose how candidates see the form

Each form has a Theme, chosen at the top of the Preview tab:

ThemeWhat the candidate sees
SaaS (default)All the questions on one page, then Send my answers
TypeformA dark welcome screen with Start, then the name, the email and one question per screen, with a progress bar and previous/next arrows

The preview switches as soon as you pick a theme, before anything is saved. Choose Save theme to keep it on the draft. The theme a candidate sees is the one frozen in the published version: after saving a new theme, choose Publish the changes to apply it. Changing the theme never changes the questions or the answers already received.

In the Typeform presentation, Maya can answer with the keyboard: A, B, C… pick a choice, Enter confirms a step (in a long answer, Enter adds a new line and ⌘/Ctrl + Enter confirms), and the arrow keys move to the previous or next question. Her application is only sent when she presses Send my application — Enter in a field never sends it. If the server refuses an answer, she is taken back to that question with the reason, and her other answers are kept.

Continue with application triage once Maya submits. Form composition, theme, publication, and response reading are school screen flows; there is no public /api/v1/forms or application-triage endpoint today.

Save incomplete responses

In form creation or the workshop Preview settings, enable Save incomplete responses, then publish. The default mode saves only the final submission. Progressive mode saves after a valid name and email: classic forms save after a pause, Typeform saves on validated steps. The status says whether changes are saved; invalid edited values remain unsaved. Candidates can return in the same browser; another browser or email lookup cannot recover their answers. Publishing new questions does not change an already-started response. Closing or unpublishing blocks saving and recovery immediately. Descriptions preserve plain-text line breaks in both themes.

Owners/admins can also manage forms through the API or MCP. Save the draft definition/settings first, then explicitly publish. Never enable AI without consent.

Name and email are fixed required identity fields shown before custom questions in Composition and Preview. They are included automatically: do not recreate them. They cannot be deleted or reordered, and they are excluded from AI qualification. Custom criteria remain attached to stable question keys when questions move.

Use Edit name and email labels in Composition to change their labels and descriptions/help. Their required status and fixed identity binding remain unchanged. Restore localized defaults with the editor reset button; publish to apply edits. In Preview choose Typeform (light) for a light version of the same one-question-at-a-time experience; Typeform keeps its dark appearance.