---
title: actionProductDelete
section: hooks
slug: actionProductDelete
hook_type: action
category: product
location: BO
since_version: 1.5
source_url: "https://ayudaprestashop.es/hooks/actionProductDelete"
---

# Hook `actionProductDelete`

| Propiedad | Valor |
| --- | --- |
| Tipo | Action |
| Localizacion | BO |
| Categoria | product |
| Desde version | 1.5 |

## Descripcion

Se ejecuta cuando un producto es eliminado desde el back office. Se dispara antes de que el producto sea borrado de la base de datos, permitiendo limpiar datos asociados del modulo, eliminar archivos relacionados o notificar a sistemas externos de la baja del producto.

## Parametros

| Nombre | Tipo | Requerido | Descripcion |
| --- | --- | --- | --- |
| `id_product` | `int` | si | ID del producto que se va a eliminar |
| `product` | `Product` | si | Objeto Product que sera eliminado |

## Valor de retorno

- **Tipo**: `void`
- **Descripcion**: Este hook no espera valor de retorno

## Disparado por

| Contexto | Clase | Metodo | Fichero |
| --- | --- | --- | --- |
| AdminProductsController | `AdminProductsController` | `processDelete()` | `controllers/admin/AdminProductsController.php` |

**Paginas**: `admin-products`

## Registro del hook

```php
<?php
public function install()
{
    return parent::install()
        && $this->registerHook('actionProductDelete');
}
```

## Ejemplo de uso

```php
<?php
/**
 * Hook actionProductDelete — producto eliminado
 */
public function hookActionProductDelete(array $params)
{
    $idProduct = (int) $params['id_product'];

    // Ejemplo: Limpiar datos del modulo asociados al producto
    $tables = [
        'mymodule_product_config',
        'mymodule_product_seo',
        'mymodule_product_sync',
        'mymodule_price_history',
    ];

    foreach ($tables as $table) {
        Db::getInstance()->delete($table, 'id_product = ' . $idProduct);
    }

    // Ejemplo: Eliminar archivos personalizados del producto
    $customDir = _PS_MODULE_DIR_ . $this->name . '/uploads/products/' . $idProduct;
    if (is_dir($customDir)) {
        Tools::deleteDirectory($customDir);
    }

    // Ejemplo: Notificar eliminacion a marketplace externo
    Db::getInstance()->insert('mymodule_sync_queue', [
        'action'     => 'delete',
        'id_product' => $idProduct,
        'reference'  => pSQL($params['product']->reference),
        'processed'  => 0,
        'date_add'   => date('Y-m-d H:i:s'),
    ]);
}
```

## Notas y gotchas

- El producto todavia existe en BD cuando se ejecuta este hook — puedes acceder a sus datos.
- Limpia siempre los datos de tu modulo asociados al producto para evitar datos huerfanos.
- Para capturar la eliminacion a nivel ORM, usa actionObjectProductDeleteAfter.
- La eliminacion masiva de productos tambien dispara este hook para cada producto individual.
- En PS 1.7+ los productos tambien pueden desactivarse en lugar de eliminarse — este hook no se dispara para desactivaciones.

## Hooks relacionados

- [`actionProductSave`](https://ayudaprestashop.es/hooks/actionProductSave)
- [`actionProductAdd`](https://ayudaprestashop.es/hooks/actionProductAdd)
- [`actionObjectProductDeleteAfter`](https://ayudaprestashop.es/hooks/actionObjectProductDeleteAfter)

## Guias relacionadas

- [modules/main-file](https://ayudaprestashop.es/modules/main-file)
- [products/product-management](https://ayudaprestashop.es/products/product-management)

## Historial de versiones

| Version | Cambio |
| --- | --- |
| 1.5 | Introducido |
| 1.7 | Compatible con Symfony |
| 8.0 | Sin cambios. Compatible |


---

*Fuente: [https://ayudaprestashop.es/hooks/actionProductDelete](https://ayudaprestashop.es/hooks/actionProductDelete). Version Markdown generada automaticamente para consumo por LLMs.*
