Medir las conversiones en una tienda PrestaShop parece tarea más o menos sencilla. En principio, con instalar el módulo de Google Analytics y que éste se comunique con Google AdWords es suficiente. Bien, hasta aquí la teoría. Estoy seguro de que todas y todos hemos sufrido los errores de atribución en los distintos canales. Hoy os propongo exportar las conversiones de PrestaShop a Google AdWords de forma automática en CSV.

La idea

PrestaShop, por defecto, incorpora una tabla de conexiones donde registra todas y cada una de las conexiones que se realiza a la página guardando tanto la URL de referencia como la URL de inicio. Es precisamente desde ésta última desde donde iremos tirando del hilo hasta llegar a vincularlas con las conversiones.

Por otra parte, Google AdWords etiqueta de manera automática, y por defecto, las campañas de manera que, tras un clic en el anuncio, lleva a los usuarios a la URL de destino incluyendo una variable propia, el GCLID. Esta variable es la que utiliza posteriormente para poder vincular un clic con una conversión gracias al pixel de conversión.

Si somos capaces de capturar ese CGLID y seguir el rastro de la usuaria o del usuario que haya convertido, podremos indicar a Google (con total certeza) que ese GCLID ha generado una conversión. ¿Cómo lo hacemos? Siguiendo el rastro:

  1. En la tabla connections_source se registran todas las páginas de inicio, es aquí donde podremos comprobar si el GCLID está presente en esas URLs (columna request_uri) y extraerlo. Si es así nos quedaremos con el id_connections y con date_add,
  2. Con el id_connections podemos  ir a la tabla connections y obtener el id_guest, es decir, el número que PrestaShop adjudica a todas y cada una de las usuarias y usuarios que visitan la tienda.
  3. Con este id_guest podemos ir a la tabla cart y comprobar si esta usuaria o usuario ha generado un carro de compra. Si es así nos quedaremos con el id_cart.
  4. Por último, iremos a la tabla orders y comprobaremos con el id_cart si ese carro se ha convertido en venta. Si es así podremos quedarnos con todos los datos que necesitemos del pedido (en este artículo solo me queda con el id_orderreference).

Obviamente todos estos pasos los podemos, y debemos, hacer en una única consulta MySQL que nos devolverá los valores que necesitamos (id_order, reference, gclid y date_add) y generar un CSV para enviar directamente a Google AdWords.

El código

Para conseguir el objetivo de exportar las conversiones de PrestaShop a Google AdWords no va a quedar más remedio que escribir un poco de código PHP:

[code lang=”php”]

// Config

$host = ”;
$dbUser = ”;
$dbUserPass = ”;
$dbName = ”;
$prestashopPrefix = ‘ps_’;
$conversionName = ‘Ventas’;

// Main code

$dateStart = $_POST["dateStart"];
$dateEnd = $_POST["dateEnd"];

if ($dateStart && $dateEnd){

// DB conexion

$db = mysqli_connect($host, $dbUser, $dbUserPass, $dbName);
mysqli_set_charset($db, ‘utf8’);

// Get data from DB

$conexions = array();
$gclids = array();
$sql = ‘SELECT ‘.$prestashopPrefix.’connections_source.request_uri, ‘.$prestashopPrefix.’connections_source.date_add,
‘.$prestashopPrefix.’orders.id_order, ‘.$prestashopPrefix.’orders.reference
FROM `’.$prestashopPrefix.’connections_source`
INNER JOIN `’.$prestashopPrefix.’connections` ON ‘.$prestashopPrefix.’connections.id_connections = ‘.$prestashopPrefix.’connections_source.id_connections
INNER JOIN `’.$prestashopPrefix.’cart` ON ‘.$prestashopPrefix.’cart.id_guest = ‘.$prestashopPrefix.’connections.id_guest
INNER JOIN `’.$prestashopPrefix.’orders` ON ‘.$prestashopPrefix.’orders.id_cart = ‘.$prestashopPrefix.’cart.id_cart
WHERE (‘.$prestashopPrefix.’connections_source.request_uri LIKE "%gclid%" AND ‘.$prestashopPrefix.’connections_source.date_add >= "’.$dateStart.’ 00:00:00" AND ‘.$prestashopPrefix.’connections_source.date_add <= "’.$dateEnd.’ 23:59:59") ORDER by ‘.$prestashopPrefix.’connections_source.date_add ASC’; $result = mysqli_query($db, $sql); while ($row = mysqli_fetch_array($result)) { $gclid = ”; $url_parts = explode(‘?’, $row["request_uri"]); $url_vars = explode(‘&’, $url_parts[1]); foreach ($url_vars as $var){ list($name, $value) = explode(‘=’,$var); if ($name == ‘gclid’){ $gclid = $value; } } if (!in_array($gclid, $gclids) && !empty($gclid)){ $gclids[] = $gclid; $conexions[] = array( "id_order" => $row["id_order"],
"reference" => $row["reference"],
"gclid" => $gclid,
"date_add" => $row["date_add"]
);
}
}

// Create CSV

$filename = ‘conversion-import.csv’;
$file = fopen($filename, "w");
fputcsv($file, array_map("utf8_decode", array(‘Parameters:TimeZone=Europe/Madrid’,”,”,”,”)),’,’,’"’);
fputcsv($file, array(‘Google Click ID’,’Conversion Name’,’Conversion Time’,’Conversion Value’,’Conversion Currency’),’,’,’"’);
foreach ($conexions as $conexion){
fputcsv($file, array_map("utf8_decode", array($conexion["gclid"],$conversionName,$conexion["date_add"],”,”)),’,’,’"’);
}
fclose($file);

// Force downloading the CSV file

header("Content-type: application/force-download");
header(‘Content-Disposition: inline; filename="’.$filename.’"’);
header("Content-Transfer-Encoding: Binary");
header("Content-length: ".filesize($filename));
header(‘Content-Type: application/excel’);
header(‘Content-Disposition: attachment; filename="’.$filename.’"’);
readfile($filename);
}
else {
echo ‘<html>
<head>
<title>PrestaShop gclid export</title>
</head>
<body>

<div>

<form action="’.$_SERVER[‘PHP_SELF’].’" method="post">
From <input type="date" name="dateStart" required>
to <input type="date" name="dateEnd" required>
<input type="submit" name="Download">
</form>

</div>

</body>
</html>’;
}

[/code]

Configurando las siguientes variables ya debería generaros un CSV con los CGLID y la información que necesita Google AdWords para “emparejar” clics y conversiones:

  • $host: dirección del servidor donde está la base de datos de PrestaShop
  • $dbUser: usuario de la base de datos
  • $dbUserPass: contraseña de la base de datos
  • $dbName: nombre de la base de datos
  • $prestashopPrefix: prefijo de las tablas de PrestaShop (normalmente ps_)
  • $conversionName: nombre que hemos dado a la conversión en Google AdWords (debe ser exactamente igual)

Este código incluye un selector de rango de fechas para seleccionar el periodo en que nos interese exportar las conversiones de PrestaShop a Google AdWords.

Si queremos automatizar el proceso, las variables $dateStart y $dateEnd deberían generarse automáticamente (típicamente con la función date()) y configurar un cronjob en el servidor que ejecute el PHP. Posteriormente, en Google AdWords, podrás configurar la recogida programada del CSV generado.

Espero que este artículo te haya servido de ayuda para exportar las conversiones de PrestaShop a Google AdWords. Como siempre, si tienes cualquier duda o aportación deja un comentario.