Documents
Customer Analytics and Event Tracking
Customer Analytics and Event Tracking
Type
Topic
Status
Published
Created
Apr 13, 2026
Updated
Apr 13, 2026
Created by
Dosu Bot
Updated by
Dosu Bot

Customer Analytics and Event Tracking#

The nnmbl codebase tracks waitlist signup conversions across three client-side analytics platforms: Heap Analytics (user identification), Google Ads (conversion tracking), and Meta Pixel (advertising). All initialization is in src/app.html and all conversion events fire from src/lib/JoinWaitlist.svelte.

⚠️ Implementation gap: The Slack threads reference plans for PostHog, Cal.com webhooks, HubSpot, Customer.io, and Apollo integrations (thread 1, thread 2, thread 3). None of these are implemented in the codebase. The current implementation covers only the waitlist signup funnel.


Platform Summary#

PlatformPurposeConfig LocationEvent Location
Heap AnalyticsUser identification & behavioral analyticsapp.html:24–74JoinWaitlist.svelte:45,74
Google Analytics (GA4)Traffic analyticsapp.html:22,68
Google AdsConversion trackingapp.html:20,69JoinWaitlist.svelte:77–79
Meta PixelFacebook advertising & registration eventsapp.html:76–107JoinWaitlist.svelte:81

Initialization (src/app.html)#

All scripts load in the HTML <head> . Analytics are environment-gated: Google Analytics, Google Ads, and Meta Pixel only initialize when window.location.hostname !== 'localhost' . Heap uses separate app IDs per environment .

IDs at a glance:

  • Heap production: 774343349 / development: 879312826
  • Google Analytics: G-VQ4HFHCFQE
  • Google Ads: AW-973253532
  • Meta Pixel: 4893106970766162

Conversion Events (src/lib/JoinWaitlist.svelte)#

The handleSubmit function fires all conversion events on a successful signup POST to /signup:

  1. Heap identify — called with the user's email on mount (if already authenticated) and again on successful registration .
  2. Google Ads conversion — fires gtag('event', 'conversion', { send_to: 'AW-973253532/JgjaCN2tsZADEJzXitAD' }) .
  3. Meta Pixel — fires fbq('track', 'CompleteRegistration') .

Meta Pixel also fires a PageView event automatically on every page load via the initialization block in app.html .


Planned Integrations (Not Yet Implemented)#

The following were discussed in engineering Slack threads and represent the intended future state:

Customer Analytics and Event Tracking | Dosu