Delete a user's data under GDPR request
Use this procedure when a customer Owner forwards a GDPR Article 17 (“right to erasure”) request for a single user’s data inside their org. You run it on the Owner’s behalf via scoped impersonation (D80) because the customer-facing UI does not yet ship a per-user purge. For full-org deletion see the customer-facing Delete organisation instead — this page is the per-user variant.
Procedure
- Verify the request reaches you via an authenticated Owner — either a signed ticket in the support tracker or an email from the Owner’s on-file address. Reject anonymous requests.
-
Open
/platform/orgs/{org_id}and confirm the org hasallow_platform_impersonation = true. If false, reply to the Owner asking them to re-enable it in Owner > Danger zone (US-PLAT-12). You cannot proceed otherwise. -
Mint a scoped impersonation token (US-PLAT-8). Set
reason = "GDPR Art.17 deletion for user <uuid> per ticket <id>"andticket_refto the support ticket number. TTL is 30 minutes and cannot be refreshed.
-
Run the purge script from the ops host:
Terminal window cd cloud && go run ./cmd/gdpr-purge-user \--org-id=<org_id> --user-id=<subject_user_id> \--impersonation-id=<token_id> --confirmThe script refuses to run without
--confirmand without a validimpersonation_id. -
Verify in the platform audit log: one
platform.impersonation_started, oneuser.gdpr_purged, and oneplatform.impersonation_endedrow, all correlated byimpersonation_id. Verify the target org’s audit log shows the same sequence withactor_type = 'platform_admin_impersonating'(US-PLAT-11).
- Reply to the Owner on the ticket. Attach the
impersonation_idand the three audit row IDs. Close the ticket.
Common variations
- Owner asks for full-org deletion instead: direct them to Delete organisation — the Owner runs it themselves, not you. If the Owner cannot reach the UI (locked out, lost MFA), use Archive an unpaid org as the precursor.
- Subject is the Owner themselves: refuse. An Owner deleting themselves orphans the org. Ask for Transfer Ownership first, then re-request.
Related
- Scoped impersonation — the D80 token lifecycle.
- Audit expectations — what the dual-write looks like for the customer.
- Delete organisation — full-org variant, customer-driven.