Security · Data handling

How Evarist handles your data.

Evarist reads behavioral analytics so your AI can reason about your traffic. This page describes, precisely, what we collect, where it lives, and the boundaries that protect it, written for you and for your security reviewer. Every claim reflects how the product is actually built.

Last reviewed · September 2026
01 / What we collect

Behavior by default, identity only on request

The full inventory, and the things the tracker is built to never touch.

The tracker collects behavioral events from your site: the pages viewed (their URL, including a query string that can carry campaign parameters, and their title), referrers and traffic source, browser timezone, scroll depth, visible time on page, plus the interactions, conversions and visitor properties you choose to record.

Identifiers are random values generated in the browser, derived from nothing about the device, and kept in first-party cookies: _evarist, the visitor ID (13 months, renewed on each visit); _evarist_s, the session (a random ID, the landing page URL, which can include its query string, and the referrer), which ends after 30 minutes of inactivity and at most 4 hours; _evarist_g, the keys of the goals already counted in this session (30 minutes); _evarist_probe, a candidate domain kept 10 seconds to check which domain can hold the cookies; and, on Shopify checkouts only, _evarist_p, the order identifiers our pixel has already recorded (90 days). Country, approximate city, browser, operating system and device family are derived on our servers from the request; the visitor's IP address is masked before it is stored in our analytics data.

If you install our Shopify app, we also read a narrow set of order facts from Shopify's Admin API: the order number, when it was placed and last updated, its currency, its status (financial status, cancellation and its reason, whether it is a test order), its monetary totals (net payment, total price, refunds, discounts) and the app that created it. We read the order's tags and whether an item was bought on a subscription to classify the order, without storing them, and of its custom attributes we keep only the visitor identifier our tracker set. We also read your product and inventory records: titles, types, Shopify categories, collections, options such as size, launch dates, prices and stock. That is what lets Evarist tell you which traffic sources actually produced sales. For your weekly Brief, the app also holds four more permissions: read_discounts for your discounts and their codes, read_returns for your returns (the product that came back, how many, the reason chosen from Shopify's list and the date, never a note the customer wrote), read_shipping for the shipping rates that set a free-shipping threshold, and read_markets for your markets, so that threshold is read in each one. The app also holds read_customers, used for one thing: of each order's customer we read only the identifier Shopify gives them, never store it, and use it only to make a code that links one customer's orders on your site without naming them, which nothing outside Evarist can turn back into that identifier. And it holds read_all_orders, which Shopify approved so we can read orders older than 60 days; for now we still read only the last 60 days. If you installed the app before we added them, Shopify asks you to approve them the next time you open Evarist. We never ask Shopify for customer names, emails, phone numbers or addresses: the queries we send ask for no customer field but that identifier (the app's other customer-named scope, read_customer_events, covers behavioural pixel events, not people). Individual orders are deleted after 65 days; beyond that we keep daily totals by traffic source, device and product. Returns are deleted 65 days after they were made, and your discounts and free-shipping thresholds are replaced by each day's read. Each product's daily stock level, with each variant's price, is kept for 25 months. Our checkout pixel also records which checkout steps a visitor completed (contact, address, shipping and payment, never what they entered), the products and quantities in a checkout they start, and the search terms they submit in your store's search. A search term is free text the visitor typed, so the pixel drops any term that holds an email address or a phone number before sending it, except a term made only of digits, which it keeps as a likely product code, and it keeps at most 256 characters. Orders, checkout steps, checkout products and search terms recorded by the pixel follow the visitor-data retention below, and where the visitor has declined analytics, the pixel sends nothing. We keep the store contact email Shopify gives us, for support only. For the people on your staff who open Evarist inside the Shopify admin, we store the identifier Shopify assigns to their staff account, and nothing else about them: no name, no email address.

