8 min read
Key takeaways
- The order system is the source of truth, not the thank-you page.
- Signal loss hits last-click reporting in the ad account first, then analytics, then anything still relying on a pixel.
- A conversion API is a pipe with a match rate, not a strategy.
- Map the first purchase as its own event, in a currency finance recognises.
- Fix the join between your order system and the ad platform before you buy another dashboard.
What actually breaks?
Intelligent Tracking Prevention (ITP) in Safari, consent banners, in-app browsers, checkout retries on a second device, and platforms that learn from the last event they can see. A Google Tag Manager (GTM) trigger on a success URL misses the customer who paid in the app, and double-counts the customer who reloaded the receipt.
The typical loss is not 'a bit of attribution noise'. It is enough to make Meta, Google, TikTok or Snap chase sign-ups while finance asks where the sales went. For the service view, see attribution that survives the browser.
How should a purchase event be mapped?
| Field | Rule | Failure if ignored |
|---|---|---|
| Name | first_purchase vs repeat_purchase, never one generic purchase | Algorithms buy sign-ups |
| Value | The amount finance calls net revenue or gross order value; pick one | Return on ad spend (ROAS) becomes fiction |
| Currency | Order currency, not the ad-account default | Market mix looks profitable because of exchange rates |
| Time | Payment timestamp, not page view | Delayed payments are credited to the wrong day |
| ID | Stable customer key, hashed for the platform | Match rate collapses |
If 'purchase' means sign-up in the Meta account and first payment in GA4, you do not have a tracking stack. You have an argument.
What is a conversion API worth in euros?
Suppose the order system records 1,200 first purchases. The browser pixel reports 740. The conversion API, with a decent join key, reports 1,050. Match rate is 1,050 / 1,200 = 87.5%. The 150 missing purchases are the remaining work: in-app purchases, refused consent and bad IDs.
Compare that with the pixel alone, which sees 740 of 1,200, or about 62%. Spending another €20,000 while the platform only sees that 62% trains it on a biased sample of your customers. That spend is not acquisition; it is money spent finding the wrong audience. We will not scale paid acquisition on that pipe.
What should you fix first?
- One written first-purchase definition, shared with media and customer relationship management (CRM).
- Events sent from the order system, not from the thank-you page.
- A conversion API or equivalent pipe, with a match-rate dashboard.
- Removal of duplicate browser events that still fire 'as a backup'.
- Only then, models and multi-touch attribution.
An identity graph that ships in two quarters is not a first fix. A join that works for 70% of purchases this month is.
Read next: How to set a target CPA that still works in month three. Or see our attribution and analytics service.