By default, Data Loader’s main screen shows Insert, Update, Upsert, Delete, Export, and Export All. Hard Delete is hidden until two things are true: the running user has the right permission, and Data Loader is configured to use the Bulk API.
Step 1 — Grant the Bulk API Hard Delete permission
In Salesforce Setup:
- Setup → Users → Permission Sets (recommended) or Profiles.
- Open the permission set or profile assigned to the user who’ll run the deletes.
- Edit System Permissions (in a permission set) or Administrative Permissions (in a profile).
- Tick Bulk API Hard Delete.
- Save.
Permission sets are the modern way — you can assign the entitlement without touching everyone’s profile, and revoke it easily after the cleanup run.
Step 2 — Turn on Bulk API in Data Loader
Hard delete is Bulk API only. The SOAP-API path doesn’t expose it.
- Open Data Loader.
- Settings → Settings.
- Tick Use Bulk API.
- Click OK.
When you re-log in, the main screen now shows a Hard Delete button alongside Delete.
Step 3 — Run a hard delete
The flow is identical to a normal Delete:
- Click Hard Delete.
- Log in, pick the object, choose the CSV (Id column at minimum).
- Map the Id column.
- Run. The records are gone from Salesforce — no recycle bin entry.
Why this is gated
Hard delete is irreversible. Salesforce splits the permission out from generic Delete so an org’s admin can’t accidentally hard-delete production data — they need an explicit, named permission, granted by a higher-up admin, plus the conscious step of flipping Use Bulk API.
Troubleshooting
If the Hard Delete button is greyed out or missing after the setup steps:
- Logged into the wrong sandbox/production? Hard Delete inherits from the user logged in — not the admin who configured Data Loader.
- Permission set not assigned? Open Setup → Users → [user] → Permission Set Assignments and confirm.
- Bulk API checkbox didn’t stick? Tick it again under Settings → Settings; it’s per-installation, not per-org.
- Profile cached? Log out of Data Loader and log back in to pick up the new permission.
Org-wide alternative
For a one-time cleanup, granting the permission, running, and revoking is fine. For ongoing scheduled hard deletes (e.g. nightly purge of synthetic test data), put the permission on a dedicated integration user with limited access scoped to the objects in scope. Don’t run scheduled hard deletes as a real admin’s account.
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.