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

# Hook `actionProductUpdate`

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

## Descripcion

Se ejecuta cuando un producto existente es actualizado en el back office. Se dispara despues de guardar los cambios del producto en la base de datos. Ideal para detectar cambios en productos ya existentes y reaccionar ante modificaciones de precio, stock, descripcion, etc.

## Parametros

| Nombre | Tipo | Requerido | Descripcion |
| --- | --- | --- | --- |
| `id_product` | `int` | si | ID del producto actualizado |
| `product` | `Product` | si | Objeto Product con los datos actualizados |

## Valor de retorno

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

## Disparado por

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

**Paginas**: `admin-products`

## Registro del hook

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

## Ejemplo de uso

```php
<?php
/**
 * Hook actionProductUpdate — producto actualizado
 */
public function hookActionProductUpdate(array $params)
{
    $idProduct = (int) $params['id_product'];
    /** @var Product $product */
    $product = $params['product'];

    // Ejemplo: Detectar cambio de precio y notificar a clientes con alerta
    $oldPrice = (float) Db::getInstance()->getValue(
        'SELECT price FROM `' . _DB_PREFIX_ . 'mymodule_price_history`
         WHERE id_product = ' . $idProduct . '
         ORDER BY date_add DESC LIMIT 1'
    );

    $newPrice = (float) $product->price;

    // Guardar historial de precio
    Db::getInstance()->insert('mymodule_price_history', [
        'id_product' => $idProduct,
        'price'      => $newPrice,
        'date_add'   => date('Y-m-d H:i:s'),
    ]);

    // Si el precio bajo, marcar para notificacion
    if ($oldPrice > 0 && $newPrice < $oldPrice) {
        $reduction = round((1 - $newPrice / $oldPrice) * 100, 1);
        Db::getInstance()->insert('mymodule_price_alerts_queue', [
            'id_product'   => $idProduct,
            'old_price'    => $oldPrice,
            'new_price'    => $newPrice,
            'reduction_pct'=> $reduction,
            'processed'    => 0,
            'date_add'     => date('Y-m-d H:i:s'),
        ]);
    }
}
```

## Notas y gotchas

- Solo se dispara para productos que ya existen — para nuevos, usa actionProductAdd.
- El producto ya tiene los datos actualizados cuando se ejecuta este hook.
- Para capturar actualizaciones a nivel ORM (no solo desde el controlador admin), usa actionObjectProductUpdateAfter.
- En PS 1.7+ con el formulario Symfony, el orden de ejecucion de hooks puede variar respecto a 1.6.
- Si necesitas capturar tanto creaciones como actualizaciones, usa actionProductSave.

## Hooks relacionados

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

## 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. Sin cambios en parametros |
| 8.0 | Sin cambios. Compatible |


---

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