Funnel Events
Capture and transmit funnel interaction events with normalized answer payloads to power analytics and link user inputs to subscriptions and transactions.
We have developed a bespoke tracking system designed to capture user interactions seamlessly across all components where inputs are provided. This system collects and processes the values entered or selected by users in various input types — such as multiple choice questions, text inputs, number sliders, and more.
How We Capture Data
For each interactive component (e.g., multiple choice, text input, sliders), we extract the relevant values directly from the DOM elements associated with that component. These values are normalized into a consistent format defined by our internal AnswerPayload
interface, which includes information such as:
The type of conversion (e.g., single choice, multiple choice, text answer, number answer)
The question ID and text
The user’s answer data (IDs, text, or raw values)
We also handle complex cases like multiple selections by merging answers appropriately to avoid duplication.
Event Payloads
All captured answers are packaged into event payloads that are sent to our backend for analytics and processing. These payloads follow a strict schema that ensures data integrity and type safety. The key events include:
FunnelStart
— When a user starts interacting with a funnelFunnelViewEnter
andFunnelViewComplete
— When a user enters or completes a view, including all answers submitted on that pageFunnelComplete
— When a user completes the funnelFunnelAbandon
— When a user abandons the funnel
Each event payload includes a detailed answers
array containing the conversions captured on that step, adhering to the formats like:
Single choice answer
Multiple choice answers (with merged selections)
Text answers
Number answers
Example Payload
Here is a simplified example of a FunnelViewComplete
event payload including answers:
{
"eventType": "FunnelViewComplete",
"data": {
"organizationId": "org_123",
"trackingSessionId": "session_456",
"funnelId": 789,
"viewId": "view_001",
"viewSlug": "user-info",
"url": "https://example.com/funnel/view-1",
"answers": [
{
"conversionType": "answer.single_choice",
"questionId": "q1",
"questionText": "What is your favorite color?",
"answerId": "red",
"answerText": "Red"
},
{
"conversionType": "answer.text",
"questionId": "q2",
"questionText": "Please enter your name",
"answerData": { "value": "John Doe" }
},
{
"conversionType": "answer.multiple_choice",
"questionId": "q3",
"questionText": "Select all hobbies you enjoy",
"answerData": {
"answers": [
{ "answerId": "hiking", "answerText": "Hiking" },
{ "answerId": "reading", "answerText": "Reading" }
]
}
}
]
}
}
Where to Find More Details
The data collection logic is implemented in the
collectAnswers
function, which extracts input values per block type.Answer deduplication and merging logic ensures no duplicate data is sent.
Event payload schemas and types are rigorously validated in our API layer.
By capturing this detailed, structured data, our tracking system provides powerful insights into user behavior and conversion paths within funnels.
Last updated