ticket.created.
Events
A response sends
survey.response.partial at most once. If the person comes back and finishes, survey.response.completed follows.
Payload
Answers are keyed by each question’s answerkey, so payloads stay stable when you reword or reorder questions.
survey.idis the survey’s SDK id — the value you pass toGleap.showSurvey.contactisnullfor anonymous respondents.- Answer values: numbers for scales and
number, the choice id forsingle, an array of choice ids formulti,true/falseforyesno, strings for text inputs andYYYY-MM-DDfor dates. “Other” answers are{ "other": "…" }. See Survey definition. survey.response.answeredcarries the response as it is at that moment (status: "in_progress"), including all answers so far.
Migrating from ticket webhooks
Before Surveys 2.0, every survey response created a ticket of type Survey, and integrations listened toticket.created filtered to surveys.
Legacy compatibility until January 5, 2027. Webhooks on
ticket.created that received survey tickets before — filtered to the Survey type, or without a type filter — keep receiving a ticket-shaped payload for every completed response: formData keyed by the old question names (migrated surveys) or answer keys with choices as their label text, session with the same contact fields as before, and surveyResponse with the response id. Move those integrations to survey.response.completed before then.survey.response.* events you add to it.
To act on responses inside Gleap — email the respondent, open a ticket, notify a teammate — use a survey automation.
Mapping from the old payload: