siteline Start free trial Log in

Unique visitors without cookies

See your data

"Unique visitors" in SiteLine does not mean unique humans. It means distinct visitor hashes in the range. The hash is built on the server from an anonymized IP, the user agent string, and a salt that rotates every calendar day. There is no persistent first-party analytics cookie in this version. The salt is not shown to you.

If you needed a 30-day logged-out user count, this product will not give you one you can defend. If you needed "roughly how many browsers showed up today," it will.

How the hash is built

The tracker does not send device, browser, or OS in the payload. Those are parsed from the user agent on ingest. Country comes from request geography headers when present.

Bots with obvious crawler UAs are dropped before they become visitors.

What that does to every report

Same person, two days. Monday visitor ≠ Tuesday visitor. A 7-day "visitors" total can be several times the number of humans who actually returned. Pageviews do not have this problem; they are counts of hits.

Same person, two devices. Two visitors, always. There is no User-ID, no Google signals, no login stitching.

Office NAT / campus / CGNAT. Many humans share a /24 and sometimes a UA. They can collapse into one visitor for the day. Shared NAT inflates undercount; daily rotation inflates overcount. Both are in the same metric. Do not pretend it nets to "truth."

Goals. Conversion rate uses distinct hashes who matched the rule over distinct hashes in the range. A returning subscriber who converts next week does not attach to last week's hash.

Funnels. Steps intersect hashes inside the selected range, and hashes do not survive midnight. Cross-day checkout funnels undercount. Same-visit funnels are the honest use.

Live. Roughly the last 30 minutes of those hashes and their pageviews. It is not "users online" in the GA4 sense.

Why this exists

Cookies for analytics mean banners, consent logs, and a file on disk that outlives the visit. SiteLine's model is: do not store that file; do not claim a person across days. You still send page URL, path, hostname, referrer, event name, optional properties, and UTMs on the page URL. Cookieless is not "no data." It is "no cookie-shaped identifier."

If counsel asks whether a banner is required for this tracker alone, the product description is cookieless by default. Other tags on the page are your problem. The binding policy is the site privacy policy, not this article.

How to talk about it in a report

Say visitors (daily) or daily identities, not users. Put pageviews next to it so a spike in visitors on a 30-day chart is not mistaken for a 30× audience. When a client compares to GA4 Users, answer with the identity paragraph above, not with a fudge factor.

Do not try to "fix" uniqueness by stuffing an email into event properties. Properties are capped (10 keys, 64/256 length, string/number/boolean) and you should not put PII there anyway.

A first-party proxy changes whether the script is blocked. It does not change the hash. Same salt, same truncation.

What to use instead of 30-day users

SiteLine is the on-site and GSC layer. It is not your CRM.

FAQ

Is this the same as a session?

No. There is no session timeout, no session id, no engagement-time clock. A hash is an identity for that day on that truncated network and UA.

Not in this version. The tracker is cookieless. If you need cookie identity, you need a different product (and a banner).

Why did visitors jump when I widened the date range more than pageviews did?

Because returning humans mint a new hash each day. Pageviews sum. Visitors distinct. A loyal daily reader is ~30 visitors in a 30-day range and maybe 30 pageviews if they read one page a day — or 300 pageviews if they binge. Read both columns.