How do I delete a user for GDPR across every store?
Make the delete path reach every place the person's data lives: the primary database, caches, search indexes, analytics, backups (on their own documented lifecycle), and any third-party processor you forwarded it to. When the right to erasure (GDPR Art. 17) applies, a forgotten copy is what defeats it, so the delete path has to reach them all.
Enumerate every store the data is in
List where the user's personal data actually lands: the main tables, derived stores like a search index or a cache, event and analytics pipelines, and processors you sent it to. A copy you forget is a copy that survives erasure.
Make deletion reach all of them
The account-deletion path should remove the user from each store and propagate a delete to processors. When you add a new store of personal data, update the delete path in the same change, not later.
Handle backups honestly
Backups have their own accepted handling under GDPR. Document how erasure applies to them rather than pretending a restore would not bring the data back.
async function deleteAccount(userId) { await db.users.delete(userId)+ await searchIndex.remove(userId)+ await processor.requestDelete(userId) return ok()}The deletion now reaches the search index and the processor, not just the primary database.