3J Analytics privacy
Placeholder wording. A separate review will replace this page. It describes the product as built today.
This draft covers 3J Analytics, the website counting product from 3J Systems LLC. It is not the privacy notice for the rest of 3j-systems.com.
Who this is about
Two groups are involved. A company creates an account (name, email, password, optional company name). That company's website visitors are measured by the script. Visitor rows do not store the visitor's name or email.
What a visitor measurement stores
- Page path. The query string and the #fragment are removed before storage, except the five fields utm_source, utm_medium, utm_campaign, utm_content, and utm_term when they match a short safe pattern.
- Whether a gclid or fbclid parameter was present. The value of that parameter is not stored.
- Referring site host only, grouped as search, social, direct, or another site. The rest of the referrer URL is dropped. For a 404, the referring path on the same site may be stored.
- Coarse device size: mobile, tablet, or desktop.
- Page-load duration in milliseconds, from the browser's Navigation Timing, with no resource list.
- Goal events: that a form was submitted, an outbound host was clicked, a phone or email link was clicked, or a file path was downloaded. Form field values, phone numbers, and email addresses are not stored.
- Time of the page view.
- A visitor key: HMAC-SHA256 of the site id and a daily network hash, keyed with a salt that changes each calendar day in Eastern Time. The salt is not stored. The raw IP address is not stored. People who share a network on the same day can share a key. The key changes the next day.
- A session key for exit pages and for tying a later goal to the source of an earlier page in the same half hour. It is not reversible to a person.
What is processed and not stored
The IP address is read in memory. It is used to build a daily hash for the visitor key, for some automated traffic, and for a rate-limit key. The raw address is not written to the analytics tables and is not written to application logs by this product. The user-agent string is read in memory to filter bots and is not stored. The browser sends that header on its own.
The script we ship sets no cookies and does not write an identifier to localStorage. No cookies are required for counting. Uptime checks request the homepage and any extra URLs the customer lists. They store the status code and the time, not the page body. Revenue webhooks store an amount, a currency, and a source. They do not store the buyer's name, email, or address. An agency may store a client email address the agency types in, and only emails that address when the agency opts in. The message has an unsubscribe link.
What we do not collect from visitors
No names, no email addresses, no raw IP addresses, no user-agent strings, no click-id values, and nothing sent to Google. We never sell your data or use it for ads.
Account and billing data
We store the account email, a password hash, an optional company name, email verification time, and, if you start a paid plan, a Stripe customer id. Stripe processes the card. We do not store the card number.
How long
Raw page rows are kept for 90 days. Daily totals are kept for 25 months. Both windows are settings on the server.
Your choices
Email rick@3j-systems.com to ask about this draft. The final notice will replace this page after legal review.