If you connect Meta Ads, we ask for one OAuth scope, ads_read, and store the access token that grant returns (Meta issues no refresh token, so that token is the only credential we hold). With it we read your ad account's campaigns, ad sets and ads with their settings (names, status, budgets, bidding, schedules, targeting settings and ad text), plus each ad's creative URL tags, the tracking parameters that tell Evarist which ad a visit came from, and its reporting figures: spend, impressions, clicks, purchases and other results per hour and per day, broken down by device, placement, country, age band and gender, together with the account's activity log (budget, status and targeting changes, without who made them), so we can relate what you spent to what happened on your site. We never read who is in your audiences or customer lists, the people who saw or clicked an ad, or your Facebook profile: the connection reads your campaigns and their settings, your account's reporting figures and its change history, and nothing else. Disconnecting deletes the stored token immediately, and everything read from your account, campaign tree included, within 30 days.

What we never collect:

  • No form contents, no keystrokes. Apart from the optional email capture below, the tracker does not read what people type. On Shopify, our checkout pixel records the search terms visitors submit in your store's search, as described above.
  • No third-party cookies, nothing in localStorage, no tracking across unrelated sites. You can link your own domains, including your Shopify checkout, so a session continues across them.
  • No fingerprinting. No canvas, font, or device-signal collection: identifiers are random, not derived.
No identifying cookie before consent, if you need it. By default the snippet sets its cookies as soon as it loads, so fire it from your consent tool, or switch on the optional consent mode, which sets no identifying cookie before consent: it holds the identifiers in per-tab session storage until your consent banner signals agreement. On Shopify, the Evarist app embed checks Shopify's Customer Privacy signal before loading the tracker; a store whose theme doesn't provide that signal gets the tracker at page load. See consent mode in the docs.
One disclosed exception. An optional email-capture feature can connect a form signup to a visit. It is off by default: we switch it on for a site when you ask, and even then it captures nothing without the visitor's consent. Captured email addresses are deleted after 12 months. How it works.
Custom visitor properties, on your terms. You can declare your own segmentation facts about a visitor, like is_employee or plan, capped at 20 per site. Only names you've declared are ever captured, and names that look like personal data are rejected. Property values are retained for 365 days and isolated per tenant, same as the rest of your data. How it works.

Email addresses captured on a site, by Evarist's optional capture or by Wisepops forms on the same site, are visible to that site's Evarist users. Names and phone numbers collected by Wisepops campaigns stay in Wisepops and are never shown in Evarist.

02 / Tenant isolation

Enforced below the AI

One customer's data must never surface in another's AI answers or pages, so we enforce it below anything the AI can reach.

  • Every analytics query you run, or an AI runs on your behalf from Evarist's chat or your own assistant, runs under a database account that can only read your sites: one created for your user, or one created for your account and narrowed to the one site a chat conversation or an analysis is about, with your access checked again before every query (an analysis works for the site itself, so it checks that the site and its connections are still in place). Pages that show prepared figures read them through the application, which checks your access to the site first.
  • The database enforces that restriction on every SELECT: a crafted query, UNION, or subquery cannot escape it.
  • When someone on the Evarist team opens Evarist for your store to support you, they do it from our own site as themselves, never as one of your users. Their queries run under a database account created for your account, which can only read your sites and is narrowed to the one site they opened, and every page they open and every change they make there is recorded.
  • Background jobs that prepare pages and insights use service accounts and read one site at a time.
  • The application's default database account has no read access at all: if your identity ever failed to attach, the query fails closed instead of falling back to broader access.
  • Per-user database credentials only work from inside our private network, so they are useless if they ever leaked.
  • Changes to team access are applied to database policies, not left to the AI to enforce.
  • A user with no sites matches nothing.
03 / The AI layer

Authorization comes from authentication

A chatbot sits on top of this data, so the AI layer gets its own boundaries.

Not from the prompt. Whether you ask from Evarist's own chat or from your own assistant, the request carries your sign-in, and your sign-in is what decides which data can be read. Nothing the AI writes can widen that. If someone hides an instruction inside a page title, a link or a product name hoping the AI will follow it, the answer does not change: the only data that can come back is yours.

Database errors are sanitized before the model sees them; raw internals are logged only on our side. Queries are rate- and size-capped per user.

