The chain
What the tracking script captures
Click IDs
Two platforms use a different name on the landing URL. The script normalizes both.
On the web, pass
oppref, the OpenAI Ads click ID, as an event property. The iOS and React Native SDKs read it from the landing URL for you.Campaign parameters
The script capturesutm_source, utm_medium, utm_campaign, utm_term, and utm_content.
It also captures lyr, ref, source, campaign, medium, and gad_source.
Ad cookies
The script reads and writes_fbp, _fbc, _gcl_aw, _gcl_dc, _gcl_gb, _gcl_ha, _gac, _ttp, _ttc, and _scid.
These are marketing-scoped. After a marketing denial, the script neither writes nor sends them. It keeps utm_* and the Google Analytics cookies, which are analytics-scoped.
The browser attribution window is 90 days.
How a conversion finds its click
Datalyr searches in this order and stops at the first hit.
Step 5 is what carries a web click through to a server-side purchase. It works only after your code calls
identify() on both the browser and the server with the same ID. That one call is usually the difference between a purchase that credits a campaign and one that reads direct.
The default model is first click. A rule can select last click instead. A same-session match always wins over both.
Verify one journey
- Open your site in a private window, with
?utm_source=doctest&utm_campaign=doctestappended. - Open Live. Confirm the visit appears within 30 seconds.
- Complete a sign-up so your code calls
identify(). - Open Users. Find the user. Confirm the touchpoint reads
doctest. - Complete a purchase.
- Open Conversions. Confirm the row’s
attribution_typeis notnone.
When it does not work
Before you compare totals
Align all six of these. Any one of them alone explains a large gap.Next
- Conversion delivery: how the resolved click ID reaches the ad platform.
- Conversions: read
attribution_typeon one delivery row. - Integrations: connect the platform whose clicks you want to match.