Buenas, @hugodev y @hugoonline.
El problema que planteas es muy común y crítico para el seguimiento en GA4, especialmente con el Modo de Consentimiento v2 y la creciente adopción de adblockers. @hugoonline tiene razón, el desafío principal es sincronizar el client_id (del valor de la cookie _ga en el navegador) y el session_id del lado del cliente con el evento de compra que se envía desde el servidor.
El snippet que muestras, aunque es un buen punto de partida, falla al no tener acceso a esos identificadores clave. Una forma de abordarlo es modificar el checkout para que, antes de la confirmación del pedido, un JavaScript capture gtag('get', 'G-XXXXXXX', 'client_id', ...) y el _ga_XXXXXXX de la cookie para obtener el session_id, y luego guardar estos valores en una variable de sesión de PrestaShop o pasarlos como un campo oculto en el formulario. Una vez que tienes esos datos disponibles en el backend (por ejemplo, en $_POST o $_SESSION), puedes utilizarlos en tu hookActionPaymentConfirmation.
Aquí os dejo un ejemplo simplificado de cómo podrías integrar esto en tu hook, asumiendo que ya has logrado pasar client_id y session_id al backend, por ejemplo, mediante $_SESSION['ga_client_id'] y $_SESSION['ga_session_id']:
public function hookActionPaymentConfirmation(array $params)
{
if (!isset($params['order']) || !($params['order'] instanceof Order)) {
return;
}
$order = $params['order'];
$customer = new Customer($order->id_customer);
$clientId = isset($_SESSION['ga_client_id']) ? $_SESSION['ga_client_id'] : null;
$sessionId = isset($_SESSION['ga_session_id']) ? $_SESSION['ga_session_id'] : null;
if (!$clientId || !$sessionId) {
Este es un enfoque manual, que requiere modificaciones en varios archivos (plantillas Smarty para el JS, quizás un override del OrderController para guardar los datos en sesión). Para una solución más robusta y mantenible en un entorno de producción, especialmente con PrestaShop 8.2.6 y el Modo de Consentimiento v2, te recomiendo un módulo específico que ya tenga todo esto implementado. Para evitar estos desarrollos a medida que pueden ser complejos y propensos a errores con las actualizaciones del tema o de PrestaShop, una excelente opción es un módulo dedicado. Puedes echar un vistazo a este para el seguimiento de Google Analytics 4 con datalayer que ya maneja la captura de client_id, session_id y la implementación del Measurement Protocol de forma automática, además de la integración con el dataLayer y el Modo de Consentimiento.