utm
This commit is contained in:
+108
-12
@@ -2525,6 +2525,87 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
var params = new URLSearchParams(window.location.search);
|
||||
var tracking = {
|
||||
utm_source: params.get("utm_source") || "homepage",
|
||||
utm_medium: params.get("utm_medium") || "direct",
|
||||
utm_campaign: params.get("utm_campaign") || "none",
|
||||
utm_term: params.get("utm_term") || "",
|
||||
utm_content: params.get("utm_content") || "",
|
||||
};
|
||||
|
||||
function isTrackableHref(href) {
|
||||
return (
|
||||
href &&
|
||||
href.charAt(0) !== "#" &&
|
||||
href.indexOf("mailto:") !== 0 &&
|
||||
href.indexOf("tel:") !== 0 &&
|
||||
href.indexOf("javascript:") !== 0
|
||||
);
|
||||
}
|
||||
|
||||
function applyToLink(link) {
|
||||
var href = link.getAttribute("href");
|
||||
var url;
|
||||
if (!isTrackableHref(href)) return;
|
||||
try {
|
||||
url = new URL(href, window.location.href);
|
||||
} catch (err) {
|
||||
return;
|
||||
}
|
||||
Object.keys(tracking).forEach(function (key) {
|
||||
if (tracking[key]) url.searchParams.set(key, tracking[key]);
|
||||
});
|
||||
if (url.origin === window.location.origin) {
|
||||
link.setAttribute("href", url.pathname + url.search + url.hash);
|
||||
return;
|
||||
}
|
||||
link.setAttribute("href", url.toString());
|
||||
}
|
||||
|
||||
function applyToLinks(root) {
|
||||
var scope = root && root.querySelectorAll ? root : document;
|
||||
scope.querySelectorAll("a[href]").forEach(applyToLink);
|
||||
}
|
||||
|
||||
function applyToFields(root) {
|
||||
if (!root || !root.querySelectorAll) return;
|
||||
Object.keys(tracking).forEach(function (key) {
|
||||
root.querySelectorAll('input[name="' + key + '"]').forEach(function (input) {
|
||||
input.value = tracking[key];
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function appendToFormData(formData) {
|
||||
Object.keys(tracking).forEach(function (key) {
|
||||
formData.set(key, tracking[key]);
|
||||
});
|
||||
return formData;
|
||||
}
|
||||
|
||||
function extendPayload(payload) {
|
||||
Object.keys(tracking).forEach(function (key) {
|
||||
payload[key] = tracking[key];
|
||||
});
|
||||
return payload;
|
||||
}
|
||||
|
||||
applyToFields(document);
|
||||
applyToLinks(document);
|
||||
|
||||
window._mbsTracking = {
|
||||
params: tracking,
|
||||
applyToLinks: applyToLinks,
|
||||
applyToFields: applyToFields,
|
||||
appendToFormData: appendToFormData,
|
||||
extendPayload: extendPayload,
|
||||
};
|
||||
})();
|
||||
</script>
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
var WEBHOOK =
|
||||
@@ -2536,11 +2617,13 @@
|
||||
form.addEventListener("submit", function (e) {
|
||||
e.preventDefault();
|
||||
var button = form.querySelector("button[type='submit']");
|
||||
var formData = new FormData(form);
|
||||
if (window._mbsTracking) formData = window._mbsTracking.appendToFormData(formData);
|
||||
status.textContent = "Sending...";
|
||||
button.disabled = true;
|
||||
fetch(WEBHOOK, {
|
||||
method: "POST",
|
||||
body: new FormData(form),
|
||||
body: formData,
|
||||
})
|
||||
.then(function () {
|
||||
status.textContent = "Message received. We will get back to you soon.";
|
||||
@@ -2620,6 +2703,7 @@
|
||||
} else {
|
||||
grid.innerHTML = pagePosts.map(postMarkup).join("");
|
||||
}
|
||||
if (window._mbsTracking) window._mbsTracking.applyToLinks(grid);
|
||||
prevBtn.disabled = currentPage === 0;
|
||||
nextBtn.disabled = start + PAGE_SIZE >= filteredPosts.length;
|
||||
updateCount();
|
||||
@@ -2767,6 +2851,7 @@
|
||||
};
|
||||
|
||||
function send(text) {
|
||||
var payload;
|
||||
text = (text || "").trim();
|
||||
if (!text || busy) return;
|
||||
busy = true;
|
||||
@@ -2778,14 +2863,17 @@
|
||||
var thinkEl = appendMsg("agent", "...");
|
||||
thinkEl.classList.add("chat-thinking");
|
||||
|
||||
payload = {
|
||||
action: "sendMessage",
|
||||
chatid: CHAT_ID,
|
||||
chatInput: text,
|
||||
};
|
||||
if (window._mbsTracking) payload = window._mbsTracking.extendPayload(payload);
|
||||
|
||||
fetch(CHAT_URL, {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({
|
||||
action: "sendMessage",
|
||||
chatid: CHAT_ID,
|
||||
chatInput: text,
|
||||
}),
|
||||
body: JSON.stringify(payload),
|
||||
})
|
||||
.then(function (r) {
|
||||
var ct = r.headers.get("content-type") || "";
|
||||
@@ -3012,6 +3100,7 @@
|
||||
}
|
||||
|
||||
function fire(geo) {
|
||||
var payload;
|
||||
if (fired) return;
|
||||
fired = true;
|
||||
var chatId =
|
||||
@@ -3023,14 +3112,17 @@
|
||||
return (c === "x" ? r2 : (r2 & 0x3) | 0x8).toString(16);
|
||||
},
|
||||
);
|
||||
payload = {
|
||||
action: "sendMessage",
|
||||
chatid: chatId,
|
||||
chatInput: buildMsg(geo),
|
||||
};
|
||||
if (window._mbsTracking) payload = window._mbsTracking.extendPayload(payload);
|
||||
|
||||
fetch(CHAT_URL, {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({
|
||||
action: "sendMessage",
|
||||
chatid: chatId,
|
||||
chatInput: buildMsg(geo),
|
||||
}),
|
||||
body: JSON.stringify(payload),
|
||||
})
|
||||
.then(function (res) {
|
||||
var ct = res.headers.get("content-type") || "";
|
||||
@@ -3086,6 +3178,7 @@
|
||||
function openModal(plan) {
|
||||
planField.value = plan || "General Free Trial";
|
||||
productField.value = plan || defaultProduct;
|
||||
if (window._mbsTracking) window._mbsTracking.applyToFields(form);
|
||||
overlay.style.display = "flex";
|
||||
document.body.style.overflow = "hidden";
|
||||
}
|
||||
@@ -3099,6 +3192,7 @@
|
||||
form.reset();
|
||||
planField.value = "General Free Trial";
|
||||
productField.value = defaultProduct;
|
||||
if (window._mbsTracking) window._mbsTracking.applyToFields(form);
|
||||
var btn = form.querySelector(".modal-submit");
|
||||
btn.textContent = "Start Free Trial";
|
||||
btn.disabled = false;
|
||||
@@ -3129,10 +3223,12 @@
|
||||
form.addEventListener("submit", function (e) {
|
||||
e.preventDefault();
|
||||
var btn = form.querySelector(".modal-submit");
|
||||
var formData = new FormData(form);
|
||||
if (window._mbsTracking) formData = window._mbsTracking.appendToFormData(formData);
|
||||
btn.textContent = "Sending...";
|
||||
btn.disabled = true;
|
||||
|
||||
fetch(WEBHOOK, { method: "POST", body: new FormData(form) })
|
||||
fetch(WEBHOOK, { method: "POST", body: formData })
|
||||
.then(function () {
|
||||
form.style.display = "none";
|
||||
confirmDiv.style.display = "block";
|
||||
|
||||
Reference in New Issue
Block a user