Signals Docs
Concepts

Identity stitching

Connecting anonymous browsing to identified customers.

Visitors start anonymous: the tag mints a random device id (signals_did, stored in localStorage + a cookie) that persists across sessions. When a visitor identifies - login, checkout, newsletter signup - call:

signals.identify("user-123", { email: "[email protected]" });

What happens on identify

  1. The tag switches its distinct_id to your user id (persisted, so later visits stay identified) and sends an $identify event carrying the email/phone.
  2. The backend forwards the identify to PixelFox' identity store, which finds-or-creates an identity for that email (or phone) scoped to your site, records the anonymous device id against it, and returns a stable customer_id.
  3. The mapping is cached at the edge for 24 hours. From then on, every event from that device - including anonymous ones before the next identify - is stamped with external_id: <customer_id> before fan-out.

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 - the same email identified on two devices maps to one identity.
  • Return visits - a returning identified visitor is recognized without re-login (the user distinct id persists in storage).

Scope and privacy

Identity matching is per site - PixelFox never links visitors across different merchants' sites. Emails are normalized (trimmed, lowercased) and phones reduced to digits before matching; both are SHA-256 hashed before ever being sent to a destination. Calling signals.reset() (e.g. on logout of a shared device) clears the device identity and starts a fresh anonymous visitor.

On this page