GrowReach Tracking Pixels — Research & Implementation Guide
Date: August 17, 2026
Author: CRO Agent (GrowReach)
Scope: Tracking pixels for all major social/ad platforms, implementation guide for developers, ongoing management, data accuracy
Primary analytics: PostHog (EU Cloud, full suite) + Google Tag Manager (GTM-MQDVLQ6P) + GA4 (G-2DSCDB28FB) + Google Search Console
A tracking pixel is a tiny piece of JavaScript (historically a 1×1 transparent image) that a platform (Meta, TikTok, Reddit, etc.) gives you to drop on your website. When a visitor loads a page or performs an action, the pixel fires and tells the platform: “Someone visited this page / clicked this button / signed up.”
What each pixel actually does
Capability
What it enables
PageView / Visit tracking
Platform knows someone landed on your site
Click tracking
Platform knows which ad click brought them (via click IDs like fbclid, ttclid, gclid, sccid)
Conversion tracking
Platform knows when a visitor signed up / paid — feeds its optimization algorithms
Audience building
Platform builds a list of “people who visited your site” → lookalike/similar audiences
Retargeting
You can show ads to people who visited but didn’t convert
Scroll depth / engagement
Some pixels (or your analytics tool) can track how far people scroll, time on page, etc.
Client-side vs server-side (critical distinction in 2026)
Client-side pixel (browser)
Server-side / Conversions API
How it works
JS snippet in <head> fires from the visitor’s browser
Your backend sends events directly to the platform’s API
The 2026 reality: client-side pixels alone lose 30–40% of conversion data. Every serious advertiser runs both — client-side for standard events, server-side (Conversions API) for conversions with hashed PII. This is exactly what PostHog’s CDP destinations give you.
Why GrowReach specifically needs this
Reddit is already your #2 traffic source (13.5%) — but you can’t retarget or build lookalikes from it because no Reddit pixel exists
You’re in price discovery (19/49/$69) — you need conversion data flowing to ad platforms before you scale spend
Your goal is ~100% visitor → signup/email — pixels let you build audiences of “visited but didn’t sign up” for retargeting
PostHog already captures everything (visits, clicks, scroll, exceptions) — you don’t need pixels for analytics; you need them for ad platform optimization and audience building
2. Brainstorm: Requirements & Best Practices
The user asked to brainstorm requirements and best practices before drafting the guide. This section is that brainstorm — the decisions that shape everything below.
2.1 What do we actually need to track?
Data
Where it lives today
Where it should flow
Visits, pageviews, scroll depth, clicks, sessions
PostHog ✅
PostHog (already done)
Conversions (signup, trial, paid)
PostHog (partial — no custom user_signed_up event)
PostHog + every ad platform
Ad click attribution (which ad drove the visit)
PostHog (UTM missing on 99% of traffic ⚠️)
PostHog + ad platforms
Lookalike audience seeds
Nowhere ❌
Ad platforms (via pixels/CAPI)
Retargeting lists
Nowhere ❌
Ad platforms
Key decision: We are NOT installing pixels to replace PostHog. PostHog stays the single source of truth for analytics. Pixels exist to (a) feed ad-platform optimization, (b) build audiences, (c) enable lookalikes.
2.2 Requirements brainstorm
Single source of truth — PostHog remains the analytics backbone; pixels are outputs, not a second analytics system
Minimal page bloat — 10 raw pixels in <head> = slow site + more breakage. Use PostHog CDP destinations (server-side) + GTM (client-side) instead
Server-side first for conversions — signup/paid events go via Conversions API (Meta CAPI, TikTok Events API, Reddit CAPI, LinkedIn CAPI, Snapchat CAPI) with hashed PII for match quality
Client-side only where required — some platforms (X/Twitter, Pinterest, Bing, Quora) have no PostHog destination; those get lightweight GTM tags
Consent-aware — EU traffic is 37.6% of your visitors (India 37.6%, US 16.8%). GDPR/Consent Mode V2 compliance is non-negotiable
Event taxonomy must be fixed first — PostHog has no custom user_signed_up event; ad platforms need clean, consistent event names
UTM tracking must be fixed — 99% of traffic has no UTM. Ad platforms can’t attribute without click IDs; you can’t measure campaigns without UTMs
Deduplication — when both client-side pixel AND server-side CAPI fire, platforms double-count unless event_id matches. PostHog destinations handle this via {event.uuid}
Test before launch — every destination has a test mode; use it before sending real traffic
Documentation — event names, pixel IDs, access tokens, and owners must be documented (this guide + a tracking plan doc)
2.3 Best practices brainstorm
Practice
Why
Use the same Pixel ID for browser and server events
Meta/TikTok dedupe on this; mismatched IDs = double counting
Hash PII (SHA-256, lowercase, trimmed) before sending server-side
Platforms require it; never send raw PII
Send event_id in both client and server events
Dedup rate ≥90% target
Filter events in PostHog destinations — only send conversions, not every autocapture click
Ad platforms charge/limit event volume; noise hurts optimization
Identify before converting
PostHog destinations use person properties at event time — if identify() fires after the conversion event, email/phone won’t be attached (documented PostHog FAQ)
Consent Mode V2 (Advanced)
EEA enforcement since Jul 21, 2025; Basic mode loses ~25% of EEA conversion signal
Monitor EMQ (Meta Event Match Quality) ≥ 8.0
Below 6.0 = lookalikes and optimization degrade badly
Test events with platform test codes before going live
Avoid polluting real data
One owner per platform
Pixels rot when nobody owns them
2.4 The “which platforms” decision
GrowReach is a B2B-ish SaaS (AI engagement automation for LinkedIn/Reddit). Priority ranking:
Priority
Platform
Why
🔴 P0
Meta (Facebook/Instagram)
Largest audience pool, best lookalike engine, CAPI mature
🔴 P0
Reddit
Already your #2 traffic source — retarget + lookalike from real visitors
One integration point (PostHog) instead of 10 raw pixels
Server-side events survive ad blockers, iOS ATT, ITP (recover the 30–40% loss)
Hashed PII (email, phone, name) attached automatically from PostHog person properties → high match quality → better lookalikes
GTM handles the stragglers (X, Pinterest, Bing) that PostHog doesn’t support
GA4/GTM already installed — Google Ads path is nearly free
5. Implementation Guide for Developers
Phase 0 — Pre-flight (do this first, ~1 day)
0.1 Fix the event taxonomy in PostHog
Ad platforms need clean conversion events. Define and implement:
Event
When it fires
Properties to include
user_signed_up
Signup form submitted successfully
email, first_name, last_name, plan (if chosen), $current_url
free_plan_purchased
Free plan activated
email, plan
paid_plan_purchased
Paid plan charged
email, plan, value, currency
linkedin_account_connected
LinkedIn OAuth success
email
commenting_voice_configured
Voice/persona configured
email
Critical: call posthog.identify() with email + name BEFORE firing conversion events. PostHog destinations read person properties at event-processing time — if identify comes after, the ad platform gets no PII and match quality collapses (this is the #1 documented PostHog destination pitfall).
Add UTM parameters to every outbound campaign link (PostHog captures $initial_utm_source etc. automatically)
PostHog automatically captures fbclid, ttclid, gclid, sccid as person properties ($initial_fbclid, etc.) — verify these are present in your PostHog person properties. The Meta/TikTok/Snapchat destinations read them directly.
0.3 Consent Mode V2
If you serve EU visitors (you do — 37.6% India, but EU exists), implement a consent banner that sets posthog.opt_out_capturing() / GTM consent signals
PostHog destinations should be gated on consent for PII-bearing events
Use Advanced Consent Mode in GA4/GTM (Basic loses ~25% of EEA conversion signal)
0.4 Gather platform credentials
Platform
Credentials needed
Where to get them
Meta
Pixel ID + Access Token
business.facebook.com → Events Manager → Settings → Conversions API
Search for the destination (e.g., “Meta Ads Conversions”) → + Create
Paste credentials (Pixel ID, Access Token, etc.)
Set event/property filters — ONLY send conversion events (user_signed_up, paid_plan_purchased, etc.). Do NOT send all autocapture events — noise hurts ad-platform optimization and burns event volume
Create & enable → use the built-in test interface → verify events arrive in the platform’s Events Manager
Monitor the metrics/logs tabs
5.1 Meta Ads Conversions
Create destination in PostHog (search “Meta Ads Conversions”)
Get Pixel ID + Access Token from Meta Events Manager (Settings → Conversions API → Generate access token)