Safe to put next to your checkout
A chat widget runs on every page of your site, including the ones with your login form and your payment page. This is how AgentlyDesk earns that place.
Three keys, each with one job
Each site gets one public key and two secret keys. The secret keys are stored encrypted (AES-256-GCM) and shown to you only once.
-
pk_live_…Site key
In the embed code, on every page.
Public by design. It only identifies the site; the widget still opens only on the domains you allowed.
-
sk_…Identity key
On your server only.
Signs your signed-in users so the console can mark them as verified.
-
whsec_…Webhook key
On your server only.
Lets your server check that a ticket request really came from AgentlyDesk.
The two signatures use different labels (identity.v2 and webhook.v1.), so a signature made
for one purpose can never pass as the other, even if the same value ended up in both places.
Rotate keys without downtime
Routine rotation keeps the old key working for 24 hours while you deploy the new one, so signed-in members are not dropped and tickets are not refused. If a key leaks, revoke it and it stops working at once. A running grace window can also be ended early. Only admins can do this, and each step is recorded in the audit log.
- New key issuedUpdate your server at your own pace.
- 24-hour grace windowOld and new keys both work.
- Old key retiredOnly the new key is accepted.
What keeps it safe
Controls you would expect from a tool that sits on every page of your site.
-
Verified visitor identity
Sign logged-in users with HMAC so an operator knows exactly who they are talking to.
-
Key rotation with a grace window
Rotate site keys with a 24-hour overlap, or revoke one instantly.
-
Mandatory two-factor sign-in
Every operator signs in with a second factor. It is not optional.
-
Audit log
See who changed what in your workspace, and when.
-
Bans and moderation
Block abusive visitors and keep your team's inbox clean.
-
Strict tenant isolation
Each workspace's conversations and settings are kept apart from every other.
On your site
The widget is public code on a public page. These are the checks that stop it from being turned against you.
-
Allowed domains, checked twice
The origin is checked on every API request and again when the live connection opens, so another site cannot open a chat in your name.
-
Short visitor sessions
A visitor's session token lasts 30 minutes, is bound to the site and the origin, and is kept in memory rather than written to disk.
-
Messages are text, not markup
Messages are stored as plain text and shown as text, so a message cannot inject HTML or scripts into the console or your page.
-
Limits against floods
Rate limits per IP address and per visitor, plus a per-site cap on new anonymous visitors and chats, which verified members never count against.
In the console
The console holds your customers' conversations, so getting in is deliberately hard.
-
Two factors, every time
Every operator sets up an authenticator app before the console opens, with recovery codes for a lost phone. Passwords are stored as bcrypt hashes.
-
Lockout and instant sign-out
Repeated failed sign-ins lock the account, and an operator's sessions can be ended at once when a device goes missing.
-
Roles that limit access
Agents answer chats. Owners and admins manage sites, keys and settings, and changes are recorded in the audit log.
-
One workspace cannot see another
Which workspace a request belongs to always comes from the signed-in operator, never from the request itself. Anything outside it simply is not found.
Visitor data
We store what a conversation needs: the messages and images exchanged, the page the visitor was on and, for a verified member, the name and e-mail your server signed. No name or e-mail is saved from an identity that did not verify.
Visitor IP addresses are stored only as a salted hash, which is enough to apply limits and bans without keeping the address itself. Closed conversations are deleted automatically once the site's retention period is up, 365 days by default.
The details are in the privacy policy. To report a security issue, write to [email protected].
Put a person on the other end of your website.
AgentlyDesk is in early access. Tell us about your site and we will set up your workspace by hand.