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
}
Event When Data
vto_modal_open Modal opens (integrator calls product.generate()) personPhotoReady
vto_modal_close Modal closes fromState
vto_onboarding_view Onboarding shown —
vto_onboarding_dismiss Onboarding dismissed —
Event When Data
vto_photo_upload_start File selected fileSize, fileType
vto_photo_upload_complete Upload done processingTimeMs, hasWarnings
vto_photo_upload_error Upload failed errorMessage, errorCode
vto_photo_change Photo replaced —
vto_model_selected Predefined model chosen modelId
vto_qr_shown QR code displayed —
vto_qr_photo_received Photo received via QR —
Event When Data
vto_generate_start Generation begins personImageRef
vto_generate_complete Generation succeeds generationTimeMs
vto_generate_error Generation fails errorMessage
vto_result_view Result shown —
Event When Data
vto_add_to_cart Add to bag clicked sku
vto_add_to_wishlist Wishlist toggled sku, added
vto_history_view History opened resultCount
Event When
vto-download User downloads result
vto-share User shares result
vto-feedback User submits feedback

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