window.dataLayer = window.dataLayer || []; const HS_FORM_CONFIG = { "9530ff76-4b0f-4f60-8769-4debaa27427d": { form_type: "New business", fields: { help: "0-1/how_can_we_help_you_", hear: "0-1/how_did_you_hear_about_us_", budget: "0-1/estimated_budget___" } }, "1d9bed60-efaf-41eb-8a69-e1f33d21f515": { form_type: "Media inquiry", fields: { hear: "0-1/how_did_you_hear_about_us_" } } }; function norm(v) { return (v == null ? "" : String(v)).trim().toLowerCase(); } function getVal(scopeEl, name) { if (!name) return ""; const el = scopeEl.querySelector(`[name="${CSS.escape(name)}"]`); return el ? el.value : ""; } function readPayload(formEl, config) { const f = config.fields || {}; return { form_type: config.form_type || "", help: norm(getVal(formEl, f.help)), hear: norm(getVal(formEl, f.hear)), budget: norm(getVal(formEl, f.budget)) }; } function pushDataLayer(payload) { window.dataLayer.push({ event: "hubspot_form_submission", form_type: payload.form_type || "", help: payload.help || "", hear: payload.hear || "", budget: payload.budget || "", page_url: window.location.origin + window.location.pathname }); } function bindHubSpotForms() { document.querySelectorAll(".hsfc-FormWrapper form.hsfc-Form").forEach((formEl) => { if (formEl.__hsDlBound) return; formEl.__hsDlBound = true; const wrapper = formEl.closest(".hsfc-FormWrapper"); if (!wrapper) return; wrapper.__hsPending = null; wrapper.__hsPushed = false; formEl.addEventListener("submit", function () { const formId = formEl.getAttribute("data-form-id"); const config = HS_FORM_CONFIG[formId]; if (!config) return; wrapper.__hsPending = readPayload(formEl, config); }, true); const obs = new MutationObserver(function () { if (wrapper.__hsPushed) return; if (wrapper.querySelector(".hsfc-PostSubmit")) { const pending = wrapper.__hsPending; if (pending) { pushDataLayer(pending); } wrapper.__hsPushed = true; obs.disconnect(); } }); obs.observe(wrapper, { childList: true, subtree: true }); }); } function initHsDl() { bindHubSpotForms(); setTimeout(bindHubSpotForms, 250); setTimeout(bindHubSpotForms, 1000); setTimeout(bindHubSpotForms, 2500); setTimeout(bindHubSpotForms, 5000); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", initHsDl); } else { initHsDl(); }