Action guide
Evidence that erasure actually happened
POST
/v1/events · user.account.deletedEmit a `user.account.deleted` event when you process a deletion request. Pair it with a call to `DELETE /v1/actors/:id` to anonymize the rest of the trail.
When to emit
After the user row is marked deleted and before your async workers purge derived data.
Example payload
await recalled.events.create({
action: "user.account.deleted",
actor: { id: user.id, email: user.email },
organization: user.organizationId,
metadata: {
reason: "value",
retainUntil: "value"
},
});Metadata to include
Keep metadata flat and consistent across your service so it plays well with search and CSV exports.
| Key | Purpose |
|---|---|
reason | user_requested, gdpr_erasure, admin_manual, inactivity |
retainUntil | Earliest date data may be permanently purged |
Suggested retention
Keep for the full statutory retention period of your jurisdiction, typically 3 to 5 years.