Le contenu qu’il vous faut pour trouver les bons influenceurs et marques, développer votre activité, augmenter l’engagement et générer un vrai retour sur investissement

Articles et ressources

Filtres

All social medias
Instagram
LinkedIn
Snapchat
Substack
Tiktok
Twitch
X
Youtube
Social Media
Taiwan
Countries
Brescia
Brighton
Brisbane
Bristol
Brno
Brussels
Bruxelles
Bucaramanga
Bucharest
Budapest
Buenos Aires
Cagliari
Calgary
California
Campina Grande
Canberra
Cape Town
Cardiff
Caucaia
Chicago
Christchurch
Cincinatti
Cleveland
Cologne
Columbus
City/State
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; } }; })();