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