1(async () => { 2 const params = new URLSearchParams(window.location.search); 3 const grupo = params.get('utm_content'); 4 const kw = params.get('utm_term'); 5 const gclid = params.get('gclid'); 6 7 if (!gclid || !grupo || !kw) return; // orgánico: el HTML ya tiene el mensaje correcto 8 9 let map; 10 try { 11 map = await fetch('/keyword-map.json').then(r => r.json()); 12 } catch { 13 return; // el fallback orgánico del HTML se mantiene 14 } 15 16 const group = map.groups?.[grupo]; 17 if (!group) return; 18 19 const verb = group.keywords?.[kw]; 20 if (!verb) return; 21 22 const message = `Hola, vi su página de ${grupo} y ${verb} una consulta`; 23 const encoded = encodeURIComponent(message); 24 25 document.querySelectorAll('a[href*="wa.me/"]').forEach(a => { 26 a.href = a.href.replace(/([?&])text=[^&]*/, `$1text=${encoded}`); 27 }); 28})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.