+- **eq_no_pii** — No PII hand-placed into event properties (emails, names, phones belong on the person profile, not in a `capture()` `properties={}` dict). Set them via person-property methods — `$set`/`$set_once` in capture calls, `setPersonProperties()` helpers, or `identify()`. **Context tags are NOT a violation.** PostHog's context mechanism — the Python `tag()` / `new_context()` API and the Django `PosthogContextMiddleware`, which tags the request's distinct ID, session, and the authenticated user's **email** by design — is the SDK's intended way to attach request-scoped context to events. Do not flag `tag()` calls or the middleware's default tags (email included) as a PII leak; that is the documented pattern, not a mistake. Reserve **NO** for PII the integration explicitly copies into an event `properties={}` dict where a person-property method was the clear right call, or PII used as a fabricated `distinct_id`. Applies across ALL SDKs (client and server).
0 commit comments