A full teardown routine reused by the daily deletion job and by anywhere an account must be removed. Each step is independent and reported: a failed step never blocks the rest, because deleting most of an account and retrying the stragglers is better than deleting none. The linked signup is archived rather than destroyed, so the billing and contract record survives.
Also called: delete an account · close my account · data removal · offboarding
- 1The platform subscription is cancelled so billing stops.
- 2The external CRM sub-account is deleted; a 404 counts as success.
- 3The owner's login is unlinked from the account — the person's account is never deleted.
- 4Every account-scoped table is wiped in foreign-key-safe order, then settings singletons, then the account row.
- 5The linked signup is archived with reason 'account_deleted'.
- 6The table order list is the single source of truth, imported by the migration wizard's wipe too.
The header states the retry philosophy directly: 'a failed step never blocks the rest (we'd rather delete most of a tenant than none and retry the stragglers on the next cron pass — the run is idempotent).' Two decisions stand out as deliberate restraint: the owner's login is unlinked, not deleted, because a person may work at more than one company; and the signup is archived rather than hard-deleted 'unlike the test-junk hard-delete route', because the billing and contract history is a record the vendor still needs after the customer leaves.
- Partial deletions leaving orphaned rows across dozens of tables.
- A single failing external API call blocking the entire teardown.
- Deleting a person's login when they may work for another company on the platform.
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →