Skip to main content

Profiles & identity

A profile is JourneyLayer's complete picture of a single user. Every user — whether anonymous or known — has exactly one profile, made up of:

  • Identity — the anonymous id, plus any stable identity (such as email or phone) once the user is identified.
  • Traits — user properties like email, name, phone, and city. See Properties.
  • Activity timeline — the full, ordered history of events that user has performed.

Finding and viewing profiles​

In the dashboard, profiles live under Profiles / Find People. Search or browse to locate a user, then open their profile to see:

  • Properties — the traits currently on the profile.
  • Activity timeline — every event for that user in chronological order, so you can follow exactly what they did and when.

This makes a profile the single place to answer "who is this person, and what have they done?"

Anonymous vs identified​

A user does not have to log in to have a profile.

  • Anonymous. As soon as the SDK loads, JourneyLayer assigns an anonymous id and starts a profile. Page views, sessions, and any track() calls are recorded against that anonymous profile.
  • Identified. When you call identify() with a stable identity, the profile becomes a known user with traits like email and name attached.
// Anonymous activity is already being tracked.
journeylayer.track("Pricing Viewed");

// Later, the user signs up — now they are identified.
journeylayer.identify({
name: "Ada Lovelace",
});

The stable identity used for a profile is the first non-null of identity, email, then phone.

Identity merge behavior​

Users often browse anonymously before they sign in. JourneyLayer keeps their history intact by stitching anonymous and identified activity into one profile.

When you call identify() with a stable identity (the first non-null of identity / email / phone), JourneyLayer links the current anonymous user to that known person in two directions:

  • Forward stitch. New events from this point on attach to the identified person automatically.
  • Backfill. Earlier anonymous activity is merged onto the known profile, so the pre-signup events (like that Pricing Viewed above) are not lost — they appear on the same timeline.

The result is a single, continuous timeline that spans the user's anonymous and known sessions.

Resetting identity on a shared device​

Call reset() when a user logs out. This starts a fresh anonymous identity, so the next person to use the same device or browser is not merged into the previous user's profile.

// On logout
journeylayer.reset();
caution

Always call reset() at logout on shared or public devices. Without it, the next visitor's activity would be stitched onto the previous user's profile.

A typical lifecycle looks like this:

  1. Visitor arrives — tracked under an anonymous id.
  2. They browse — events accumulate on the anonymous profile.
  3. They sign in — identify() triggers forward stitch and backfill, producing one unified profile.
  4. They log out — reset() starts a new anonymous identity for the next user.

For the exact method signatures and platform behavior, see the Website SDK Tracking API.

Next steps​