* Or inline via inject script (preferred for CF Pages static sites).
*
* Config placeholders replaced by scripts/build-snippet.py:
* phc_yPjESTZrpWguzEWMhE26k3pSye7us47br6gU9QfMf9pH https://us.i.posthog.com https://us.posthog.com 2026-05-30
*/
(function () {
'use strict';
var API_KEY = 'phc_yPjESTZrpWguzEWMhE26k3pSye7us47br6gU9QfMf9pH';
var API_HOST = 'https://us.i.posthog.com';
var UI_HOST = 'https://us.posthog.com';
var DEFAULTS = '2026-05-30';
if (!API_KEY || API_KEY.indexOf('REPLACE') !== -1 || API_KEY.indexOf('__POSTHOG') !== -1) {
if (typeof console !== 'undefined') {
console.warn('[PostHogBuddy] Missing POSTHOG_API_KEY — analytics disabled.');
}
return;
}
// Skip local/dev hosts
var host = (typeof location !== 'undefined' && location.hostname) || '';
if (
host === 'localhost' ||
host === '127.0.0.1' ||
host.indexOf('.local') !== -1 ||
host.indexOf('pages.dev') !== -1
) {
return;
}
// Resolve site label: data-site on this script, or hostname
var current = document.currentScript;
var site =
(current && current.getAttribute('data-site')) ||
(window.__POSTHOG_SITE__) ||
host.split('.')[0] ||
'unknown';
var domain =
(current && current.getAttribute('data-domain')) ||
(window.__POSTHOG_DOMAIN__) ||
host ||
'unknown';
// Official PostHog snippet bootstrap
!(function (t, e) {
var o, n, p, r;
e.__SV ||
((window.posthog = e),
(e._i = []),
(e.init = function (i, s, a) {
function g(t, e) {
var o = e.split('.');
2 == o.length && ((t = t[o[0]]), (e = o[1]));
t[e] = function () {
t.push([e].concat(Array.prototype.slice.call(arguments, 0)));
};
}
((p = t.createElement('script')).type = 'text/javascript'),
(p.crossOrigin = 'anonymous'),
(p.async = !0),
(p.src =
s.api_host.replace('.i.posthog.com', '-assets.i.posthog.com') +
'/static/array.js'),
(r = t.getElementsByTagName('script')[0]).parentNode.insertBefore(p, r);
var u = e;
for (
void 0 !== a ? (u = e[a] = []) : (a = 'posthog'),
u.people = u.people || [],
u.toString = function (t) {
var e = 'posthog';
return (
'posthog' !== a && (e += '.' + a), t || (e += ' (stub)'), e
);
},
u.people.toString = function () {
return u.toString(1) + '.people (stub)';
},
(o =
'init capture register register_once register_for_session unregister unregister_for_session getFeatureFlag getFeatureFlagResult isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey getNextSurveyStep identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty createPersonProfile opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing debug'.split(
' ',
)),
(n = 0);
n < o.length;
n++
)
g(u, o[n]);
e._i.push([i, s, a]);
}),
(e.__SV = 1));
})(document, window.posthog || []);
posthog.init(API_KEY, {
api_host: API_HOST,
ui_host: UI_HOST,
defaults: DEFAULTS,
person_profiles: 'identified_only',
capture_pageview: true,
capture_pageleave: true,
persistence: 'localStorage+cookie',
// Cross-domain cookies only help for subdomains of the same eTLD+1.
// Portfolio uses many different domains → keep false; use identify() after login.
cross_subdomain_cookie: false,
});
// Super properties on every event — filter portfolio by site/domain in PostHog
posthog.register({
site: site,
domain: domain,
portfolio: 'deondon',
});
// Optional custom event helpers used by product landings
window.phCapture = function (event, props) {
try {
posthog.capture(event, props || {});
} catch (e) {}
};
// Autocapture-friendly data attributes convention:
//