Identify users
Identify your users to better understand your dashboard data and prevent duplicate users.
At Jimo, we care for the privacy of your users. Therefore, it's not required to identify them before giving feedback. But from your side, this can be annoying to receive feedback from an anonymous user.
Jimo allows you to identify users by passing a unique identifier in order to:
Know who has interacted with experiences
Prevent duplicate users
Unlock segmentation, targeting, and content personalization based on your own user data
Carefully choose your identifier
Make sure your identifier is unique and not guessable (ex. UUID, NanoId, CUID, etc.). Most of the time, a good identifier would be the internal id of the user in your system.
In some companies, customer support team or admins can log in to their end-users accounts, for customer or debugging purposes. In this specific case, we advise you to either disable the Identification feature (do not call the identify command), or to not load Jimo at all, to prevent unexpected behavior.
The identify command
To identify users, make sure to have the SDK installed on your web app, then use the following command:
window['jimo'].push(['do', 'identify', [userId]]);Call it when the user authenticates (login), and on app load if a session is already active.
How commands are processed (command buffering)
The Jimo snippet creates a global command queue (window.jimo = []) before the script itself loads. You can push commands to this queue at any time, even before Jimo has finished initializing.
When the script initializes, it reads the queue and processes it in a fixed order:
The
identifycommand runs first and initializes the user profile.Every other queued command (
setcalls, etc.) is held back and executed once the profile is ready.
This guarantees that your user data is always attached to the right profile, in a predictable order, no matter when the script actually finishes loading.
Recommended pattern: set first, identify last
Push your set commands first, and finish with the identify call:
Why this order works best:
identifytriggers the authentication logic and initializes (or switches) the profile.setcommands are enrichment: they wait until the profile is initialized, then apply to it.By pushing the
setcalls beforeidentify, everything is already sitting in the buffer when the profile initializes. Nothing runs in parallel with the authentication, so every command is applied in order, to the right user.
The same pattern applies in a SPA or when Jimo is already loaded: queue the user data, then identify.
Avoid repeated identify calls
Calling identify with a different user ID triggers a full profile switch: the script re-initializes entirely for the new user. This is expected when a user logs out and another logs in, but you should not call identify repeatedly in your app flow.
Call
identifyonce per session, typically at login.To update user data afterwards, use
setcommands: they enrich the current profile without re-initializing anything.
Force Identify
If you want to guarantee that no anonymous user is ever created, enable the Force Identify option in Settings > Installation > Identification. Jimo will not initialize until an identify call is received; any command pushed in the meantime stays buffered and is applied automatically once ready. See Installation for details.
Examples
See below a screenshot of a profile without identification and one with an id (b7b8c565...) and a user name (Sam) pushed.


Here is the code used to identify the profile:
Related pages
Setup the segmentation: push default and custom attributes for targeting
Setup Identify Verification: sign your identify calls to prevent spoofing
SDK Methods: full command reference
Installation: snippet setup and the Force Identify option
Last updated