* 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: //

No spam, ever. Unsubscribe anytime.