Your customers sign in once: with your app.
One workspace identity secret recognises your signed-in users in the chat widget and the help portal. Portal single sign-on sends them from your app straight in, already signed in. Free on every plan.
No credit card. Email, live chat, portal and knowledge base included.
- No credit card
- Free on every plan
- Identity providers on Premium
One secret
For the chat widget and the portal
Single use
Sign-in tokens expire within five minutes
One record
Chat and portal land on the same customer
PHP, Node.js, Python, Ruby
Copyable snippets in the guide
No second account for your customers.
One workspace identity secret
It lives under Settings > Customer sign-in and works for every live chat channel and the portal. Rotate it any time: the previous secret keeps working for 24 hours.
Verified chat
Your server signs the user id with the secret, and the widget passes the signature along. Your team sees who they are talking to; anything unsigned stays an unverified claim.
Portal single sign-on
Your server signs a short-lived token and sends the browser to your portal, where the customer arrives signed in. Choose single sign-on only, single sign-on with email and password, or email and password.
One customer record
A signed chat and a portal sign-in for the same user land on the same customer, and a signed chat folds that browser's earlier anonymous chat in.
Safe by design
Tokens are single use, expire within five minutes and are signed with a key derived from your secret, so a widget signature can never double as a portal sign-in.
"Continue with" your identity provider
Add Okta, Auth0, Microsoft Entra ID, Keycloak or any other OpenID Connect provider, and customers get a "Continue with" button on the portal sign-in page.
A few lines on your server.
Sign the user id with your identity secret and print the hash into your page. The guide has the portal token and the redirect contract too.
function zonoWidgetHash(string $secret, ?string $userId, ?string $email = null): string
{
// The user id as a string, or the lowercased, trimmed email when there is no id.
$id = trim((string) $userId);
$identifier = $id !== '' ? $id : mb_strtolower(trim((string) $email));
return hash_hmac('sha256', $identifier, $secret);
}
// $userHash = zonoWidgetHash(getenv('ZONO_IDENTITY_SECRET'), (string) $user->id);For your customers, not your agents
Customer sign-in and identity providers sign in the people you support. Single sign-on for your own support agents is not available yet.
Related
Multilingual help center
Your portal and widget in your customers' language.
In-app support widget
Chat with signed-in users inside your product.
Customer identity developer guide
The trust model, the token and the redirect contract.
Compare Free and Premium
Sign-in, identity providers and languages, plan by plan.
Security
How we protect your data.
Questions, answered
Sign customers in with your own app.
Free on every plan.
No credit card. Email, live chat, portal and knowledge base included.