What we collect

Every field the Wholetally script and edge collector send, and what we keep. If it isn’t on this page, we don’t collect it.

Sent by the script

The script sends one small request per pageview or event. These are all the fields in it.

FieldWhat it isWhat we store
tHit type: pageview or eventYes
sYour site’s domain, as set in data-siteYes
uThe page URL. We keep the path and UTM tags; other query parameters are droppedPath and UTM tags only
rThe referrer, the page the visitor came fromHostname, and whether the visit is unique
wWindow width in pixelsAs a bucket: mobile, tablet or desktop
lBrowser language, such as nl-NLYes
n, pEvent name and properties, only when you call wt.track()Yes
ridRequest ID set by the edge collector, used to match script and edge hitsOnly until the match is made

Added by the server

Every request carries some information by itself. This is what we do with it.

FieldWhat it isWhat we store
CountryFrom the country header your CDN or proxy adds (such as CF-IPCountry). We don’t look up IP addressesCountry code
User agentSent by every browser with every requestAs browser, OS, device type, or crawler name
IP addressSeen by the server that receives the request. When you use the first-party proxy, it doesn’t reach us at allNever
TimeWhen the hit arrivedYes

Sent by the edge collector

Only if you install the Cloudflare Worker or Vercel middleware.

FieldWhat it isWhat we store
PathThe page that was servedYes
User agentTo tell people from crawlersAs browser, OS, device type, or crawler name
Country headerThe country your CDN already determinedCountry code
ReferrerOnly if the browser sent oneHostname
Request IDTo deduplicate against the scriptOnly until the match is made

Revenue events

Only if you connect Stripe.

FieldWhat it isWhat we store
Amount and currencyFrom the verified Stripe webhookYes
wt_source, wt_medium, wt_campaign, wt_landingThe visit’s source, passed by your checkout as metadataYes
Payment IDTo handle refunds and avoid counting a payment twiceYes
Customer name, email, card detailsPart of the payment, but not something we needNever read or stored

What we never do

  • Set cookies, or use localStorage, sessionStorage or any other storage on the visitor’s device.
  • Create a visitor, user or device ID, or fingerprint a browser.
  • Store IP addresses.
  • Sell data or use it for advertising.

Optional: daily hash mode

Off by default. If you turn it on for a site, the server combines the site, IP address and user agent with a salt that changes every 24 hours, and keeps only the resulting hash. The salt is thrown away when it changes, so yesterday’s hash can’t be linked to today’s. It gives a better count of unique visitors within one day. The strict compliance mode doesn’t allow it.

Retention and location

You choose how long raw hits are kept for each site; daily totals can be kept longer. All data is planned to be stored and processed in the EU. The script is open source under the MIT licence, so you can check every line it runs.

Designed to work without cookies and without personal data. Whether you need a consent banner depends on your country and how you use it. This may let you skip the banner in some EU countries, but check with your legal advisor. Legal review pending.

Count the visitors you’ve been missing.

30-day free trial, no card needed. Create an account with your work email and add your first site.

Start 30-day trial