Identify your users
Which user details to send, what each one does, and where to find them in popular auth tools.
Browser
window.Atlis.identify(user.id, user.email, {
name: user.name,
plan: "pro",
trialExpiresAt: "2026-12-01",
isActivated: true,
company: "Acme" // any extra fields are saved as properties
});Fields
| Field | Required | What it does |
|---|---|---|
| id | Yes | Your user's permanent unique ID (for example your database ID). Must not contain /. Using the same ID again updates the same user, never a duplicate. |
| For emails | Where Atlis sends workflow emails. Send it on every identify call. | |
| name | No | Used in {{displayName}} in emails. displayName works too. |
| plan | No | Plan name such as free, trial, pro or annual. Feeds the Plan filter and the health score. With AtlisConfig, it defaults to free if left out. |
| trialExpiresAt | No | Trial end date, for example 2026-12-01. Powers the Trial expiring in 3 days workflow. |
| isActivated | No | true once the user reaches your key milestone. Leave it out if you don't know yet. |
| anything else | No | Saved on the user as a property and shown on their profile. |
Activation (isActivated)
Activation means a user got real value, for example created their first project. You decide what that moment is.
- When
isActivatedchanges totrue, Atlis sends the Onboarding completed email (if that workflow is on) and stops the Not activated in 48h workflow for that user. - New users start as not activated.
- Don't send
isActivated: falseon every page load. It overwrites atrueyou sent earlier. Send it only when you know the real value. - Other ways a user gets marked activated: a first payment through Stripe or Paddle, or a CRM status you mapped to Activated (see CRM status mapping).
Milestone workflows you picked during onboarding (like Created first project or Finished onboarding) also count a user as active for their lifecycle stage and health score when that event arrives. Workflows such as Payment failed or Inactive for a week never count as activation. They don't change isActivated itself, so the Not activated email can still send. Send isActivated: true to stop it.
Where to find these values
| Auth tool | id | name | |
|---|---|---|---|
| Firebase Auth | user.uid | user.email | user.displayName |
| Supabase | user.id | user.email | user.user_metadata.full_name |
| Clerk | user.id | user.primaryEmailAddress.emailAddress | user.fullName |
| Auth0 | user.sub | user.email | user.name |
| NextAuth / Auth.js | session.user.id (add it in your session callback) | session.user.email | session.user.name |
| Your own database | Primary key of the users table | Email column | Name column |
More in Install tracking
Try it in your own workspace
Start with a 14-day trial with Growth features. No credit card needed.
Start free