---
title: actionAddProduct
section: hooks
slug: actionAddProduct
hook_type: action
category: cart
location: FO
since_version: 1.5
source_url: "https://ayudaprestashop.es/hooks/actionAddProduct"
---

# Hook `actionAddProduct`

| Propiedad | Valor |
| --- | --- |
| Tipo | Action |
| Localizacion | FO |
| Categoria | cart |
| Desde version | 1.5 |

## Descripcion

Se ejecuta cuando un producto es añadido al carrito de compras. Este hook se dispara cada vez que un cliente agrega un articulo, permitiendo interceptar la accion para registrar analiticas, aplicar reglas de negocio personalizadas o sincronizar el carrito con sistemas externos. Se dispara tanto al añadir un nuevo producto como al incrementar la cantidad de uno existente.

## Parametros

| Nombre | Tipo | Requerido | Descripcion |
| --- | --- | --- | --- |
| `cart` | `Cart` | si | Objeto Cart actual del cliente |
| `product` | `Product` | si | Objeto Product que se esta añadiendo al carrito |
| `id_product_attribute` | `int` | si | ID de la combinacion seleccionada (0 si el producto no tiene combinaciones) |
| `id_customization` | `int` | si | ID de personalizacion del producto (0 si no aplica) |
| `quantity` | `int` | si | Cantidad que se esta añadiendo |
| `operator` | `string` | si | Operacion realizada: 'up' para añadir, 'down' para reducir |

## Valor de retorno

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

## Disparado por

| Contexto | Clase | Metodo | Fichero |
| --- | --- | --- | --- |
| CartController | `CartController` | `processChangeProductInCart()` | `controllers/front/CartController.php` |

**Paginas**: `cart`

## Registro del hook

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

## Ejemplo de uso

```php
<?php
/**
 * Hook actionAddProduct — producto añadido al carrito
 */
public function hookActionAddProduct(array $params)
{
    /** @var Cart $cart */
    $cart = $params['cart'];
    /** @var Product $product */
    $product = $params['product'];
    $quantity = (int) $params['quantity'];
    $idAttribute = (int) $params['id_product_attribute'];

    // Ejemplo: Registrar evento para analiticas
    Db::getInstance()->insert('mymodule_cart_events', [
        'id_cart'     => (int) $cart->id,
        'id_product'  => (int) $product->id,
        'id_product_attribute' => $idAttribute,
        'quantity'    => $quantity,
        'operator'    => pSQL($params['operator']),
        'id_customer' => (int) $cart->id_customer,
        'date_add'    => date('Y-m-d H:i:s'),
    ]);

    // Ejemplo: Añadir producto regalo si se cumple condicion
    if ($product->id == Configuration::get('MYMODULE_TRIGGER_PRODUCT')) {
        $giftId = (int) Configuration::get('MYMODULE_GIFT_PRODUCT');
        if ($giftId && !$cart->containsProduct($giftId)) {
            $cart->updateQty(1, $giftId, null, false, 'up');
        }
    }
}
```

## Notas y gotchas

- El parametro operator puede ser 'up' (añadir) o 'down' (reducir). Ten cuidado de verificarlo antes de actuar.
- Este hook se dispara ANTES de que el carrito sea guardado en BD — si necesitas el carrito ya persistido, usa actionCartSave.
- No confundir con actionBeforeCartUpdateQty, que se ejecuta antes de la actualizacion real de cantidad.
- El objeto Product puede no tener precio especifico cargado — usa Product::getPriceStatic() si necesitas el precio real.
- En contexto de API/webservice, este hook puede no dispararse si el carrito se modifica directamente.

## Hooks relacionados

- [`actionCartSave`](https://ayudaprestashop.es/hooks/actionCartSave)
- [`actionBeforeCartUpdateQty`](https://ayudaprestashop.es/hooks/actionBeforeCartUpdateQty)
- [`displayCartExtraProductActions`](https://ayudaprestashop.es/hooks/displayCartExtraProductActions)

## Guias relacionadas

- [modules/main-file](https://ayudaprestashop.es/modules/main-file)
- [cart/cart-rules](https://ayudaprestashop.es/cart/cart-rules)

## Historial de versiones

| Version | Cambio |
| --- | --- |
| 1.5 | Introducido con los parametros basicos |
| 1.7 | Sin cambios significativos. Compatible con PS 1.7+ |


---

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