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

# Hook `actionProductAdd`

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

## Descripcion

Se ejecuta cuando un nuevo producto es creado en el back office. Se dispara despues de que el producto se guarda por primera vez en la base de datos. Util para inicializar datos adicionales del modulo, crear registros asociados o sincronizar el nuevo producto con sistemas externos.

## Parametros

| Nombre | Tipo | Requerido | Descripcion |
| --- | --- | --- | --- |
| `id_product` | `int` | si | ID del nuevo producto creado |
| `product` | `Product` | si | Objeto Product recien creado |

## Valor de retorno

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

## Disparado por

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

**Paginas**: `admin-products`

## Registro del hook

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

## Ejemplo de uso

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

    // Ejemplo: Inicializar configuracion del modulo para el nuevo producto
    Db::getInstance()->insert('mymodule_product_config', [
        'id_product'       => $idProduct,
        'auto_seo'         => 1,
        'sync_marketplace' => 0,
        'ai_description'   => 0,
        'date_add'         => date('Y-m-d H:i:s'),
    ]);

    // Ejemplo: Asignar automaticamente a categoria por defecto del modulo
    $defaultCategory = (int) Configuration::get('MYMODULE_DEFAULT_CATEGORY');
    if ($defaultCategory > 0) {
        $product->addToCategories([$defaultCategory]);
    }

    // Ejemplo: Registrar para generacion automatica de SEO
    if (Configuration::get('MYMODULE_AUTO_SEO')) {
        Db::getInstance()->insert('mymodule_seo_queue', [
            'id_product' => $idProduct,
            'type'       => 'new_product',
            'processed'  => 0,
            'date_add'   => date('Y-m-d H:i:s'),
        ]);
    }
}
```

## Notas y gotchas

- Solo se dispara para productos nuevos — para actualizaciones usa actionProductUpdate.
- El producto ya esta en BD con un ID valido cuando se ejecuta este hook.
- Para capturar la creacion a nivel ORM (incluyendo imports/API), usa actionObjectProductAddAfter.
- En PS 1.7+, puede dispararse en un contexto Symfony diferente al controlador clasico.
- Si necesitas capturar tanto creacion como actualizacion, usa actionProductSave.

## Hooks relacionados

- [`actionProductSave`](https://ayudaprestashop.es/hooks/actionProductSave)
- [`actionProductUpdate`](https://ayudaprestashop.es/hooks/actionProductUpdate)
- [`actionProductDelete`](https://ayudaprestashop.es/hooks/actionProductDelete)
- [`actionObjectProductAddAfter`](https://ayudaprestashop.es/hooks/actionObjectProductAddAfter)

## 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/actionProductAdd](https://ayudaprestashop.es/hooks/actionProductAdd). Version Markdown generada automaticamente para consumo por LLMs.*
