Telltale Bot

Security

What the Telltale Bot script does on your pages, where its data lives and for how long, who can see it, and how we keep it safe. Most security reviews can start here.

In short

What the script does on your pages

The tag adds one script, telltale.js, from js.ttbcdn.net. It loads asynchronously, so it never holds up your page. It looks at how the browser is set up and how the page is used (the timing of mouse, touch, scroll and keyboard activity, never what is typed), sends that to our server at in.ttbcdn.net, and gets back the verdict: human, AI agent or bot. It sends at most a few reports a pageview: when the page loads, after the first interaction, and when the page is hidden or closed.

What it does not do:

Where the page's address carries something secret (a reset token, a password, a session ID), the server redacts it before anything is stored, and it does the same with request headers that carry credentials.

It must never break your page

The script watches some of the browser's own functions to see what drives the page. Where it does, the function behaves exactly as before, to your code and to every other library on the page. An error in our code is caught and never reaches your page. A second copy of the tag on the same page does nothing. It stays out of web workers and pages it can't run in safely, and stops reporting if your Content Security Policy blocks it.

Before each release, the script is run against 67 setups of common front-end libraries (jQuery 1 to 4, jQuery UI, Bootstrap, Prototype, MooTools, Dojo, sliders, carousels, select boxes, lightboxes, Sentry and more), and a release that changes how any of them behaves doesn't ship.

Performance

Zero noticeable cost to your visitors is a hard requirement for us. The script is about 18 KB compressed and loads asynchronously. Its heavier work waits until the browser is idle, and the parts that watch the page stop at a fixed budget for each page, however much the page does. We measure the script's main-thread time on every pageview, from real visitors' browsers, and watch it with every release.

Script integrity and SRI

Security reviews often ask for Subresource Integrity (an integrity hash on the script tag). The tag loads /v2/telltale.js, which we update in place: new AI agents and new bots need new detection, often within days, and an auto-updating script means you never have to change your tag for that. An SRI hash would stop the script the first time we update it, so the tag can't carry one.

What we do instead:

If your policy requires SRI on every third-party script, write to us.

Where the data lives, and for how long

Our server is in Chicago, United States, hosted by Vultr. Each site's reports are kept in a database of their own. IP address lookups (network operator, approximate location) run on our own server: no visitor IP is sent to another company for them.

Clearing a site's data, deleting a site or closing an account deletes its reports at once. A site can erase everything stored for one visitor or member from Site settings. Our privacy page has the rest, and our subprocessors page lists every company that processes data for us, with an RSS feed of changes.

Who can see it

Your logins

Passwords are stored as bcrypt hashes, sign-ins are throttled, and changing a password ends every session of that login. Two-factor sign-in (an authenticator app) is available to every login, with recovery codes. Invite and password-reset links only open a form: a link alone never signs in a login that has two-factor on. Card details go straight to Stripe and never reach us.

Encryption

Every connection to our servers, for the script, the reports and the viewer, uses TLS 1.2 or 1.3, with HSTS. Backups are encrypted on the server before they leave it, with a key the server itself cannot read back. The key to restore them is kept offline.

How we run it

If something goes wrong

We have a written breach procedure. If a breach affects your data, we tell you without undue delay, and aim to within 48 hours, so you can meet your own deadlines (72 hours under the GDPR). We say what we know and add to it as we learn more. Our Data Processing Addendum sets this out, with the EU Standard Contractual Clauses and the UK Addendum for transfers to the United States.

Reporting a vulnerability

Write to support@telltale.bot. Every one of our collection hosts publishes the same address in /.well-known/security.txt. Please give us a reasonable time to fix a problem before you make it public. We don't run a paid bug bounty.

Security questionnaires

We answer reasonable security questionnaires, and we have common answers ready. Write to support@telltale.bot. We answer within 72 hours.

Last updated .