feat(analytics): add GA4 (G-X5XPC4SW2L), Meta Pixel, Hanzo Analytics, and Hanzo Insights

Co-authored-by: Hanzo Dev <[email protected]>
This commit is contained in:
zooqueen
2026-09-30 00:40:58 -07:00
co-authored by Hanzo Dev
parent 0c81a3109a
commit af13df958a
+38
View File
@@ -11,6 +11,44 @@
name="description"
content="Say what you want. Hanzo writes it, runs it, and puts it on a live URL."
/>
<!-- Google Analytics 4 (G-X5XPC4SW2L) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X5XPC4SW2L"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-X5XPC4SW2L', {
linker: {
domains: ['hanzo.ai', 'hanzo.build', 'docs.hanzo.ai', 'hanzo.id', 'platform.hanzo.ai', 'pay.hanzo.ai', 'hanzo.app']
}
});
</script>
<!-- Meta Pixel (1790308611893001) -->
<script>
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window, document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '1790308611893001');
fbq('track', 'PageView');
</script>
<!-- Hanzo Analytics — first-party privacy-preserving web analytics -->
<script defer src="https://analytics.hanzo.ai/script.js" data-website-id="a323a8ae-c811-4061-9626-22caaffc612f"></script>
<!-- Hanzo Insights — behavioral analytics -->
<script>
!function(t,e){var o,n,p,r;e.__SV||(window.hi=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.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="hi",u.people=u.people||[],u.toString=function(t){var e="hi";return"hi"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="init capture captureException 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 getFeatureFlag getFeatureFlagPayload reloadFeatureFlags group updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on getActiveMatchingSurveys getSurveys getNextSurveyStep onSessionId setPersonProperties".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.hi||[]);
hi.init('hi_e16a2d5a8033442d87f090b24c606825',{api_host:'https://insights.hanzo.ai',person_profiles:'identified_only'});
hi.register({app:'build',org:'hanzo'});
</script>
<style>
/* The two things only the host document can answer: how tall the app is,
and that its one child is a flex item. @hanzo/ui's stylesheet resets and