(function () {
const origin = location.origin;
const pretty = origin + '/wp-json/new-google/v1/event';
const fallback = origin + '/index.php?rest_route=/new-google/v1/event';
async function postJSON(url, payload) {
try {
const res = await fetch(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
keepalive: true,
body: JSON.stringify(payload)
});
if (!res.ok) throw new Error('status ' + res.status);
return true;
} catch (e) {
return false;
}
}
const qs = new URLSearchParams(location.search);
const currentUtm = {
source: qs.get('utm_source') || '',
medium: qs.get('utm_medium') || '',
campaign: qs.get('utm_campaign') || '',
term: qs.get('utm_term') || '',
content: qs.get('utm_content') || ''
};
const storedUtm = (() => {
try { return JSON.parse(localStorage.sbnga_utm || '{}'); }
catch (_) { return {}; }
})();
const utm = {
source: currentUtm.source || storedUtm.source || '',
medium: currentUtm.medium || storedUtm.medium || '',
campaign: currentUtm.campaign || storedUtm.campaign || '',
term: currentUtm.term || storedUtm.term || '',
content: currentUtm.content || storedUtm.content || ''
};
if (Object.values(currentUtm).some(Boolean)) {
localStorage.sbnga_utm = JSON.stringify(utm);
}
if (!localStorage.sbnga_landing) {
localStorage.sbnga_landing = location.href;
}
if (!localStorage.sbnga_first_referrer) {
localStorage.sbnga_first_referrer = document.referrer || '';
}
if (qs.get('gclid')) localStorage.sbnga_gclid = qs.get('gclid');
if (qs.get('fbclid')) localStorage.sbnga_fbclid = qs.get('fbclid');
const sid = (localStorage.sbnga_sid ||= (Math.random().toString(36).slice(2) + Date.now().toString(36)));
const device = /Mobi|Android/i.test(navigator.userAgent) ? 'mobile' : 'desktop';
const gclid = localStorage.sbnga_gclid || '';
const fbclid = localStorage.sbnga_fbclid || '';
function detectTrafficSource() {
const ua = navigator.userAgent || '';
const ref = (document.referrer || localStorage.sbnga_first_referrer || '').toLowerCase();
if (/bot|crawl|crawler|spider|slurp|adsbot|googlebot|bingbot|ahrefsbot|semrushbot/i.test(ua)) {
return 'bot';
}
if (gclid) return 'google_ads';
if ((utm.source || '').toLowerCase() === 'google' && ['cpc', 'ppc', 'paid', 'paid_search'].includes((utm.medium || '').toLowerCase())) {
return 'google_ads';
}
if (ref.includes('google.')) return 'google_organic';
if (!ref) return 'direct';
return 'referral';
}
const trafficSource = detectTrafficSource();
async function send(type, extra) {
const payload = {
sid,
type,
url: location.href,
ref: document.referrer || localStorage.sbnga_first_referrer || '',
utm,
gclid,
fbclid,
device,
extra: Object.assign({
traffic_source: trafficSource,
page_title: document.title,
landing: localStorage.sbnga_landing,
first_referrer: localStorage.sbnga_first_referrer || ''
}, (extra || {}))
};
await postJSON(pretty, payload) || await postJSON(fallback, payload);
}
send('page_view');
document.addEventListener('click', function (e) {
const a = e.target.closest('a[href^="tel:"]');
if (a) {
send('click_phone', {
number: a.getAttribute('href') || '',
text: (a.innerText || '').trim().slice(0, 120)
});
}
});
document.addEventListener('click', function (e) {
const s = e.target.closest('a[href^="sms:"], a[href^="smsto:"]');
if (s) {
send('click_sms', {
number: s.getAttribute('href') || '',
text: (s.innerText || '').trim().slice(0, 120)
});
}
});
document.addEventListener('click', function (e) {
const el = e.target.closest('[data-sbnga-track]');
if (el) {
send(el.getAttribute('data-sbnga-track') || 'click_custom', {
id: el.id || '',
text: (el.innerText || '').trim().slice(0, 120)
});
}
});
document.addEventListener('wpformsAjaxSubmitSuccess', function (ev) {
try {
send('wpforms_submit', {
formId: ev.detail?.formId || 'unknown'
});
} catch (_) {}
});
document.addEventListener('submit', function (e) {
const f = e.target;
if (f && (f.closest('.wpforms-form') || /wpforms/i.test(f.action || ''))) {
send('wpforms_submit_attempt', {
id: f.id || ''
});
}
}, true);
})();
wayne-bat-removal | Silver Bullet Pest Control
Skip to content