Hide the Delete Button User by User
Remove Delete from list rows, form views and the Actions menu for the users and models you choose — globally or per model — while every blocked attempt is captured in a full audit trail.
The problem
Anyone with write access to a record can usually delete it too, and Odoo's native access rights are too coarse to carve out a simple no-delete rule without risking other permissions. One careless click on a sales order, invoice or contact destroys data that audits and daily operations depend on, and there is no record of who tried.
The solution
Hide Delete Button hides the Delete action wherever it appears and blocks it server-side too, so restricted users cannot delete through the UI, RPC, server actions or imports. Configure the restriction globally or per model, per user, apply it in bulk with templates, and review every blocked attempt in an audit log.
Everything you need to lock down deletion
Every capability below is implemented in the module.
Hide Delete Everywhere
Removes the Delete action from list rows, the form Actions (kebab) menu and kanban cards in one consistent restriction, so nothing is left exposed in a view the admin forgot about.
Real Server-Side Enforcement
Restriction is enforced on the model itself, not just in the UI, so a blocked user cannot delete a record through RPC calls, server actions or the import wizard either.
Global or Per-Model Scope
Choose whether a user is restricted from deleting everything, allowed to delete everything, or given an explicit allow-list or restrict-list of specific models — one app covers both scopes that competitors split across two products.
Reusable Policy Templates
Build named templates for roles such as Manager, Reviewer or Sales Rep, then assign a template to any number of users instead of configuring each person by hand.
Bulk Apply Delete Policy
Use the Apply Delete Policy wizard to roll a mode, scope or template out to many users at once, so onboarding a whole department takes one action instead of dozens.
Native CSV Batch Import
Import user, model and restriction-status combinations through Odoo's standard CSV importer for fast onboarding or large-scale policy rollouts.
Deletion-Attempt Audit Log
Every blocked delete attempt is recorded with the user, model, affected records, reason and timestamp, giving administrators the accountability evidence audits ask for.
Admin Notification on Blocked Attempts
Optionally send administrators an inbox notification the moment a restricted user tries to delete a record, so risky behaviour surfaces immediately instead of after the fact.
Master Switch & Unrestricted Group
A single settings toggle turns the whole restriction on or off, and an Unrestricted group gives trusted users, such as super administrators, an explicit escape hatch.
How it works
Turn it on
Enable the master switch in Settings and decide whether blocked attempts should also notify administrators.
Define policies
Create per-user delete permissions or reusable role templates with a global, allow-list or restrict-list scope.
Roll out at scale
Assign policies with the bulk Apply Delete Policy wizard or import them from a CSV file for larger teams.
Review the audit trail
Check the deletion-attempt log any time to see exactly who tried to delete what, and when.
Frequently asked
No sales fog. If your question isn't here, email us and we'll answer it the same way.
It hides Delete consistently in list rows, the form Actions (kebab) menu and kanban cards, and blocks deletion server-side too, so the restriction cannot be bypassed through RPC calls, server actions or imports.
Buy it on the Odoo App Store
Purchase, download and install directly from the official Odoo Apps Store — you'll always get the latest supported build.
Hide Delete Button — Global & Per-Model, with Audit
Global or per-model delete restrictions enforced on the server, not just hidden in the interface, with reusable policy templates, bulk and CSV assignment, an attempt audit log and admin notifications on every block.
Buy on Odoo App Store