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