Skip to main content

SF-0225 · Concept · Medium

What is hard delete in Salesforce?

✓ Verified by Vikas Singhal · Last reviewed 5/17/2026 · Updated for Spring '26

A hard delete removes records from Salesforce permanently and immediately, skipping the recycle bin entirely. Once a hard delete commits, the records are unrecoverable through any UI or API — no undelete, no 15-day grace window, gone.

How it compares to a normal delete

Soft delete (plain Delete)Hard delete
Recycle bin?Records sit there for up to 15 daysBypassed entirely
Recoverable?Yes — Undelete from recycle bin, or Database.emptyRecycleBin reverseNo
Storage freedOnly after the bin purgesImmediately
Async?EitherBulk API only
Permission neededDelete on the objectDelete + Bulk API Hard Delete

When to use it

Hard delete exists for cases where the recycle bin is actively in the way:

  • Compliance / GDPR-style “right to erasure” — the regulation says delete, you can’t have copies waiting around for 15 days.
  • Loading test data and immediately removing it. Keeps the bin clean and frees storage.
  • Massive cleanup loads. A 5-million-row delete to the recycle bin would blow the bin’s capacity (and trigger cascading auto-purges anyway). Hard delete sidesteps that.
  • Releasing storage now. Approaching your data-storage limit and the bin is full of recently-deleted rows? Hard delete frees space immediately.

Why it’s restricted

It’s irreversible, so Salesforce gates it behind:

  1. The Bulk API Hard Delete profile/permission set entitlement.
  2. The Use Bulk API option in Data Loader — hard delete only goes through Bulk API, not SOAP API.

Even an admin with Modify All Data doesn’t get hard delete unless this specific permission is granted. See How to enable the Hard Delete option for the steps.

Things still standard

  • Cascade. Hard-deleting a parent still hard-deletes master-detail children.
  • Triggers. before delete and after delete triggers fire — they can still call addError to veto.
  • Field-level security. Permissions are checked per the executing user.
  • Audit trail. The Setup Audit Trail records that a hard delete happened, but not the record contents.

What hard delete does NOT do

  • Doesn’t bypass validation rules or triggers.
  • Doesn’t bypass sharing — the user has to have delete access to each record.
  • Doesn’t delete related external system data — that’s your integration’s job.
  • Doesn’t free Salesforce file storage if the deleted records had attached Files (those are stored separately).

In an interview

Mention four points and you’ve nailed it:

  1. Bypasses the recycle bin.
  2. Permanent and irreversible.
  3. Requires the Bulk API Hard Delete permission.
  4. Bulk API only — not SOAP API, not the UI.

Verified against: Data Loader Guide — Performing a Hard Delete, Bulk API Developer Guide, Metadata API Developer Guide. Last reviewed 2026-05-17 for Spring ‘26 release.