Glossary

Personally identifiable information (PII)

Personally identifiable information (PII) is any data that can identify a specific individual, either on its own or in combination with other data you hold. In analytics it covers the obvious fields (name, email, phone) and the less obvious ones: IP addresses, device and cookie IDs, and the user ID that ties an event stream to a person.

user-09996
ext cust_009996
1,633
Events
317
Sessions
215
Pageviews
Created May 30 First seen 123d ago Last seen 4d ago Android 11 New York City, US
Activitylast 60 days
Identified properties1 trait
nameDiana Jones
Recent activitylast 10 events
  • app_close 4d ago
  • scroll 4d ago 72%
  • page_view 4d ago
  • app_open 4d ago
  • checkout_started 4d ago USD 416.21
  • add_to_cart 4d ago prod-0198
  • search 4d ago shirt
A profile is where identifiers accumulate: the traits you send on identify() sit alongside every event that person generated.

Direct and indirect identifiers

The useful split is not sensitive versus harmless, it is direct versus indirect. Direct identifiers name a person by themselves: full name, email address, phone number, government ID. Indirect identifiers single someone out once combined: an IP address, a device ID, a session ID, a postcode plus a birth date, or a user ID that maps to a row in your database.

Analytics runs almost entirely on indirect identifiers, which is why “we don’t collect PII, we only use IDs” is not the defence it sounds like. If the ID can be resolved back to a person, by you or by anyone with the other half of the mapping, it is personal data in every regime that matters.

Three regimes, three words

The terminology shifts by jurisdiction, and the scope widens as it goes:

  • PII is the traditional US term and the narrowest, historically focused on data that identifies someone directly.
  • Personal data is the GDPR’s term: any information relating to an identified or identifiable natural person, explicitly including online identifiers.
  • Personal information is the CCPA’s term and the broadest, naming IP addresses, device identifiers, and “internet or other electronic network activity information” such as browsing history, and extending to households.

India’s DPDP Act uses “digital personal data” and lands close to the GDPR. If you operate across markets, engineer to the widest definition that applies to you rather than maintaining three mental models.

How analytics collects PII by accident

Deliberate collection is easy to govern, because someone chose it. The leaks are what cause incidents:

  • Query strings. Password-reset links, magic links, and OAuth callbacks routinely carry a token or an email address, and every pageview event captures the URL.
  • Path segments. /invoices/user@example.com or /u/42/settings puts an identifier straight into the event.
  • Page titles. A title can imply a diagnosis, a financial position, or a legal matter that no field ever recorded. California’s largest CCPA settlement to date turned on exactly this.
  • Event properties. A well-meaning track('signup', { email }) puts a direct identifier on every row, forever.
  • Free-text fields. Anything a user typed can contain anything at all.

Auditing a tracking plan before it ships is far cheaper than purging a column afterwards. Our free PII event auditor flags likely identifiers in an event schema, entirely in the browser.

Minimisation is the only durable control

Every other control is a mitigation of a decision you already made. Data you never collected needs no retention policy, appears in no breach, and takes no work to erase on request. Start from the questions you actually have to answer, capture what those need, and drop the rest, especially anything you are keeping because it might be useful later.

How Pug handles it

Pug starts cookieless: nothing is written to the device and identity is derived server-side from a salt that is deleted daily, so events are pseudonymous until you choose otherwise. The direct identifiers on a profile are the traits you pass to identify(), so the field list is yours to keep short.

For the most common leak, the Web SDK redacts sensitive URL parameters before the event is sent. The default list covers token, access_token, refresh_token, id_token and any key ending in _token, plus code, auth, authorization, api_key, apikey, secret, sig, signature, password, passwd, pwd, otp, email, phone and ssn. Values are replaced with redacted, and the list is configurable:

init(projectId, { apiKey, redactUrlParams: ['invite', 'ref_code'] })

Redaction applies to the captured URL, the referrer, and a form’s action, in both the query string and the fragment, and it runs before beforeSend so a hook can mask more. Passing an array replaces the default list rather than extending it, and the _token suffix rule rides the default list only, so a replacement has to name every param it wants. Note also that autocaptured form events carry the form’s id, name, and scrubbed action URL, never what was typed into a field.

When someone asks to be forgotten, erasure is a server-side operation against the store you hold: one API call hard-deletes a data subject’s events, sessions, aliases, and profile, and returns a request id you can poll to confirm it finished. Self-hosting takes it further, since the data never reaches anyone else at all, see privacy-first analytics for the wider picture.

FAQ

Personally identifiable information (PII): common questions

What is PII?

Personally identifiable information is any data that can identify a specific person, either on its own or when combined with other data you hold. Names, emails, and phone numbers are the obvious cases, but IP addresses, device IDs, and the user ID you attach to an analytics event all qualify too.

Is an IP address PII?

Treat it as personal data. The GDPR covers it as an online identifier, and California’s CCPA lists IP addresses explicitly in its definition of personal information. It can be pseudonymous rather than directly identifying, but that is a reason to handle it carefully, not a reason to consider it out of scope.

What is the difference between PII, personal data, and personal information?

They are three regimes’ words for overlapping ideas. PII is the older US term and is the narrowest. Personal data is the GDPR’s term and covers anything relating to an identifiable person, directly or indirectly. Personal information is California’s term and is broader still, explicitly including household-level data and browsing activity. Build to the widest definition that applies to you.

Does product analytics collect PII?

Almost always, at least indirectly. Tying events to a person is the point of product analytics, so the identifier itself is personal data. The accidental collection is what catches teams out: emails and reset tokens sitting in query strings, a user ID in a page path, or an event property named for something sensitive.

See it in Pug.

Open-source product analytics with unified profiles. Self-host under AGPL-3.0, or use the free cloud during open beta.

Questions? Email hello@pug.sh