When someone asks what you hold about them, or asks you to delete it, you need to answer fast and be able to show you did. Data requests do both for the data the sign-in service keeps. There are two kinds:

What is covered

Rows in your own tables (an order, a review, a message) are not covered. Your application owns them. Export or delete them yourself, using the person’s id, before you erase the person.

In Studio

Users & auth → Records → Data requests lists every request handled in the environment: when, whether it was an export or an erasure, the person’s id, and what was found or removed. To make a request, open the person (Users & auth → Users), go to Security, and find Data requests:
  • Export their data downloads the JSON file.
  • Erase their data… asks you to type their email address. The button stays off until it matches exactly, so the wrong person can’t be erased by a misclick.

The record

Every request leaves a record so you can show it was handled. The record holds no personal data: the person’s id, a one-way hash of the email address they had, who asked, and counts. An erasure record says “2 sessions, 1 device and 14 sign-in records were cleared”, not who the person was. Exports themselves are not stored. They are returned once, to you.

From your code

All three need a secret key. An erasure fails with 400 if confirm is not the person’s email address (not case-sensitive).

A good routine

  1. Check who is asking. A request that arrives by email should come from the address on the account.
  2. Export and send the file to the person.
  3. For an erasure, delete the person’s rows in your own tables first, then erase the account.
  4. Keep the record. It is your proof, and it is safe to keep.

Events

user.data_exported and user.erased are emitted for each request. See Auth webhooks.

Users

Open a person and manage their account.

Sign-in activity

The log that erasure clears the personal parts of.