Plan requirement: User verification is available on Pro and Business plans.
Why use it?
- See who’s chatting. Conversations show the user’s name, email, and company instead of “Visitor #a3f21.”
- Filter by identified users. The dashboard lets you toggle “Identified users only” to focus on conversations from known users.
- Skip contact forms. Verified users don’t see the contact capture form — their info is already known.
- Prevent impersonation. HMAC signatures prove the user is actually authenticated on your server, not just claiming to be someone.
How it works
- Your server generates an HMAC-SHA256 signature using your secret key and the user’s ID.
- Your frontend passes that signature (along with user details) to the widget.
- ReplyBubble verifies the signature against your secret.
- If valid, the conversation is linked to a verified contact.
Setup
Step 1: Generate a secret
- Go to Dashboard > Integrations > User Verification.
- Click Generate Secret.
- Copy the secret immediately — it is shown once and cannot be retrieved later.
- Store it securely on your server (environment variable, secrets manager, etc.).
Step 2: Choose a verification mode
In the same panel, set the Verification Mode:
Recommendation: Start with Optional while integrating. Switch to Required once your server-side signing is deployed and tested.
Step 3: Sign on your server
Generate an HMAC-SHA256 signature of the user’s ID using your secret. Only the user ID is signed — not the email, name, or other fields.Step 4: Call identify() in the browser
After the widget loads and the user is logged in, callidentify() with the user’s details and the server-generated signature:
Step 5: Reset on logout
When a user logs out of your application, callreset() to clear their identity and start a fresh conversation:
What gets verified?
Only theid field is cryptographically verified via HMAC. The other fields (email, name, company, phone, traits) are accepted as-is from your application. This matches the industry standard used by Intercom, Drift, and similar tools.
Why? Your server already authenticated the user. The HMAC proves the identify() call came from your server (not a browser console). The additional fields are trusted because they originate from your application’s authenticated context.
Dashboard features
Once users are identified, you get additional capabilities in the dashboard:- Verified badge — Conversations from verified users show a green “Verified” shield badge.
- Contact linking — Verified users are automatically linked to a contact record with their name, email, and company.
- Identified filter — Toggle “Identified users only” on the Conversations page to focus on known users.
- Identified rate metric — The dashboard home page shows what percentage of conversations come from identified users.
Edge cases
User switches accounts
If a user logs out and logs in as a different user, callreset() first, then identify() with the new user’s details. Each conversation is linked to a single user — ReplyBubble will not overwrite a conversation already claimed by a different user.
Widget loaded before user authenticates
Callidentify() at any time after init(). The widget works for anonymous visitors and links the conversation when identify() is called later in the session.

