Blog: Automated GDPR Data Deletion — Shipped in v1.0.32
Automated GDPR Data Deletion Is Now Live
v1.0.32 | Nightly Batch Workflow
Complying with GDPR's right-to-erasure obligation just got a lot simpler. Starting with v1.0.32, SaaS Factory ships a fully automated GDPR Data Deletion Processor — a nightly batch workflow that finds pending deletion requests, wipes all associated user data across the platform, and emails the user a confirmation. No human in the loop required.
The Problem It Solves
Handling data deletion requests manually is slow, error-prone, and difficult to audit. Regulations require that requests are fulfilled within a defined window, which means missing one isn't just operationally embarrassing — it can be a compliance violation.
The new processor eliminates that risk entirely by running on a fixed schedule and driving every request through a clear, inspectable state machine.
What Happens Every Night at 01:00 UTC
- Sweep — The workflow queries
data_deletion_requestsfor any record that ispendingand whosescheduledFordate is in the past. - Lock — Each eligible request is immediately set to
processingso it can't be double-processed. - Delete —
executeUserDeletion()removes or anonymises the user's data across every relevant entity: their account, projects, pipeline runs, features, and releases. - Settle — The request is marked
completed(orfailedif something went wrong, with the error preserved for audit). - Notify — A confirmation email goes out to the user via Resend, closing the loop.
Built for Auditability
Every state transition is recorded in data_deletion_requests. If a deletion fails, the record stays in a failed state — it doesn't disappear — so your compliance team has a full history of what happened and when. The processing lock state also means a crashed run doesn't silently produce a half-deleted dataset.
Entities Covered
The processor reaches across the entire user data footprint:
- User accounts (
users) - Projects (
projects) - Agent pipeline history (
pipeline_runs) - Discovered features (
features) - Shipped releases (
releases)
Cooling-Off Period Support
Because the processor only picks up requests where scheduledFor <= NOW(), you can implement a cooling-off period (e.g. 14 or 30 days) simply by setting scheduledFor to a future date when the request is first created. The workflow handles the rest automatically.
Get Started
See the GDPR Data Deletion Processor feature docs for the full lifecycle diagram, SQL semantics, and failure-handling details.