// --- UTM Tracking ---
const KEYS = ['utm_source','utm_medium','utm_campaign','utm_term','utm_content'];
function getUTMParams() {
const params = new URLSearchParams(window.location.search);
const out = {};
for (const k of KEYS) {
try {
if (params.has(k)) {
out[k] = params.get(k);
if (window.localStorage) localStorage.setItem(k, out[k]);
} else if (window.localStorage && localStorage.getItem(k)) {
out[k] = localStorage.getItem(k);
}
} catch (_) {}
}
return out;
}
function fillUTMFields() {
const utm = getUTMParams();
if (!utm || !Object.keys(utm).length) return;
document.querySelectorAll('form').forEach(function (form) {
for (const k of KEYS) {
const field = form.querySelector('input[name="' + k + '"]');
if (field && utm[k] && !field.value) field.value = utm[k];
}
});
}
(window.requestIdleCallback || setTimeout)(fillUTMFields, 0);
// Re-run after Squarespace’s SPA navigation
let idleTimer;
const mo = new MutationObserver(function () {
clearTimeout(idleTimer);
fillUTMFields();
idleTimer = setTimeout(function () { mo.disconnect(); }, 5000);
});
mo.observe(document.documentElement, { childList: true, subtree: true });
})();