Calculations run in a sealed box. When a question needs more than a database query gives, Evarist's chat can write a short Python program over the results it already read in that conversation. The program runs in a fresh, short-lived machine in our own AWS account (us-east-1) that has no network access and no credentials: it cannot reach the internet, our databases or anyone else's data, only the results handed to it. It stops after five minutes at most, the machine is destroyed when it ends, and nothing is kept in it. Text written by others, such as a page title, reaches the program only as data in those results, never as code. What it produces, tables and chart figures, is kept with the conversation like any query result. You see what Evarist was working on, not the program.

Server-side, Evarist calls one model provider: Anthropic. Evarist uses it for its AI features: understanding your site from its public pages (what it sells and the kinds of pages it has), suggesting what to track, generating insights, and answering and screening the questions you type into Evarist's chat. For the chat it sends your question, the earlier questions and answers of that conversation, the facts people on your account asked Evarist to remember about that website, the dates, filters and figures of the Traffic page you asked from, if any, and the results of the queries run to answer it. For an analysis it sends what you chose for it, the facts people on your account asked Evarist to remember about that website, the findings your earlier analyses of that site showed with the feedback people on your account gave on them, what people on your account did with the recommended actions of your weekly briefs of the last 8 weeks (copied, opened, marked done or not relevant, with the reason they typed), and the results of the queries it runs; to rewrite part of an analysis after your feedback, it sends that part, your feedback and the results the analysis already read. To suggest a fact to remember, it sends a question and its answer, or your feedback and the part rewritten after it, with the facts already remembered for that website; to check a fact someone saves, it sends that fact and the others. Those results can include visitor-level records (random visitor IDs, pages, approximate location) and, on a site where visitor email addresses have been captured (by Evarist's optional email capture or by Wisepops forms), those addresses. Understanding your website only reads pages on the domains you've registered with Evarist and subdomains of them that your own pages link to. Neither Evarist nor Anthropic trains models on this data.

When you connect your own AI client (claude.ai, ChatGPT…), that provider processes your questions under your agreement with them. It is your processor, not our sub-processor. Our sub-processor list spells out the distinction.

04 / Encryption

In transit and at rest

Every connection to Evarist from browsers, AI clients and the tracker is encrypted in transit (TLS). Account and configuration data is stored on encrypted volumes (AWS EBS), and its backups are AES-256 server-side-encrypted in S3. The query results Evarist's chat keeps with a conversation, and the tables its calculations produce, are files in S3, encrypted at rest, closed to the public and reachable only by the application.

05 / Access control

Least privilege, no passwords

  • No passwords to steal: sign-in is a one-time emailed link.
  • AI connections use OAuth 2.1 with PKCE; access tokens expire after 1 hour, refresh tokens after 30 days, and all tokens are stored only as SHA-256 hashes.
  • Analytics queries use least-privilege database accounts (section 02): per user, with per-user query quotas, or, when someone on the Evarist team supports you, per account and narrowed to the one site they opened.
  • Production access is limited to the Wisepops engineers who operate Evarist and its infrastructure.
06 / Where your data lives

Hosting & sub-processors

On AWS (us-east-1, United States), the analytics infrastructure Evarist shares with Wisepops. Our sub-processors, AWS, Cloudflare, Postmark and Anthropic, are listed publicly with their purpose and location at evarist.ai/subprocessors.

For EU/UK customers: transfers rely on the EU-US Data Privacy Framework and/or Standard Contractual Clauses with the UK Addendum, as set out in the DPA.

07 / Retention & deletion

