Verify your customers' identity

Chat WidgetUpdated October 16th, 2026

Identity verification tells Helpium, securely, which of your users is chatting. Your server signs a short token with your workspace's identity secret, and the web widget or the mobile SDK passes it along.

With a verified identity:

  • The customer keeps one conversation that follows them across devices: from your website to the app and back.
  • The pre-chat form is skipped, because Helpium already knows their name and email.
  • AI actions can act on their account (look up orders, change a booking) because Helpium knows the request really comes from that user.

Without it, a visitor can still chat and leave an email, but they are treated as unverified.

1. Copy the identity secret

In Helpium, open Channels → Live Chat and copy the identity secret. Keep it on your server only. Anyone who has it could pretend to be any of your users.

2. Sign a token on your server

The token is an HS256 JWT with these claims:

Claim Required Description
user_id Yes (or email) Your user's id, as a string
email Recommended Needed for the conversation to follow the user to another device
exp Yes When the token expires, as a Unix timestamp

Expose an endpoint for signed-in users, such as GET /api/helpium-token, that returns it:

use Firebase\JWT\JWT;

$userJwt = JWT::encode([
    'user_id' => (string) $user->id,
    'email' => $user->email,
    'exp' => time() + 3600,
], env('HELPIUM_IDENTITY_SECRET'), 'HS256');
const jwt = require('jsonwebtoken');

const userJwt = jwt.sign(
  { user_id: String(user.id), email: user.email },
  process.env.HELPIUM_IDENTITY_SECRET,
  { algorithm: 'HS256', expiresIn: '1h' }
);
import jwt, os, time

user_jwt = jwt.encode(
    {"user_id": str(user.id), "email": user.email, "exp": int(time.time()) + 3600},
    os.environ["HELPIUM_IDENTITY_SECRET"],
    algorithm="HS256",
)

3. Pass it to Helpium

Web widget

Helpium.identify({ userJwt: tokenFromYourServer, email: user.email });

iOS

Helpium.identify(userJwt: tokenFromYourServer)

Android

Helpium.identify(tokenFromYourServer);

React Native

Helpium.identify({ userJwt: tokenFromYourServer });

Call it right after the user signs in. When they sign out, call Helpium.logout() in the apps so the next person on the same phone starts fresh.

Rotating the secret

If the secret leaks, regenerate it in Channels → Live Chat. Tokens signed with the old secret stop working immediately, so update your server at the same time.

Was this article helpful?