Identify Users
Link feedback and votes to specific users in your React Native app.
Basic identification
The simplest way to identify a user is to pass their unique ID:
JotReview.identify({ userId: "usr_7x9k2m" });
`
The userId should be the same stable, unique identifier you use in your own database. Avoid using email addresses as the primary ID because they can change.
Identify with email
Adding an email address enables JotReview to notify users when their feedback status changes:
Full profile with avatar
Provide a complete profile so the JotReview admin dashboard can show rich user information alongside submitted feedback:
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
userId | string | Yes | Stable unique identifier |
email | string | No | User's email for notifications |
firstName | string | No | First name for display |
lastName | string | No | Last name for display |
avatar | string | No | Publicly accessible profile image URL |
signature | string | No | HMAC-SHA256 signature for secure mode |
Secure identification with signature
For production apps, enable Secure Mode in Settings > Login & SSO and generate an HMAC-SHA256 signature on your server. This prevents users from impersonating each other.
Fetch the signature from your backend, then pass it with the identify call:
JotReview.identify({
userId: currentUser.id,
email: currentUser.email,
signature,
});
`
Never compute the signature on the device — it requires your secret key. See the Server Authentication article for backend implementation examples.
When to call identify
Call identify at the following points in your app lifecycle:
- •App launch — If the user has a saved session, identify them immediately after the provider mounts
- •After login — Identify the user as soon as they successfully authenticate
- •After profile update — Re-identify the user to sync changes to their name, email, or avatar
JotReview.identify({
userId: user.id,
email: user.email,
firstName: user.firstName,
lastName: user.lastName,
});
}
`
Logout
When the user signs out of your app, call JotReview.logout() to clear their identity from the SDK. After logout, JotReview returns to anonymous mode.
Failing to call logout() means the next person to use the device could submit feedback under the previous user's identity. The anonymous visitor ID is preserved so vote history stays consistent.
Anonymous feedback
If you do not call identify, the SDK operates in anonymous mode. Anonymous users can still submit feedback and vote on features, but their submissions will not be linked to a user account in your JotReview dashboard.
The SDK stores a stable anonymous visitor ID with AsyncStorage so a user's votes persist across app launches even before they log in.
Boards that require authentication
If a board has guest submissions disabled, the API rejects anonymous submissions with a 403 and the feedback sheet shows *"This board requires authentication to submit feedback."*
The fix is to identify the logged-in user before they submit — typically right after login. Attributed submissions are then accepted and show up in your dashboard.
If the board also has Secure Mode enabled, include a server-generated signature too (see Server Authentication).
Prefer to allow anonymous feedback instead? Enable guest submissions in your JotReview dashboard under Settings > Privacy & Access.
Troubleshooting
Feedback appears as anonymous despite calling identify
Make sure the JotReviewProvider has mounted before you call identify. The SDK must be initialized first.
User identity is not updating after profile changes
Call identify again with the updated fields. The SDK will replace the current user data.
Secure mode rejecting valid signatures
Double-check that you are signing exactly the userId string (no surrounding whitespace or extra fields) with the secret key from Settings > Login & SSO. The hash must be lowercase hex.