// — 1. Función para aplicar Hash SHA-256 (SOLO para email y otros datos limpios) —
// NOTA: Esta función ya NO hace toLowerCase() para que podamos usarla en el teléfono.
async function sha256(str) {
if (!str) return null;
// Normalización: SOLO limpieza de espacios (trim)
const normalizedStr = str.trim(); // QUITAR .toLowerCase() para evitar problemas con phone/address// … (resto del código de hasheo) …
const encoder = new TextEncoder();
const data = encoder.encode(normalizedStr);
// … (resto del código de hasheo) …
const hashBuffer = await crypto.subtle.digest(«SHA-256″, data);
// … (resto del código de hasheo) …
const hashArray = Array.from(new Uint8Array(hashBuffer));
return hashArray.map(b => b.toString(16).padStart(2, ‘0’)).join(»);
}// — 2. Lógica Principal de Conversión (CORREGIDA) —
(async () => {
const urlParams = new URLSearchParams(window.location.search);
const email = urlParams.get(«email»);
const phone = urlParams.get(«phone»);// **NORMALIZACIÓN ESPECÍFICA PARA EMAIL:** minúsculas
const normalizedEmail = email ? email.trim().toLowerCase() : null;
// **NORMALIZACIÓN ESPECÍFICA PARA TELÉFONO:** solo dígitos, sin el «+»
const normalizedPhone = phone ? phone.replace(/[^0-9]/g, ») : null; // Esto elimina todos los NO dígitos// Hashear los valores (si existen)
const hashedEmail = normalizedEmail ? await sha256(normalizedEmail) : null;
const hashedPhone = normalizedPhone ? await sha256(normalizedPhone) : null;// … (resto del código de gtag) …
if (hashedEmail || hashedPhone) {
gtag(‘event’, ‘conversion’, {
‘send_to’: ‘AW-833845743/kzFFCMzL6YkCEO_zzY0D’,
‘value’: 10.0,
‘currency’: ‘EUR’,
‘transaction_id’: »,‘user_data’: {
‘email’: hashedEmail,
‘phone_number’: hashedPhone
}
});
console.log(«Conversión mejorada enviada a Google Ads.»);
} else {
console.warn(«No se encontraron email ni teléfono en la URL para conversiones mejoradas.»);
}
})();
Muchas gracias
Hemos recibido su solicitud. Nos pondremos en contacto con usted en la mayor brevedad posible
Le deseamos lo mejor