Identity
Rabolic counts people, not devices. A person who visits your website, installs your iPhone app and pays through your server is one person in every report, once you tell Rabolic who they are.
The three ids
| Id | Who makes it | What it is |
|---|---|---|
| Anonymous id | The SDK | A random UUID per browser or app install, kept until reset() |
| User id | You | Your own id for the account, sent with identify(), the Node.js SDK or the HTTP API |
| Person | Rabolic | Rabolic's id for one person in one project |
Every device starts anonymous
The SDK creates an anonymous id for each browser and each app install, and every event carries it. Rabolic keeps a person for each one, so a visitor's pages, screens and sessions are tracked before they sign up.
identify() turns a visitor into your user
Call identify() after signup and after every login:
rabolic.identify(user.id, { plan: 'pro' })
Rabolic.identify(user.id, traits: {'plan': 'pro'});
- Use your own stable id, such as the primary key of the account. Not an email address, which can change.
- Use the same id on every platform: web, iOS, Android and your server.
- The user id is set on this event and every later one, until
reset().
The rules
For an event with anonymous id A and, maybe, user id U:
| Situation | What Rabolic does |
|---|---|
| A device Rabolic has never seen sends its first event | Creates a new person for it |
An anonymous person calls identify() with a new user id | That person becomes the user. Their earlier events are already theirs; nothing moves |
| A new device identifies as a user Rabolic already knows | The device is attached to that person |
| A device with its own anonymous history identifies as a known user | Merge: the anonymous person is merged into the user, with their history |
An identified device sends a different user id (a shared device without reset()) | Nothing is merged. The new events go to the person with that user id, and Rabolic records an identity conflict |
| Two different user ids meet | Never merged. Two identified people always stay two people |
When two people merge, properties are combined and the newer value wins. Reports read through the merge at once. Each event keeps the raw ids it was sent with.
reset() at logout
rabolic.reset()
reset() creates a new anonymous id and a new session, and clears the user id and super properties. The next person on that device starts fresh, instead of being added to the last one.
Server events
Every event from the Node.js SDK or the HTTP API names a userId, an anonymousId or both.
- With a
userId, the event goes to that user. identify({ userId, anonymousId })on the server links that visitor to the user. That helps when sign-up happens on your backend.
What doesn't link people (yet)
- Deep links. The web SDK's
appLink()addsrb_aidto a link, and the app SDKs send it aslinked_anonymous_idon$deep_link. Rabolic stores it, but doesn't link the web visitor to the app user by it yet. Useidentify()with the same user id on both sides. - Guesses. Rabolic never links people by IP address, device fingerprint or advertising id.
- Other projects. People are never matched across projects, even in one organization.
Where you see it
Events
What a Rabolic event is, how to name events and properties, super properties, and every reserved $ event the SDKs and the server use.
Sessions
How Rabolic starts and ends sessions on the web (30 minutes without events) and in apps (30 seconds in the background), active time, conversions and revenue in a session.