ACTION FO Desde 1.5

actionCustomerAccountAdd

~3 min de lectura

#Descripcion

Se ejecuta cuando un nuevo cliente crea su cuenta en la tienda. Se dispara despues de que el cliente es guardado en la base de datos, permitiendo ejecutar acciones post-registro como suscripcion a newsletters, envio de datos a CRMs, creacion de registros asociados o asignacion de cupones de bienvenida.

📍
Disparado por
  • AuthController::processSubmitAccount()controllers/front/AuthController.php

#Parametros

Nombre Tipo Requerido Descripcion
$newCustomer Customer Si Objeto Customer del nuevo cliente registrado
Retorno
void Este hook no espera valor de retorno

#Ejemplo de codigo

mymodule.php
php
<?php
public function install()
{
    return parent::install()
        && $this->registerHook('actionCustomerAccountAdd');
}
mymodule.php
php
<?php
/**
 * Hook actionCustomerAccountAdd — nuevo cliente registrado
 */
public function hookActionCustomerAccountAdd(array $params)
{
    /** @var Customer $customer */
    $customer = $params['newCustomer'];

    // Ejemplo: Crear cupon de bienvenida del 10%
    $voucher = new CartRule();
    $voucher->name = array_fill_keys(
        Language::getIDs(),
        'Bienvenido ' . $customer->firstname . ' - 10% descuento'
    );
    $voucher->code = 'WELCOME' . strtoupper(Tools::passwdGen(6));
    $voucher->reduction_percent = 10.0;
    $voucher->quantity = 1;
    $voucher->quantity_per_user = 1;
    $voucher->date_from = date('Y-m-d H:i:s');
    $voucher->date_to = date('Y-m-d H:i:s', strtotime('+30 days'));
    $voucher->minimum_amount = 20.0;
    $voucher->active = 1;
    $voucher->id_customer = (int) $customer->id;

    if ($voucher->add()) {
        // Registrar el cupon asignado
        Db::getInstance()->insert('mymodule_welcome_vouchers', [
            'id_customer'  => (int) $customer->id,
            'id_cart_rule' => (int) $voucher->id,
            'code'         => pSQL($voucher->code),
            'date_add'     => date('Y-m-d H:i:s'),
        ]);
    }

    // Ejemplo: Sincronizar con CRM externo
    // $this->syncToCRM($customer);
}

#Notas y gotchas

  • ⚠️ El cliente ya esta guardado en BD cuando se ejecuta este hook — `$customer->id` es valido.
  • ⚠️ Este hook NO se dispara cuando un cliente se crea desde el Back Office — solo desde el front.
  • ⚠️ Para capturar clientes creados desde BO, usa `actionObjectCustomerAddAfter`.
  • ⚠️ Si necesitas actuar cuando el cliente hace login (no solo registro), usa `actionAuthentication`.
  • ⚠️ El email del cliente ya esta validado como unico en este punto.

#Relacionados

#Historial de versiones

Version PSCambio
1.5 Introducido con el parametro newCustomer
1.7 Sin cambios. Compatible con PS 1.7, 8.x y 9.x
Descargar en Markdown Pensado para pegar en ChatGPT, Claude u otra IA. Incluye solo el contenido de esta pagina.