Skip to main content
Attribution links a conversion back to the click that produced it. This page names every value we capture, and every stage where you can lose one.

The chain

Every stage writes to first-party storage on your own domain. Nothing here is reconstructed later, so protect the capture stage first: a click ID the landing page never saw can’t be recovered.

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 captures utm_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

  1. Open your site in a private window, with ?utm_source=doctest&utm_campaign=doctest appended.
  2. Open Live. Confirm the visit appears within 30 seconds.
  3. Complete a sign-up so your code calls identify().
  4. Open Users. Find the user. Confirm the touchpoint reads doctest.
  5. Complete a purchase.
  6. Open Conversions. Confirm the row’s attribution_type is not none.

When it does not work

Before you compare totals

Align all six of these. Any one of them alone explains a large gap.

Next