Add PostHog analytics integration to track user interactions

This commit is contained in:
Jose Selesan
2026-06-09 10:03:55 -03:00
parent 35b8775531
commit d604a658f9
2 changed files with 55 additions and 0 deletions

4
src/_data/site.js Normal file
View File

@@ -0,0 +1,4 @@
module.exports = {
posthogKey: process.env.POSTHOG_API_KEY || null,
posthogHost: process.env.POSTHOG_API_HOST || 'https://us.i.posthog.com',
}

View File

@@ -12,6 +12,16 @@ description: Soluciones digitales de élite para empresas que necesitan operar,
<title>{{ title }}</title>
<link rel="icon" href="/images/favicon.svg" type="image/svg+xml">
<link rel="stylesheet" href="/css/styles.css">
{% if site.posthogKey %}
<script>
!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+"/static/array.full.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;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="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags getSurveys getActiveMatchingSurveys captureException".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('{{ site.posthogKey }}', {
api_host: '{{ site.posthogHost }}',
capture_performance: true,
disable_session_recording: false,
})
</script>
{% endif %}
</head>
<body>
<header class="sticky top-0 z-50 border-b border-line/70 bg-white/92 backdrop-blur">
@@ -342,5 +352,46 @@ description: Soluciones digitales de élite para empresas que necesitan operar,
<p>(c) 2026 2piDev. Engineered Elegance.</p>
</div>
</footer>
{% if site.posthogKey %}
<script>
(function() {
document.addEventListener('click', function(e) {
var link = e.target.closest('a');
if (!link) return;
if (link.matches('.btn-primary, .btn-secondary, .nav-link')) {
posthog.capture('cta_click', {
label: link.textContent.trim(),
href: link.getAttribute('href')
});
}
});
var form = document.querySelector('form');
if (form) {
form.addEventListener('submit', function() {
var data = new FormData(form);
posthog.capture('contact_form_submitted', {
nombre: data.get('nombre') || '',
empresa: data.get('empresa') || '',
email: data.get('email') || ''
});
});
}
var sections = ['servicios', 'soluciones', 'tecnologias', 'contacto', 'casos'];
var observer = new IntersectionObserver(function(entries) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
posthog.capture('section_view', { section: entry.target.id });
}
});
}, { threshold: 0.3 });
sections.forEach(function(id) {
var el = document.getElementById(id);
if (el) observer.observe(el);
});
})();
</script>
{% endif %}
</body>
</html>