09 Dec 2025 · Instrumentation
When the web pixel and the in-app SDK disagree
Most ‘fraud’ alerts on hybrid retail paths are two identity keys wearing the same order ID. The pixel is not lying. The SDK is not lying. They were never introduced.
Browse on mobile web. Deep-link into the app to pay. Sometimes bounce back to a thank-you page that still fires the pixel. You now have a web purchase and an in-app purchase, often with different timestamps and almost always with different user keys.
Performance media loves the inflated number. Finance does not, once refunds and warehouse truth arrive. Cross-platform analytics alignment treats this as an identity island problem, not a vendor outage.
A parameter before a philosophy
Add checkout_surface: web, ios, android, mini_app. Deduplicate on order ID first, surface second. If you deduplicate only on email hash, guest checkout will vanish and you will under-count the very users marketing paid for.
In the flagship’s hybrid-path week, we watch teams argue about which surface is ‘canonical’. There is no universal answer. A fashion retailer in our case notes chose in-app as canonical because payment authorised there. A travel app chose web because ticketing inventory lived there. The treaty records the choice. The dashboard follows the treaty. Not the other way around.
Pixels that outlive the page
Thank-you pages cached by a CDN, or opened twice when a user checks the order, will re-fire. SDKs retry on flaky hotel Wi-Fi during Songkran travel. Both look like duplicates. Your reconciliation sheet should have a column for ‘retry versus true double surface’. If you do not have that column, every spike becomes a war between growth and data.
What not to do
Do not silence the pixel to make the SDK look clean. You will lose web-only buyers. Do not silence the SDK to please the pixel. You will lose in-app upsell. Introduce them. Version the introduction. Put the rule on the board contract so nobody ‘fixes’ it in Firebase without a bump.
Continue with Retiring vanity funnels without losing the board.