Skip to content

Analytics Events

The SDK dispatches a unified vto-analytics CustomEvent at every state transition.

document.addEventListener('vto-analytics', (e) => {
window.dataLayer?.push(e.detail);
});
interface VtoAnalyticsEvent {
event: string; // Event name (e.g. 'vto_button_click')
sessionId: string; // UUID per browser session
timestamp: string; // ISO 8601
productName?: string; // Product context
productUrl?: string;
data?: Record<string, unknown>; // Event-specific payload
}
EventWhenData
vto_modal_openModal opens (integrator calls product.generate())personPhotoReady
vto_modal_closeModal closesfromState
vto_onboarding_viewOnboarding shown
vto_onboarding_dismissOnboarding dismissed
EventWhenData
vto_photo_upload_startFile selectedfileSize, fileType
vto_photo_upload_completeUpload doneprocessingTimeMs, hasWarnings
vto_photo_upload_errorUpload failederrorMessage, errorCode
vto_photo_changePhoto replaced
vto_model_selectedPredefined model chosenmodelId
vto_qr_shownQR code displayed
vto_qr_photo_receivedPhoto received via QR
EventWhenData
vto_generate_startGeneration beginspersonImageRef
vto_generate_completeGeneration succeedsgenerationTimeMs
vto_generate_errorGeneration failserrorMessage
vto_result_viewResult shown
EventWhenData
vto_add_to_cartAdd to bag clickedsku
vto_add_to_wishlistWishlist toggledsku, added
vto_history_viewHistory openedresultCount
EventWhen
vto-downloadUser downloads result
vto-shareUser shares result
vto-feedbackUser submits feedback

The SDK automatically batches events and forwards them to the server’s analytics endpoint every 5 seconds (and on page unload).