Hello Everyone,
We run Qualtrics Website Intercept surveys on our websites. We use Tealium and Adobe Analytics for reporting.
What we're tracking per user:
- Survey funnel events — when the survey is displayed to a user, when the user answers the first question, and when the user completes the survey (at each user level)
- Individual question responses — question text + answer for every question.
Current plan:
- For question responses, we plan to use the Qualtrics Adobe Analytics Extension. It handles everything automatically — sends question-answer pairs to AA with no custom code per question. The known trade-offs are the 24hr processing delay, 60 embedded data field limit, and no free-form text support.
- For funnel events, the Qualtrics AA Extension doesn't help. We need to track at the individual user level when a survey is displayed and when a user starts answering — but Qualtrics only creates response records when a user clicks Next. If a user sees the survey but doesn't interact, there's no response record. So we use custom JavaScript in the survey to tell Tealium when the survey is shown, started, and completed, and Tealium forwards these to AA in real-time.
This means we'd be maintaining two separate data pipelines for the same survey — the AA Extension for responses, and custom JS + Tealium for funnel events.
What we're exploring:
To consolidate into one pipeline, we're exploring sending individual question responses via the same custom JS + Tealium path as the funnel events.
We've tested using addOnPageSubmit with the SurveyEngine API and it works, but we have two concerns:
- No global JS hook -- The
addOnPageSubmitcode must be added to every question individually. There's no survey-level event we can hook into. Since each of our survey pages contains one question, this means modifying every page. We tried Header scripts but they don't have access toSurveyEngine.addOnPageSubmit or QuestionData.getInstance. - No standard answer extraction — Each question type requires different API methods to extract answers, making the code fragile and hard to maintain. The API method varies by type —
getSelectedChoices() + Choices[id].Textfor MC,DOM querySelector('textarea')for Text Entry (sincegetTextValue()doesn't work for standalone TE),getChoiceValue()for Slider and Rank Order,getTextValue(choiceId)for Form Fields. We've validated MC single/multi, Text Entry, NPS, Slider, Rank Order, and Form Field — but the inconsistency across types and the need for per-question JS makes this fragile.
Our questions:
- Is there a way to run JavaScript globally on every page submit — without adding code to each question?
- Is there a standard or recommended way to capture question + answer details for every question on the client side with minimal per-question setup?
- For our use case (real-time funnel tracking + question responses), would you recommend the AA Extension + custom JS hybrid, or fully custom client-side tracking?
Thanks in advance for helping with this.
