Learn more about them

Content Library

B2B
B2C
B2B or B2C
Lebanon
Lithuania
Luxembourg
Macedonia
Malaysia
Malta
Mauritius
Mexico
Moldova
Monaco
Mongolia
Montenegro
Morocco
Namibia
Nepal
Netherlands
New Zealand
Nicaragua
Nigeria
Norway
Oman
Pakistan
Panama
Paraguay
Pennsylvania
Countries
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
/** * Webflow Visitor ID Script * Add this script to your Webflow site's custom code (before tag) * This will create and manage a persistent visitor ID across sessions */ (function() { 'use strict'; // Configuration const COOKIE_NAME = 'fvkn_visitor_id'; const COOKIE_EXPIRY_DAYS = 365; // 1 year /** * Generate a unique visitor ID * Format: timestamp-random-browser_fingerprint */ function generateVisitorId() { const timestamp = Date.now().toString(36); const randomPart = Math.random().toString(36).substr(2, 9); // Simple browser fingerprint const fingerprint = btoa( navigator.userAgent + screen.width + 'x' + screen.height + navigator.language + (navigator.platform || 'unknown') ).substr(0, 8).replace(/[^a-zA-Z0-9]/g, ''); return `${timestamp}-${randomPart}-${fingerprint}`; } /** * Get cookie value by name */ function getCookie(name) { const value = `; ${document.cookie}`; const parts = value.split(`; ${name}=`); if (parts.length === 2) { return parts.pop().split(';').shift(); } return null; } /** * Set cookie with expiry */ function setCookie(name, value, days) { const expires = new Date(); expires.setTime(expires.getTime() + (days * 24 * 60 * 60 * 1000)); const expiresStr = expires.toUTCString(); // Set cookie with SameSite and Secure attributes for cross-site tracking document.cookie = `${name}=${value}; expires=${expiresStr}; path=/; SameSite=None; Secure`; // Fallback for non-HTTPS environments (development) if (!document.cookie.includes(name)) { document.cookie = `${name}=${value}; expires=${expiresStr}; path=/`; } } /** * Get or create visitor ID */ function getOrCreateVisitorId() { let visitorId = getCookie(COOKIE_NAME); if (!visitorId) { visitorId = generateVisitorId(); setCookie(COOKIE_NAME, visitorId, COOKIE_EXPIRY_DAYS); // Log visitor creation (optional) console.log('New visitor ID created:', visitorId); // Track first visit event (optional) if (window.dataLayer) { window.dataLayer.push({ 'event': 'new_visitor_created', 'fvkn_visitor_id': visitorId, 'is_new_visitor': true }); } } return visitorId; } /** * Make visitor ID available globally */ function initializeVisitorTracking() { const visitorId = getOrCreateVisitorId(); // Make it available globally window.fvkn_visitor_id = visitorId; // Also add to dataLayer for GTM window.dataLayer = window.dataLayer || []; window.dataLayer.push({ 'fvkn_visitor_id': visitorId, 'visitor_id_set': true }); // Store in sessionStorage for quick access try { sessionStorage.setItem('fvkn_visitor_id', visitorId); } catch (e) { console.warn('Could not store visitor ID in sessionStorage:', e); } return visitorId; } /** * Enhanced visitor info function */ function getVisitorInfo() { const visitorId = window.fvkn_visitor_id || getOrCreateVisitorId(); return { visitor_id: visitorId, is_returning_visitor: getCookie(COOKIE_NAME) !== null, session_id: sessionStorage.getItem('session_id') || 'session_' + Date.now(), page_load_time: new Date().toISOString(), referrer: document.referrer || 'direct', utm_source: new URLSearchParams(window.location.search).get('utm_source'), utm_medium: new URLSearchParams(window.location.search).get('utm_medium'), utm_campaign: new URLSearchParams(window.location.search).get('utm_campaign') }; } // Initialize when DOM is ready if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initializeVisitorTracking); } else { initializeVisitorTracking(); } // Make functions available globally if needed window.fvknVisitorTracking = { getVisitorId: function() { return window.fvkn_visitor_id || getOrCreateVisitorId(); }, getVisitorInfo: getVisitorInfo, refreshVisitorId: function() { // Force create new visitor ID (useful for testing) const newId = generateVisitorId(); setCookie(COOKIE_NAME, newId, COOKIE_EXPIRY_DAYS); window.fvkn_visitor_id = newId; return newId; } }; })();