(function() {
'use strict';
console.log('SUPERPET: Inicializando sistema de cross-domain tracking...');
// 1. Configuración de gtag si no está disponible
if (typeof gtag === 'undefined') {
window.dataLayer = window.dataLayer || [];
window.gtag = function(){dataLayer.push(arguments);};
console.log('SUPERPET: Configuración manual de gtag completada');
}
// 2. Configuración cross-domain para GA4 SuperPet
gtag('config', 'G-8Q27VEP2CW', {
linker: {
domains: ['mascotasegura.mapfre.com.pe']
},
cookie_domain: 'auto',
send_page_view: true
});
// 3. Configuración GA4 de Mapfre para transmisión dual de eventos
gtag('config', 'G-GBQENH1BJY', {
linker: {
domains: ['mascotasegura.mapfre.com.pe']
},
cookie_domain: 'auto',
send_page_view: false
});
// 4. Función para obtener parámetros UTM del sitio padre
function getParentUtmParams() {
const urlParams = new URLSearchParams(window.location.search);
const utmParams = {};
// Obtener UTM de la URL actual
const utmKeys = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
utmKeys.forEach(key => {
const value = urlParams.get(key);
if (value) {
utmParams[key] = value;
}
});
// Si no hay UTM en la URL, intentar obtener de sessionStorage o cookies
if (Object.keys(utmParams).length === 0) {
try {
const storedUtm = sessionStorage.getItem('original_utm_params');
if (storedUtm) {
const parsedUtm = JSON.parse(storedUtm);
Object.assign(utmParams, parsedUtm);
}
} catch (e) {
console.log('SUPERPET: No se pudieron recuperar UTM almacenados');
}
} else {
// Guardar UTM actuales en sessionStorage para futuras páginas
try {
sessionStorage.setItem('original_utm_params', JSON.stringify(utmParams));
} catch (e) {
console.log('SUPERPET: No se pudieron guardar UTM en sessionStorage');
}
}
return utmParams;
}
// 5. Función para obtener referrer como fallback
function getFallbackSource() {
const referrer = document.referrer;
if (referrer) {
try {
const referrerHost = new URL(referrer).hostname;
return {
utm_source: referrerHost,
utm_medium: 'referral'
};
} catch (e) {
return {};
}
}
return {};
}
// 6. Listener para eventos del iframe - Sistema de envío dual
window.addEventListener('message', function(event) {
if (event.origin !== 'https://mascotasegura.mapfre.com.pe') {
return;
}
if (event.data.type === 'iframe_datalayer_event') {
const eventData = event.data.event;
const parentUtm = getParentUtmParams();
console.log('SUPERPET: Evento del iframe interceptado -', eventData.event);
// Transmisión a GA4 SuperPet (sitio padre)
gtag('event', eventData.event, {
send_to: 'G-8Q27VEP2CW',
event_category: eventData.category || 'mapfre_iframe',
event_label: eventData.label || eventData.action || 'mapfre_interaction',
custom_parameter_1: 'from_mapfre_iframe',
custom_parameter_2: eventData.action,
source: 'mapfre_cross_domain',
// Agregar UTM del padre a los eventos
original_source: parentUtm.utm_source || 'direct',
original_medium: parentUtm.utm_medium || 'none',
original_campaign: parentUtm.utm_campaign || '(not set)',
...eventData
});
// Transmisión simultánea a GA4 de Mapfre
gtag('event', eventData.event, {
send_to: 'G-GBQENH1BJY',
event_category: eventData.category || 'mapfre_insurance',
event_label: eventData.label || eventData.action || 'iframe_event',
custom_parameter_1: 'from_parent_site',
custom_parameter_2: eventData.action,
source: 'superpet_cross_domain',
// Agregar UTM del padre a los eventos
original_source: parentUtm.utm_source || 'direct',
original_medium: parentUtm.utm_medium || 'none',
original_campaign: parentUtm.utm_campaign || '(not set)',
...eventData
});
console.log('SUPERPET: ✅ Evento transmitido a ambas instancias GA4 con UTM del padre -', eventData.event);
}
});
// 7. Actualización de URL del iframe con parámetros de tracking del padre
function enhanceIframeUrl() {
const iframe = document.getElementById('iframeMapfre');
if (!iframe) {
console.log('SUPERPET: WARNING - Iframe no localizado con ID: iframeMapfre');
return;
}
const gaCookie = document.cookie.match(/_ga=([^;]+)/);
const parentUtm = getParentUtmParams();
const fallbackUtm = getFallbackSource();
// Combinar UTM del padre con fallbacks
const finalUtm = { ...fallbackUtm, ...parentUtm };
const currentSrc = iframe.src;
const url = new URL(currentSrc);
// Agregar Client ID de GA4
if (gaCookie) {
url.searchParams.set('_ga', gaCookie[1]);
}
// Agregar parámetros UTM del padre (o fallbacks)
if (finalUtm.utm_source) {
url.searchParams.set('utm_source', finalUtm.utm_source);
} else {
url.searchParams.set('utm_source', window.location.hostname);
}
if (finalUtm.utm_medium) {
url.searchParams.set('utm_medium', finalUtm.utm_medium);
} else {
url.searchParams.set('utm_medium', 'iframe');
}
if (finalUtm.utm_campaign) {
url.searchParams.set('utm_campaign', finalUtm.utm_campaign);
} else {
url.searchParams.set('utm_campaign', 'mapfre_insurance');
}
// Agregar UTM adicionales si existen
if (finalUtm.utm_term) {
url.searchParams.set('utm_term', finalUtm.utm_term);
}
if (finalUtm.utm_content) {
url.searchParams.set('utm_content', finalUtm.utm_content);
}
// Parámetros adicionales
url.searchParams.set('cross_domain', 'true');
url.searchParams.set('parent_hostname', window.location.hostname);
iframe.src = url.toString();
console.log('SUPERPET: ✅ URL del iframe actualizada con UTM del padre:', finalUtm);
if (gaCookie) {
console.log('SUPERPET: ✅ Client ID agregado:', gaCookie[1]);
}
}
// 8. Ejecución al completar carga del DOM
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', function() {
setTimeout(enhanceIframeUrl, 1000);
});
} else {
setTimeout(enhanceIframeUrl, 1000);
}
console.log('SUPERPET: ✅ Sistema de cross-domain tracking con migración UTM configurado correctamente');
})();
Gran Plus Gourmet Perro Mini Y Pequeño Sabor Cordero & Arroz
Ir al contenido principal
Ir al footer