Trash (also known as soft delete) allows documents to be marked as deleted without being permanently removed. When enabled on a collection, deleted documents will receive a deletedAt timestamp, making it possible to restore them later, view them in a dedicated Trash view, or permanently delete them.
Soft delete is a safer way to manage content lifecycle, giving editors a chance to review and recover documents that may have been deleted by mistake.
To enable soft deleting for a collection, set the trash property to true:
When enabled, Payload automatically injects a deletedAt field into the collection's schema. This timestamp is set when a document is soft-deleted, and cleared when the document is restored.
Once trash is enabled, the Admin Panel provides a dedicated Trash view for each collection:
/collections/:collectionSlug/trashTrash view shows all documents that have a deletedAt timestampFrom the Trash view, you can:
deletedAt timestamp and return documents to their original stateWhen deleting a document from the main collection List View, Payload will soft-delete the document by default. A checkbox in the delete confirmation modal allows users to skip the trash and permanently delete instead.
Soft deletes are fully supported across all Payload APIs: Local, REST, and GraphQL.
The following operations respect and support the trash functionality:
findfindByIDupdateupdateByIDdeletedeleteByIDfindVersionsfindVersionByIDtrash BehaviorPassing trash: true to these operations will include soft-deleted documents in the query results.
To return only soft-deleted documents, you must combine trash: true with a where clause that checks if deletedAt exists.
Return all documents including trashed:
Return only trashed documents:
Return only non-trashed documents:
Return all documents including trashed:
Return only trashed documents:
Return only non-trashed documents:
Return all documents including trashed:
Return only trashed documents:
Return only non-trashed documents:
All trash-related actions (soft delete, permanent delete, restore) respect the delete access control defined in your collection config.
This means:
You can configure access control to allow some users to trash documents while restricting permanent deletion to admins only. This is useful when you want editors to be able to "delete" content (move to trash) but only allow administrators to permanently remove data.
The delete access control function receives a data argument that contains the document data being set during the operation:
data.deletedAt will be set to a timestampdata will be undefinedThis pattern is similar to how publish access control works with data._status.
In the Admin Panel, when a user has permission to trash but not permanently delete:
When a document is soft-deleted:
However, versions are still fully visible and accessible from the edit view of a trashed document. You can view the full version history, but must restore the document itself before restoring any individual version.