Analytics Platforms (Custom)
Overview
Why Integrate Third-Party Analytics?
Core Integration Pattern
Basic Implementation
// Wait for Shoplift to be available
function initializeShopliftTracking() {
if (window.shoplift && window.shoplift.getVisitorData) {
sendTestDataToAnalytics();
} else {
// Retry if Shoplift isn't ready yet
setTimeout(initializeShopliftTracking, 100);
}
}
function sendTestDataToAnalytics() {
// Get comprehensive visitor data
const visitorData = window.shoplift.getVisitorData();
if (!visitorData.visitor) {
// No visitor data available yet
return;
}
// Process each test assignment
visitorData.visitorTests.forEach(test => {
// Send to your analytics platform
trackTestExposure({
// Test information
testId: test.testId,
hypothesisId: test.hypothesisId,
isThemeTest: test.isThemeTest,
// Visitor information
visitorId: visitorData.visitor.id,
device: visitorData.visitor.device,
country: visitorData.visitor.country,
// Attribution data
utmSource: visitorData.visitor.utmSource,
utmMedium: visitorData.visitor.utmMedium,
utmCampaign: visitorData.visitor.utmCampaign,
// Timing
assignedAt: test.createdAt
});
});
}
// Initialize on page load
document.addEventListener('DOMContentLoaded', initializeShopliftTracking);Understanding the Visitor Data Structure
Last updated
Was this helpful?