Skip to main content
Sends a recommendation click event to Constructor.io’s API. This tracks when a user clicks on a product that appeared in a recommendation pod or widget.

Method Signature

constructorio.tracker.trackRecommendationClick(parameters, networkParameters?)

Parameters

parameters
object
required
Parameters for the recommendation 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 recommendation click
constructorio.tracker.trackRecommendationClick({
  podId: 'home_page_bestsellers',
  strategyId: 'popularity',
  itemId: 'ITEM-001',
  itemName: 'Popular Product',
});

Complete Example

// Track recommendation click with all parameters
constructorio.tracker.trackRecommendationClick({
  podId: 'pdp_similar_items',
  strategyId: 'item_similarity',
  itemId: 'ITEM-001',
  itemName: 'Similar Product',
  variationId: 'ITEM-001-BLUE-L',
  resultId: '019927c2-f955-4020-8b8d-6b21b93cb5a2',
  resultCount: 20,
  resultPage: 1,
  resultPositionOnPage: 2,
  numResultsPerPage: 10,
  section: 'Products',
  seedItemIds: ['CURRENT-ITEM-123'],
});

Integration Example

// Track when user clicks on a recommendation
const recommendationItems = document.querySelectorAll('.recommendation-item');
const podId = 'home_recommendations';
const strategyId = 'personalized';
const resultId = window.recommendationResultId; // From recommendations API

recommendationItems.forEach((item, index) => {
  item.addEventListener('click', () => {
    const itemId = item.dataset.itemId;
    const itemName = item.dataset.itemName;
    const variationId = item.dataset.variationId;
    
    constructorio.tracker.trackRecommendationClick({
      podId: podId,
      strategyId: strategyId,
      itemId: itemId,
      itemName: itemName,
      variationId: variationId,
      resultId: resultId,
      resultPositionOnPage: index,
    });
  });
});

Example with Seed Items

// Track click on item-based recommendations
constructorio.tracker.trackRecommendationClick({
  podId: 'similar_items',
  strategyId: 'collaborative_filtering',
  itemId: 'SIMILAR-001',
  itemName: 'Similar Product',
  resultId: '019927c2-f955-4020-8b8d-6b21b93cb5a2',
  seedItemIds: ['VIEWED-ITEM-123'], // Item user is currently viewing
});
// Track click in a recommendation carousel
function trackCarouselClick(item, position, totalItems) {
  constructorio.tracker.trackRecommendationClick({
    podId: 'trending_products',
    strategyId: 'trending',
    itemId: item.id,
    itemName: item.name,
    resultPositionOnPage: position,
    resultCount: totalItems,
    numResultsPerPage: 5, // Visible items in carousel
  });
}

When to Use

Call trackRecommendationClick() when:
  • A user clicks on a recommended product
  • A user navigates to a product detail page from recommendations
  • A user interacts with a recommendation carousel item
  • A user clicks a quick-view button on a recommendation

Important Notes

  • Always include the resultId from Constructor.io’s recommendations response
  • The podId must match the pod ID used in trackRecommendationView
  • The strategyId should match the strategy from the recommendations API response
  • Both itemId and itemName are required
  • Track this event before navigating away from the current page
  • The resultPositionOnPage should be 0-indexed

Strategy ID Examples

Common strategy IDs:
  • "popularity" - Popular items
  • "personalized" - Personalized recommendations
  • "item_similarity" - Similar items
  • "collaborative_filtering" - Items other users liked
  • "trending" - Trending items
  • "complementary" - Complementary products

Pod and Strategy Mapping

Ensure consistency across tracking calls:
// When viewing recommendations
constructorio.tracker.trackRecommendationView({
  podId: 'pdp_similar_items',
  // ... other parameters
});

// When clicking a recommendation - use same podId
constructorio.tracker.trackRecommendationClick({
  podId: 'pdp_similar_items',  // Must match
  strategyId: 'item_similarity',
  itemId: 'ITEM-123',
  itemName: 'Product Name',
});
If the clicked item is a sponsored listing:
constructorio.tracker.trackRecommendationClick({
  podId: 'home_recommendations',
  strategyId: 'personalized',
  itemId: 'PREMIUM-001',
  itemName: 'Premium Product',
  resultId: '019927c2-f955-4020-8b8d-6b21b93cb5a2',
  slCampaignId: 'holiday-campaign-2024',
  slCampaignOwner: 'Brand-X',
});

Position Tracking

Tracking position helps understand which recommendation slots perform best:
constructorio.tracker.trackRecommendationClick({
  podId: 'frequently_bought_together',
  strategyId: 'complementary',
  itemId: 'ACCESSORY-001',
  itemName: 'Product Accessory',
  resultPositionOnPage: 0,  // First item
  numResultsPerPage: 4,     // 4 visible items
});

Relationship with Other Events

Track these events in sequence:
  1. trackRecommendationView - When recommendations are displayed
  2. trackRecommendationClick - When user clicks a recommendation (this method)
  3. trackConversion - If the click leads to a conversion

API Endpoint

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

Build docs developers (and LLMs) love