Skip to main content
Sends a quiz result click event to Constructor.io’s API. This tracks when a user clicks on a product that appeared in quiz results.

Method Signature

constructorio.tracker.trackQuizResultClick(parameters, networkParameters?)

Parameters

parameters
object
required
Parameters for the quiz result click event
networkParameters
object
Optional parameters for the network request

Returns

Returns true on success or an Error object if validation fails.

Examples

Basic Example

import ConstructorIOClient from '@constructor-io/constructorio-client-javascript';

const constructorio = new ConstructorIOClient({
  apiKey: 'YOUR_API_KEY',
});

// Track quiz result click
constructorio.tracker.trackQuizResultClick({
  quizId: 'coffee-quiz',
  quizVersionId: '1231244',
  quizSessionId: '123',
  itemId: 'COFFEE-001',
  itemName: 'Premium Espresso',
});

Complete Example

// Track quiz result click with all parameters
constructorio.tracker.trackQuizResultClick({
  quizId: 'coffee-quiz',
  quizVersionId: '1231244',
  quizSessionId: '123',
  itemId: 'COFFEE-001',
  itemName: 'Premium Espresso',
  variationId: 'COFFEE-001-12OZ',
  section: 'Products',
  resultCount: 20,
  resultPage: 1,
  resultId: '019927c2-f955-4020-8b8d-6b21b93cb5a2',
  resultPositionOnPage: 2,
  numResultsPerPage: 10,
});

Integration Example

// Track when user clicks on a quiz result
const quizResults = document.querySelectorAll('.quiz-result');
const quizData = window.quizSessionData; // Store quiz metadata

quizResults.forEach((result, index) => {
  result.addEventListener('click', () => {
    const itemId = result.dataset.itemId;
    const itemName = result.dataset.itemName;
    
    constructorio.tracker.trackQuizResultClick({
      quizId: quizData.quizId,
      quizVersionId: quizData.versionId,
      quizSessionId: quizData.sessionId,
      itemId: itemId,
      itemName: itemName,
      resultId: quizData.resultId,
      resultPositionOnPage: index,
    });
  });
});

Example After Quiz Completion

// After user completes a quiz
async function handleQuizCompletion(quizId, answers) {
  const response = await constructorio.quizzes.getQuizResults(
    quizId,
    answers
  );
  
  // Store quiz metadata for tracking
  const quizSessionData = {
    quizId: response.quiz_id,
    versionId: response.quiz_version_id,
    sessionId: response.quiz_session_id,
    resultId: response.result_id,
  };
  
  // Display results...
  
  // Track when user clicks a result
  document.querySelectorAll('.quiz-result').forEach((elem, idx) => {
    elem.addEventListener('click', () => {
      constructorio.tracker.trackQuizResultClick({
        quizId: quizSessionData.quizId,
        quizVersionId: quizSessionData.versionId,
        quizSessionId: quizSessionData.sessionId,
        itemId: elem.dataset.itemId,
        itemName: elem.dataset.itemName,
        resultId: quizSessionData.resultId,
        resultPositionOnPage: idx,
      });
    });
  });
}

When to Use

Call trackQuizResultClick() when:
  • A user clicks on a product in quiz results
  • A user navigates to a product detail page from quiz results
  • A user selects a recommended item from a quiz

Important Notes

  • All three quiz identifiers are required: quizId, quizVersionId, and quizSessionId
  • Either itemId or itemName must be provided
  • These identifiers should come from the quiz results API response
  • Track this event before navigating away from the quiz results page
  • The resultPositionOnPage should be 0-indexed

Quiz Session Management

Store quiz session data when results are loaded:
// When quiz results are loaded
const quizResponse = await constructorio.quizzes.getQuizResults(
  'coffee-quiz',
  userAnswers
);

// Store for later tracking
window.quizSessionData = {
  quizId: quizResponse.quiz_id,
  versionId: quizResponse.quiz_version_id,
  sessionId: quizResponse.quiz_session_id,
  resultId: quizResponse.result_id,
};

Required Quiz Identifiers

All quiz tracking methods require three identifiers:
  1. quizId: Identifies the specific quiz (e.g., “style-finder”, “product-matcher”)
  2. quizVersionId: Identifies the quiz version (for A/B testing)
  3. quizSessionId: Identifies the unique quiz session
These are returned in the quiz results API response.

Position Tracking

Track which position in the results gets the most clicks:
constructorio.tracker.trackQuizResultClick({
  quizId: 'style-quiz',
  quizVersionId: '1.0',
  quizSessionId: 'session-abc',
  itemId: 'ITEM-123',
  itemName: 'Recommended Style',
  resultPositionOnPage: 0,  // First result
  numResultsPerPage: 5,     // 5 visible results
});

Relationship with Other Events

Track these events in sequence:
  1. Quiz questions answered
  2. Quiz results displayed
  3. trackQuizResultClick - When user clicks a result (this method)
  4. trackQuizConversion - If the click leads to a conversion

API Endpoint

This method sends a POST request to:
/v2/behavioral_action/quiz_result_click

Build docs developers (and LLMs) love