Evarist is a remote MCP connector. Add it to Claude or ChatGPT once, point it at your site, and ask your traffic anything — no dashboards, no exports. Setup takes about two minutes.
Evarist runs as a remote MCP server — there's nothing to install. Pick your assistant:
In Claude, go to Settings → Connectors, then choose Add custom connector.
Name it Evarist and enter the remote MCP server URL, then click Add:
https://app.evarist.ai/mcpIn ChatGPT, go to Settings → Apps & Connectors → Advanced settings and enable Developer Mode.
Go to Settings → Connectors → Create. Name it Evarist, add a short description, and paste the server URL:
https://app.evarist.ai/mcpTick the box to confirm you trust the connector, then click Create. ChatGPT sends you to Evarist to sign in.
In a chat, open + → More → Developer Mode and pick Evarist — do this once per conversation.
When you connect, your assistant sends you to Evarist. Enter your work email — we send a magic link (no password); click it to sign in. Then read and accept Evarist's Terms and Privacy Policy. Your assistant is now connected to Evarist.
Evarist reads first-party behavioral analytics from your own site. Point it at your domain and add one line of tracking.
In a new chat, say: "Set up Evarist on my website." Your assistant runs the guided setup prompt.
Evarist registers your site and hands you a one-line tracking snippet.
Drop it in your page <head> or paste it into your tag manager (Google Tag Manager, etc.) — it's a single self-contained tag. Sessions begin flowing within minutes.
Once data is flowing, ask Evarist anything about how visitors move through your site.
By default the snippet sets its first-party analytics cookies as soon as it loads. If your compliance posture requires no cookies before consent, switch on consent mode: Evarist still counts every visitor from their first page, but keeps its identifiers in per-tab session storage — zero cookies — until you signal that the visitor consented. Add one line inside your snippet, before the loader:
<script>
window.evarist=window.evarist||function(){(window.evarist.q=window.evarist.q||[]).push(arguments)};
evarist('consent','pending'); // ← the one added line
/* …the rest of your Evarist snippet, unchanged… */
</script>
Then, from your cookie banner's callbacks, signal the visitor's choice:
evarist('consent', { analytics: true }); // consented — switch to cookies, keep the same visit
evarist('consent', { analytics: false }); // declined or withdrawn — remove Evarist's cookies
Consent is remembered: once granted, later pages start in cookie mode on their own. On Shopify storefronts there is nothing to wire — Evarist reads Shopify's own Customer Privacy signal and reacts to the consent banner automatically.
Recipes for popular consent tools (category names vary per setup — map your analytics category, and check your tool's current docs):
// Cookiebot
window.addEventListener('CookiebotOnAccept', function () {
if (Cookiebot.consent.statistics) evarist('consent', { analytics: true });
});
window.addEventListener('CookiebotOnDecline', function () {
evarist('consent', { analytics: false });
});
// OneTrust (C0002 is the default "Performance" group — use your own group id)
function OptanonWrapper() {
var on = (',' + (window.OnetrustActiveGroups || '') + ',').indexOf(',C0002,') !== -1;
evarist('consent', { analytics: on });
}
// Axeptio (use the vendor/step names from your project)
window._axcb = window._axcb || [];
window._axcb.push(function (axeptio) {
axeptio.on('cookies:complete', function (choices) {
evarist('consent', { analytics: !!choices.analytics });
});
});
// Any other CMP: call the two lines above from its accept / decline callbacks.
Trade-off to know: until a visitor consents, their identity is per-tab and per-visit — pageviews and sessions stay accurate, but a returning non-consented visitor counts as new. That's the conservative behavior by design.
Running Shopify behind a custom frontend instead of the Online Store (Hydrogen, or your own React/Next.js site)? A theme-embed toggle can't reach those pages, so set up tracking manually with the two steps below — this works today, independent of the Shopify app.
Paste the same tracking snippet from step 2 above into your storefront's root layout or template — every page, not just one — instead of relying on the theme embed.
The common case, even with a custom frontend. Whenever you build or update the cart, set a Shopify cart custom attribute named _evarist to the value of the visitor's _evarist cookie, via the Storefront API's cartAttributesUpdate mutation:
mutation cartAttributesUpdate($cartId: ID!, $attributes: [AttributeInput!]!) {
cartAttributesUpdate(cartId: $cartId, attributes: $attributes) {
cart { id }
userErrors { field message }
}
}
# variables
{
"cartId": "YOUR_CART_ID",
"attributes": [{ "key": "_evarist", "value": "VALUE_OF_THE_EVARIST_COOKIE" }]
}
It rides through to the order, so Evarist attributes the purchase to the right visitor — no matter where checkout renders. This only carries the anonymous visitor id, never anything about the customer.
Install the snippet as in step 1, then tag your order-confirmation page as a conversion goal the same no-code way described below. Evarist tracks revenue natively from your own domain — no Shopify order required.
Ask in plain language. Evarist does the analysis and answers — down to a single session.
Beyond pages and built-in conversions, you can turn any click into a named, tracked event — a button, a link, an add-to-cart — just by asking, or mark one as a goal to track a key outcome with optional revenue. You can also name key pages — your checkout, cart, or a product template — as funnel steps your assistant can analyze, or ask Evarist to watch section attention — how long visitors spend on a section like reviews, FAQ, or sizing — the same way. No code; page events work over your full pageview history from day one.
Say "Track clicks on my Add to cart button." Evarist lists the buttons and links it can see on your site.
Evarist shows you exactly what the new event would match — live — so nothing goes in blind.
Approve it and tracking starts immediately. From then on you can ask about that event like any other signal.
A goal is a tagged event marked as an outcome — it fires a conversion whenever its click or URL trigger matches, and can carry an optional fixed revenue value. Goals show up in your data as conversions, distinct from behavioural signals. Ask Evarist to set one up ("Make my newsletter signup a goal" or "Create a goal for /thank-you page visits, worth €49"), or promote an existing event from your site's page under Websites. Keep one primary conversion — the outcome your headline numbers (conversion rate, "which traffic converts") count. The first goal you set becomes it automatically; change it anytime from your site's page or by asking. Tag the steps leading to that conversion (a "Book a demo" click, a pricing-page visit) as ordinary signals, not goals — so one conversion is counted once, not several times.
evarist('goal', 'purchase', { value: 49.90 }). The value is in major units (e.g. 49.90 = €49.90). This fires the same CONVERSION event and respects the per-session dedup.Evarist exposes a small, read-first set of tools. Seven ever write — create_site sets up a new site, setup_shopify points you at the native Shopify app (App Store listing coming soon), confirm_event_tag saves an event you've approved, set_event_goal promotes or demotes an event as a conversion goal, set_identity_capture switches form-email capture on or off, add_domain adds one of your domains to a website for cross-domain visitor recognition, and remove_domain removes one. Everything else is read-only.
list_sites.Evarist reads behavioral analytics only — pages, clicks, and conversions. It never reads names, emails, or phone numbers; that data lives in a separate system Evarist can't see.
Email us at support@evarist.ai and we'll help you get connected.