Guides · Data · ~5 min

How to set up seops Analytics (cookieless measurement)

Add one line to your site and get visitor measurement with no cookies and no persistent identifier; instead of GA4 or next to it.

seops Analytics is seops's own hosted, cookieless web analytics. A 2.1 KB script (1.2 KB compressed) goes on your site; it uses no cookies, no localStorage and no persistent identifier. A visitor is the IP + browser details hashed with a salt that changes daily; the raw IP is never written anywhere. The Traffic pages in the dashboard work with the same report shape; extras GA4 does not have (scroll depth, exit pages, events, browser/OS, UTM campaigns, bot share) are added.

What opens in seops

  • 4 · Tracking › Traffic › General: visitors, sessions, engagement, channels, landing pages, traffic from AI assistants, live
  • 4 · Tracking › Traffic › Extras: scroll depth, entry/exit pages, events and goals, browser/OS, UTM, hostnames, bot share
  • Navigation and site search need no extra setup
  • No cookies, browser storage or persistent identifier; a ready sentence for your privacy policy

Steps

  1. Copy the snippet

    In the dashboard open Settings › Project settings and find the Analytics source card (or the Analytics step in Account › Setup). The data-site value in the snippet is your site key; it is not a secret, and only hits from this domain are counted.

    <script defer src="https://i.seops.app/s.js" data-site="SITE_KEY"></script>
  2. Add it to the <head> of every page

    WordPress: before wp_head() in the theme's header.php, or into “Header” with the WPCode / Insert Headers and Footers plugin. Cloudflare Workers / Pages: in the <head> of index.html and HTML templates; no Zaraz needed. Astro / Next.js / Nuxt: once in the shared layout (Layout.astro, app/layout.tsx, useHead). Shopify: before </head> in theme.liquid; Wix: Settings → Custom code → Head.

  3. Single-page apps (SPA)

    Page views are sent automatically after pushState, replaceState and popstate; no router changes needed. Duration and scroll depth are sent once when the visitor leaves the page (pagehide).

  4. Send events (optional)

    To count conversions call window.seops(name, props): up to 8 properties, string values. Names you enter under Goal events on the Analytics source card count as “key events”; if the field is empty every event counts.

    seops('signup', { plan: 'pro' });
  5. Exclude paths (optional)

    To leave out admin and test pages add data-exclude to the script tag; separate several patterns with commas, * is a wildcard. localhost, 127.0.0.1, file: and automation browsers (navigator.webdriver) never send anyway.

    <script defer src="https://i.seops.app/s.js" data-site="SITE_KEY" data-exclude="/admin/*,/test/*"></script>
  6. Site search (optional)

    The script does not send the query part of the address; only UTM tags and the presence of an ad click ID go out. Values that tools or forms write into the address never reach seops, and a changing query does not count as a new page view. To measure site search, allow the search parameter explicitly with data-search (if Settings › Project settings › Analytics source › Site search parameter is filled, the snippet from the dashboard already includes it). Don't use the same name on tools that write user input into the address.

    <script defer src="https://i.seops.app/s.js" data-site="SITE_KEY" data-search="q"></script>
  7. Verify

    Settings › Project settings › Analytics source › Verify looks for the script on your home page and checks whether the first hit has arrived; either one is enough. Once verified the source becomes seops Analytics. On cached sites the first hit can take a few minutes.

  8. Moving from GA4

    You do not have to remove the GA4 tag; both run side by side. The dashboard shows the source you pick in the Analytics source card, and you can switch back to GA4 any time. Historical GA4 data stays in GA4; seops Analytics data starts on the day the script is added. Returning users (across days) and ad attribution exist only in GA4.

  9. Add to your privacy policy

    Add the sentence below to your site's privacy policy (the Turkish version can be copied in the dashboard). For this site seops is the data processor; the Data Processing Addendum and the subprocessor list are on seops.app's legal pages.

    This site uses seops Analytics for visit statistics: no cookies are set, the IP address is hashed with a salt that changes daily and is not stored, and no visitor identifier is kept. Details: seops.app/legal/privacy

How to use it in seops

  • 4 · Tracking › Traffic › General: channel and period selection, comparison; the badge at the top shows the source
  • 4 · Tracking › Traffic › Extras: scroll depth, entry and exit pages, events, browser/OS, UTM, bot share
  • Settings › Project settings › Analytics source: additional hostnames, site search parameter, goal events, 30-day quota meter (100,000 page views per month included)

Questions

Do I need a cookie banner?

That depends on the law that applies to you and on the other tools your site runs; the decision is yours. The facts on the seops Analytics side: 1) No cookies or localStorage are written. 2) No persistent visitor identifier; IP and browser details are hashed with a salt that changes daily, and each day's salt is deleted two days after that day ends. 3) Raw IP and User-Agent are never written anywhere, not even in logs. 4) Data is processed only for aggregate visit statistics; no ads, profiling or sharing with third parties. You still need to mention it in your privacy policy; the ready sentence is above.

Why don't I see returning users?

The visitor hash changes every day, so the same person counts as a new visitor the next day. Repeat visits within the same day are known. That is the price of keeping no persistent identifier.

Are bots counted?

Known crawlers (Googlebot, bingbot, GPTBot, ClaudeBot, PerplexityBot, headless, curl…) are flagged separately and do not enter visitor counts; their share is shown under Extras.

How long is data kept?

Raw hits for 90 days; daily summaries for the term of the contract. Periods longer than 90 days are reported from the summaries.

What happens over the quota?

Measurement does not stop. 100,000 page views per site per month are included; over that the dashboard warns you, and a credit pack opens later.

Start with one site, free

The first site is free forever and asks for no card. Every extra site is $2.50 a month.