Hola @marcosdeco, @alvaroshop99 tiene razón en ambos puntos. Para PrestaShop 1.7.3.4, que asumo es la versión que usas por el contexto de tu override, el comportamiento de ObjectModel requiere que cualquier campo personalizado como activation_token sea declarado en la $definition estática de la clase Customer (normalmente en override/classes/Customer.php). Si no lo haces, parent::add() simplemente lo ignora y no lo persiste.
Respecto al estado active, al añadir el campo a la $definition, asegúrate de que su tipo (TYPE_BOOL) y validación (isBool) sean correctos. La clave es establecer $this->active = 0; y el $this->activation_token antes de llamar a parent::add(). De esta forma, ObjectModel guarda esos valores al crear el cliente. Luego, necesitarás un controlador (puedes sobrescribir AuthController.php o crear uno nuevo) que capture el activate_token de la URL, busque al cliente, valide el token y active la cuenta.
Aquí tienes el fragmento clave para el método add, asumiendo que ya has extendido correctamente la $definition estática para incluir activation_token:
// override/classes/Customer.php (método add, tras añadir 'activation_token' a static $definition)
$this->active = 0; // Cliente inactivo por defecto
$this->activation_token = md5(uniqid(rand(), true)); // Generar y guardar token
$result = parent::add($autodate, $nullValues); // Guardar cliente y token
// Aquí iría el envío del email con el enlace de activación.
return $result;
Recuerda también que las modificaciones directas en el core o overrides pueden ser frágiles con las actualizaciones. Para una solución más robusta y sin tocar el código core, puedes considerar un módulo dedicado. Te recomiendo este para gestionar activación de cuenta sin tocar el código core, que te ahorrará muchos dolores de cabeza con futuros mantenimientos.