pixellint

10 guides · Analytics and CDP

Product analytics is not an ads pixel

A CDP is a pipe. A pixel is a bid. Measurement Protocol, capture, and track still have clocks, ids, and required fields. These pages are the payload the vendor will actually ingest.

Validate a pixel or CAPI All docs

timestamp_micros is 16 digits AnalyticsengineersPMs GA4 MP needs api_secret and exactly one of measurement_id (G- form) or firebase_app_id. timestamp_micros is 16 digits. Purchase needs currency, value, transaction_id, and items. HTTP 204 is not a schema review. PostHog returns 200 and drops the event AnalyticsengineersPMs PostHog documents that a capture missing event or distinct_id still returns 200 and is not ingested. Send ISO 8601 for event time. Do not treat status code as a contract test. track without an event name still 200s AnalyticsengineersPMs Segment's HTTP Tracking API track call needs an event name. The HTTP 200 does not check it. anonymousId or userId still have to exist if you want a person, not a floating event. Amplitude wants milliseconds, not seconds Analyticsengineers Amplitude HTTP V2 wants event time in milliseconds. Seconds (10 digits) look like 1970-something. ISO strings belong to other vendors. Date.now() is already milliseconds, for once. Mixpanel join key is distinct_id AnalyticsengineersPMs Mixpanel joins on distinct_id. Engage/identify must reuse it. Time is epoch seconds in some Mixpanel APIs and not others; read the endpoint you POST to, not a blog from 2016. Adobe Analytics sendBeacon still needs a report suite Analyticsengineersmarketers Adobe Analytics sendBeacon (and the image beacon fallback) still needs the report suite on /b/ss/. s.t() and s.tl() are different. SPA apps that never call s.t() on route change go dark after the first page. This is not a GA4 event. A CDP is a pipe. A pixel is a bid. AnalyticsPMsengineersmarketers A CDP (Segment and friends) routes events. An ads pixel or CAPI is a bid and attribution pipe. Product analytics is product. One track() call is not automatically all three jobs done well. Sampling hides the broken 1% AnalyticsengineersPMsmarketers GA4 UI sampling and Mixpanel bookkeeping hide rare broken payloads. QA on 20 events will never see the 1% of Purchases missing currency. Sample raw exports or contract-test fixtures. DebugView is not production Analyticsengineersmarketers DebugView, Meta Test Events, and GTM preview are QA surfaces. They are not production. Leaving debug_mode on or test_event_code on trains the wrong graph, or no graph. Product analytics and ads conversion are different jobs AnalyticsPMsengineersmarketers Product analytics wants funnels and retention. Ads pixels want matchable conversions for bidding. Sharing one Purchase event is fine. Sharing one schema without a map is how both teams think the other is wrong.