window.dataLayer = window.dataLayer || [];
const freeSearchIds = [
"f9f3901b-dab3-499c-8d13-dd3d414e6417",
"c428018f-301d-4abb-9a4f-a76452a0f750",
"c68033a7-ce99-4b70-99c5-28c464701767",
"548b5d75-12c9-487a-a85c-9ba9ac11bd9d",
"03d9a49f-f1e2-4428-9c6d-44acce8530d3",
"f508f104-ba29-450b-b9bd-5c3707abbe27",
"26652f0e-18c4-41b4-8d85-1821cb663bc5",
];
const demoIds = [
"ffcb0bc7-bb92-4c92-b5e2-a096bc061425",
"e412ec8a-a3a3-412c-9b7c-ce0cbc9fc1e2",
"8991966e-0238-4db9-9237-461ba33542b7",
"76a49e5c-d2e7-4dbd-9e87-e8fe236c271d",
"9faf5170-0690-427d-8b8a-e2225c54374e",
"b60551b0-28c8-4d5c-bd39-cba3ad672c91",
"db41d059-6970-4245-b744-4540570b0e2d",
"feb89e82-53a8-4d54-8bf9-e5b86a36ecf6",
"b271b654-e92b-4518-9c1e-abbb24749b5a",
"0e428320-44a5-434b-8794-3e09260b363e",
"d641d89f-be02-4183-a236-95a71c3a7cd1",
"2d455458-7539-41a7-9a5f-8997b1bb63c1",
"11310595-5fa3-422a-a90e-5ca889d5f569",
"44fa7337-8191-405a-845d-7718b7e2ea9e",
"3cc652bb-4c09-44cf-b0a2-b53b59f3d313",
"41c55143-8d26-464c-b291-b71535774cf8",
];
// Load ZeroBounce script once
let isZeroBounceScriptLoaded = false;
let zeroBounceScriptLoading = false;
let zeroBounceCallbacks = [];
function loadZeroBounceScript() {
if (isZeroBounceScriptLoaded) {
return Promise.resolve();
}
if (zeroBounceScriptLoading) {
return new Promise((resolve) => {
zeroBounceCallbacks.push(resolve);
});
}
zeroBounceScriptLoading = true;
console.log("Loading ZeroBounce script...");
return new Promise((resolve, reject) => {
const script = document.createElement("script");
script.src =
"https://www.zerobounce.net/widget/ZeroBounceHubSpotValidationWidget.js";
script.async = true;
script.onload = () => {
console.log("ZeroBounce script loaded successfully");
isZeroBounceScriptLoaded = true;
zeroBounceScriptLoading = false;
zeroBounceCallbacks.forEach((callback) => callback());
zeroBounceCallbacks = [];
resolve();
};
script.onerror = (err) => {
console.error("Failed to load ZeroBounce script:", err);
zeroBounceScriptLoading = false;
reject(err);
};
document.head.appendChild(script);
});
}
// Initialize ZeroBounce for a specific form ID
function setupZeroBounceForForm(formId) {
console.log("Setting up ZeroBounce for form ID:", formId);
// Find the actual form element in the DOM
const formElement = document.querySelector(`form[data-form-id="${formId}"]`);
if (!formElement) {
console.warn(`Form with ID ${formId} not found in DOM`);
return;
}
const config = {
apiKey: "8e36c79198194089bf729a5c93515c35",
disableSubmitOnError: true,
hubspotFormId: formId,
};
console.log("ZeroBounce config:", config);
// Make sure the script is loaded before trying to initialize
loadZeroBounceScript()
.then(() => {
if (typeof window.initializeZeroBounce === "function") {
console.log("Calling initializeZeroBounce for form:", formId);
window.initializeZeroBounce(config);
console.log("ZeroBounce initialization complete for form:", formId);
} else {
console.error(
"initializeZeroBounce function not found in global scope."
);
}
})
.catch((err) => {
console.error("Failed to setup ZeroBounce:", err);
});
}
window.addEventListener("message", ({ data }) => {
if (data.type === "hsFormCallback") {
const formId = data.id;
if (data.eventName === "onFormSubmitted") {
if (freeSearchIds.includes(formId)) {
const h1Element = document.querySelector("h1");
const h1Text = h1Element.textContent;
const formTitle = document.querySelector("h3.form-title");
const formText = formTitle.textContent;
window.dataLayer.push({
event: "free_tool_form_submit_tw",
tool_name: formText,
});
}
}
if (data.eventName === "onFormReady") {
// Initialize ZeroBounce for this specific form
setupZeroBounceForForm(formId);
// GA events for included forms
if (demoIds.includes(formId)) {
const form = document.querySelector(`form[data-form-id="${formId}"]`);
if (form) {
form.addEventListener(
"input",
() => {
const urlParams = new URLSearchParams(window.location.search);
const planType = urlParams.get("plan_type");
window.dataLayer.push({
event: "meeting_booked_start_tw",
plan_type: planType ?? "",
});
},
{ once: true }
);
}
}
}
}
// specific HS CTA's that need to be tracked
if (
data.type === "hsCallsToActionCallback" &&
data.eventName === "onCallToActionNavigated"
) {
if (Number(data.id) === 78780637165) {
window.dataLayer.push({
event: "cta_click_start_trial_intent_tw",
});
} else {
window.dataLayer.push({
event: "hubspotcta_click_tw",
});
}
}
});
// Qualified events
function handleDemo(eventName) {
const urlParams = new URLSearchParams(window.location.search);
const planType = urlParams.get("plan_type");
window.dataLayer.push({
event: eventName,
plan_type: planType ?? "",
});
}
qualified("handleEvents", function (name, data) {
switch (name) {
case "Demo Request Start":
handleDemo("meeting_booked_start_tw");
break;
case "Demo Request Complete":
handleDemo("meeting_booked_complete_tw");
break;
default:
break;
}
});
(function () {
const COOKIE_DOMAIN = ".talkwalker.com";
const MEDIA_MONKS_URL_COOKIE_NAME = "ga_url_cookie";
const setMediaMonksOnLoadUrlCookie = () => {
// Skip if cookie already exists
if (
document.cookie
.split("; ")
.some((item) =>
item.trim().startsWith(MEDIA_MONKS_URL_COOKIE_NAME + "=")
)
) {
return;
}
const { origin, pathname } = new URL(window.location.href);
const urlWithoutQueryParams = origin + pathname;
// Build cookie string
let cookieStr =
encodeURIComponent(MEDIA_MONKS_URL_COOKIE_NAME) +
"=" +
encodeURIComponent(urlWithoutQueryParams);
cookieStr += "; path=/";
cookieStr += "; domain=" + COOKIE_DOMAIN;
cookieStr += "; SameSite=Lax";
// Set the cookie
document.cookie = cookieStr;
};
setMediaMonksOnLoadUrlCookie();
})();