Identity and devices
How a browser becomes a device, a device becomes a person, and a person is recognised across devices and across PixelFox sites.
Visitors start anonymous. The tag keeps two ids in localStorage and a cookie:
pixelfox_did, the anonymous distinct id. Replaced by your user id onidentify(), rotated byreset().pixelfox_device_id, the device id, sent as$device_idon every event. It survivesidentify()andreset()(logging out on a laptop does not make it a different laptop) and is removed only byoptOut().
When a visitor identifies - login, checkout, newsletter signup - call:
pixelfox.identify("user-123", { email: "[email protected]" });Identity stitching is part of the Pro plan and above. On Free, events still carry whatever email or phone they arrive with, and those still become match keys for the ad platforms, but devices are not linked into one person and events collected while on Free are not stitched retroactively after an upgrade.
What happens on identify
- The tag switches its
distinct_idto your user id and sends an$identifyevent carrying the email/phone, the anonymous id it used before ($anon_distinct_id) and the device id. - The backend finds or creates an identity for that email or phone on your site, adds all three ids to it, and backfills the events those ids already sent, so the anonymous history counts toward the person.
- The device is attached to the person, and the person is added to the platform-wide person graph (hashed email and phone only).
- From then on every event from any of the person's ids is stamped with
external_id: <identity id>before fan-out, and the dashboard shows one person with their devices.
A person has many devices: the same email identified on a phone and on a laptop is one person with two devices, and both devices' history belongs to them. If an email lands on one identity row and the phone on another, the two are merged the moment an identify carries both.
A device whose storage was cleared
Clearing cookies gives the tag a fresh device id. The backend computes a fingerprint on its side from what the tag sends anyway - user agent, screen size, language and timezone - hashed with a platform secret. A new device whose fingerprint matches a device seen with a person in the last 30 days is attached to that person. The fingerprint never leaves the backend and never creates a person by itself; it only re-attaches one.
Across PixelFox sites
A person identified on one PixelFox site is a known person on every other one. When a device arrives on your site that another site already knows - by device id or by fingerprint - your site gets an identity for that person, marked known from the network, with the email and phone copied in, and the person's match keys ride on your conversions from the first event.
This is sharing between merchants: your site receives contact details the visitor gave
to another site. Your cookie notice and privacy policy must disclose that PixelFox
recognises visitors across the sites that use it, and the visitor's consent must cover
it (events sent under a denied $consent are never linked and record no device).
Why it matters
- Match quality - ad platforms match server events to real users via hashed email/phone and a stable external id. Stitching raises your match quality score and therefore your attributed conversions.
- Cross-device - a phone-then-desktop purchase is one journey, not an abandoned cart plus a mystery order.
- Return visits - a returning person is recognised without re-login, and a known person is recognised on their first visit to a new site.
- Segments - the person's segments (new, repeat buyer, cart abandoner…) are computed per person, not per browser. See segments.
Privacy
Emails are normalised (trimmed, lowercased) and phones reduced to E.164 digits before
matching; both are SHA-256 hashed before ever being sent to a destination, and only
hashes exist in the person graph. Server-minted ids (the cookieless fallback id and
fingerprints) are never sent to an ad platform as an external id. Calling
pixelfox.reset() (e.g. on logout of a shared device) starts a fresh anonymous visitor;
the device stays the same device.