Without/no cookie banner
Analytics without a cookie banner
agentsgym sets no cookies and stores no personal data: the visitor id is a hash of a daily-rotating salt and the IP is dropped after computing it. Here is the mechanism, and the limits of the claim.
Facts checked 2026-08-12. Prices and limits are the vendor's published numbers on that date.
The claim, stated so you can check it: the agentsgym tracking script sets no cookies, stores no personal data, and therefore needs no consent banner for itself. If that were not true, this page would not exist — constraint pages are only worth writing when the product matches the constraint outright.
The mechanism
The problem every analytics tool has to solve is “was this the same person as ten minutes ago” without keeping something that identifies them. agentsgym’s answer:
visitor_id = sha256(daily_rotating_server_salt + project_id + ip + user_agent)
Then the IP is dropped. It exists in memory long enough to compute the hash and is never written to a row, a log line or an analytics record.
Three consequences fall out of that:
- No cookie, no localStorage, no fingerprint stored. Nothing is written to the visitor’s device, so there is nothing to ask consent for.
- The id dies every day. When the salt rotates, yesterday’s hash cannot be matched to today’s. That is why the product reports “new today” instead of “returning visitor over 30 days” — the honest version of that metric is not available, so it is not offered.
- It cannot be joined across sites. The project id is inside the hash, so the same person on two agentsgym-tracked sites produces two unrelated ids.
What you install
<script defer src="https://api.agentsgym.com/t.js" data-key="YOUR_SITE_KEY"></script>
The beacon sends text/plain deliberately: application/json would force a CORS preflight, and navigator.sendBeacon cannot preflight — the beacon would silently never send. The ingest endpoint answers 204 to everything, including an unknown site key, because it runs on your site and must never surface an error there or leak whether a key exists.
What you give up
- No cross-day visitor journeys. You get pageviews, visitors, top paths and referrers per day.
- No goals, events or funnels. If you need those, use a dedicated analytics tool — Plausible is the honest recommendation, and it is cookieless as well.
- No user-level debugging. There is no user to look at, by design.
The limits of the claim
This page is about one script. It does not make your site consent-free:
- Ad and social pixels, embedded YouTube, chat widgets and A/B tools usually do require consent.
- Your own login cookies are a separate matter (strictly necessary cookies are their own category).
- Rules differ by jurisdiction and change. Nothing here is legal advice — it is a description of what the software does, precise enough that your lawyer can check it.
Why it is not negotiable for us
The no-personal-data property is the reason a founder can paste the tag without a consent conversation. That makes it a product constraint, not a feature flag: it cannot be relaxed later for a nicer retention chart. It is written into the app’s own engineering rules for exactly that reason.
Comparing the privacy-first tools? Plausible vs Fathom puts their published positions side by side.
Questions
- Does the agentsgym script set cookies?
- No. It sets no cookies and no persistent identifier of any kind, in first- or third-party context.
- What is stored per visitor?
- A daily hash: sha256(daily-rotating server salt + project + IP + user agent). The IP is used to compute that hash and then dropped — never stored, never logged. The hash cannot be reversed to an IP and changes every day, so it cannot follow a person across days or sites.
- So I never need a consent banner?
- Not because of this script. Other things on your page — ad pixels, embedded video, chat widgets, a different analytics tool — can still require consent. This page describes agentsgym’s behaviour, and is not legal advice for your site as a whole.
- What does the script actually send?
- A beacon with the path, the referrer and the site key, as text/plain so the browser skips the CORS preflight — navigator.sendBeacon cannot preflight, so a JSON content type would mean the beacon silently never sends. The ingest endpoint answers 204 to everything, including bad keys.
Try it on your own domain
One project is free: a daily Domain Rating reading, referring domains, cookieless pageviews and AEO scans — all readable by your agent over MCP.
Add your startup