Bounded by default

  • Identifiable visitor event data is deleted or anonymised after 25 months. After that we keep daily totals, which hold no visitor identifier.
  • The visitor cookie expires 13 months after the last visit; a session ends after 30 minutes of inactivity and at most 4 hours.
  • Your chat conversations are stored so you can come back to them, with the dates, filters and figures of the Traffic page you asked from. An answer can also keep what it looked up to reach it: the instructions it was given, the queries it ran and their results, and the calculations it ran with what they produced, stored with the conversation in our database and in S3. They belong to the person who had them, are not shared with your teammates, and are deleted with the website they are about or with your account, query results included. Who at Evarist reads them, and why: the members of the Evarist team who run the service can open a conversation, with everything its answers looked up, to support you, to stop abuse and keep the service secure, and to meet a legal requirement. During the beta, they also read conversations to improve Evarist's answers. You can refuse that last reason for your whole account by writing to support@evarist.ai; the first three cannot be refused. Each time someone opens a conversation, we record who opened it and when, never its content, and delete that record after 2 years. No one trains an AI model on your conversations. When an answer behaves oddly, for example when it runs long without ever querying your data, an automated check classifies the question that produced it and records a category, such as an attempt to override the product's instructions. It records the category and a score, never the text.
  • Each analysis keeps its record, so everyone on your account can read its result: what you chose for it, the instructions it ran on, the findings of your earlier analyses it was given, every step it took with the queries it ran and their results, and its result, whose every figure was checked against those results before it showed. Each revision of a result, after someone's feedback or a new run of the same period, is kept as it was published, with who asked for it, the feedback and what changed. What people on your account do with a weekly brief's recommended actions (each copy and button they use, each one they mark done, not done or not relevant, with the reason they type) is kept with it, with who did it and when, and later briefs of that site read the last 8 weeks of it. When a result is wrong at its root, a member of the Evarist team can run its period again: the new revision shows as updated by Evarist on its date, and we record who ran it and when. An analysis works for the site, not for the person who asked: everyone on your account sees it, and anyone can cancel it while it runs. Its result, each revision as it was published with its findings and figures, is kept as long as the site it is about, and deleted with that site or with your account. What is behind it (the findings of earlier analyses it was given, every step it took, its queries and their results, in our database and in S3, and what was done with its recommended actions) is deleted 25 months after the period it covers ends, with the conversations about it, which read those results; from then on, that result can no longer be run again, revised or asked about. A list of individual orders an analysis keeps is deleted sooner, with the orders themselves, 65 days after they were placed. Who at Evarist reads them, and why: as for conversations, the members of the Evarist team who run the service can open an analysis with everything it was given and looked up, to support you, to stop abuse and keep the service secure, to meet a legal requirement and, during the beta, to improve Evarist's analyses; refusing that last reason covers your analyses too, and each time someone opens one, we record who opened it and when, never its content. During the beta, they may also run one of your analyses again to improve Evarist, with a change they are testing, on the results it kept and your site's data for the same dates. What that produces reaches no one on your account and is deleted with the analysis. It is the reason you can refuse by writing to support@evarist.ai, and each time we record who ran it and when, never its content. We delete each of these records after 2 years.
  • The facts you ask Evarist to remember are kept for the website, each in the words of the person on your account who saved it, with who saved it and when, and when an answer or an analysis last used it. Only a person on your account saves one, edits or deletes one: Evarist offers to remember something when you ask it to, or suggests something from your own question or feedback, to you alone, and remembers nothing until you click to save it. A suggestion is kept with the conversation or the feedback it came from, and deleted with it. When one is saved, Evarist checks it against the others and offers to replace any it contradicts. Everyone on your account sees them, and every answer and analysis on that website is given them all and keeps a copy of the ones it was given, deleted with it. The members of the Evarist team who run the service can read them, never change them. They are deleted with the website or with your account.
  • We keep a record of what each AI call costs us: the model, the tokens it used and their price, and for a calculation the time its machine ran and its price, with the site, the account and the Evarist user it was made for. It holds nothing anyone wrote: no questions, no answers, no data from your site. We keep it indefinitely, so it stays when a conversation, a site or an account is deleted. Deleting a user removes them from it.
  • Deleting your account removes your account, sites, and configuration immediately. Already-collected visitor events are not deleted with the account; they follow the 25-month retention above, unless you ask us to delete them.
  • On your request, we delete a site's or a visitor's data from our live systems within 30 days (a Shopify order that carries the visitor's identifier goes at the end of its 65-day retention); archived copies are deleted at the end of the 25-month retention. We assist you, the controller, with your visitors' requests (DSARs).
08 / For your legal team

The facts your DPO will ask about

With the documents to forward.

09 / What we don't claim yet

Listed plainly, not implied

  • No SOC 2 audit yet.
  • No published penetration test.
  • DNT / GPC signals not honored.

We would rather list these plainly than imply them. This section shrinks as we grow.

Questions your reviewer wants answered directly? support@evarist.ai