La mayoría de las plataformas ya cuentan con el módulo de Google Analytics en versión universal que permite incluir las ventas y los orígenes de sus conversiones.
Sin duda, recopilar estos datos, es de vital importancia porque nos permitirá conocer qué campañas de SEM son de mayor rentabilidad o qué tipo de público se interesa más por nuestros productos, o incluso qué red social tiene más beneficios para poder centrar los esfuerzos en ella, como veréis es de gran potencial para tomar decisiones importantes.
Por ello, pongámonos manos a la obra para configurar correctamente Google Analytics en nuestra tienda online con OpenCart, para permitir hacer Tracking de pedidos.
Para poner el código de Google Analytics tendremos que acceder dentro del panel de configuración a la sección Sistema > Configuración y dentro de este apartado de configuración accedemos a la pestaña Google donde nos aparece la sección Google Analytics, en esa caja de texto añadimos el código proporcionado por Google y ponemos estado Activo.
Una vez añadido nuestro código de Analytics ya podremos ver informes en tiempo real de nuestras visitas. Para comprobar que está correctamente asignado podemos instalar en Chrome la extensión de Google Tag Assistant.
Una vez instalada y activa podemos ver como al navegar por nuestra web nos mostrará en verde si el código de Analytics está correctamente colocado.
Una vez comprobado que está correctamente instalado pasamos al código de tracking de pedidos sobre nuestro Ecommerce.
Debemos modificar el archivo\catalog\model\checkout\order.php y añadimos el siguiente código justo antes de la declaración de la función getOrder($order_id)
public function getOrderTax($order_id){ $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_total WHERE code = 'tax' AND order_id = '" . (int)$order_id . "' LIMIT 1"); return $query->row; }
public function getOrderShipping($order_id){ $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_total WHERE code = 'shipping' AND order_id = '" . (int)$order_id . "' LIMIT 1"); return $query->row; } public function getOrderProducts($order_id){ $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); if($query->num_rows){ return $query->rows; } else { return false; } } |
|||
Guardamos order.php y lo subimos a nuestra web en producción
Ahora debemos guardar nuestra confirmación de proceso de compra, para ello abrimos el fichero\catalog\controller\checkout\success.php y añadimos el siguiente código antes de “$this->cart->clear() de la función index()”
//NOC get Order-id
$order_id = $this->session->data['order_id'];
//NOC get Order-details if(isset($order_id)) { //LOAD MODEL $this->load->model('checkout/order');
//GET ORDER DETAILS $order_info = $this->model_checkout_order->getOrder($order_id);
//NEW MODEL TO COLLECT TAX $get_order_tax = $this->model_checkout_order->getOrderTax($order_id);
if($get_order_tax){ //ASSIGN TAX TO NEW VARIABLE $order_tax = $get_order_tax['value']; } else { //THERE WAS NO TAX COLLECTED $order_tax = 0; }
//NEW MODEL TO COLLECT SHIPPING $get_order_shipping = $this->model_checkout_order->getOrderShipping($order_id);
if($get_order_shipping){ //ASSIGN SHIPPING TO NEW VARIABLE $order_shipping = $get_order_shipping['value']; } else { //THERE WAS NO SHIPPING COLLECTED $order_shipping = 0; }
//NEW MODEL TO COLLECT ALL PRODUCTS ASSOCIATED WITH ORDER $get_order_products = $this->model_checkout_order->getOrderProducts($order_id);
//CREATE ARRAY TO HOLD PRODUCTS $order_products = array();
foreach($get_order_products as $prod){
$order_products[] = array( 'order_id' => $order_id, 'model' => $prod['model'], 'name' => $prod['name'], 'category' => '', 'price' => number_format($prod['price'], 2, '.', ','), 'quantity' => $prod['quantity'] );
}
//NEW ORDER ARRAY $order_tracker = array( 'order_id' => $order_id, 'store_name' => $order_info['store_name'], 'total' => $order_info['total'], 'tax' => $order_tax, 'shipping' => $order_shipping, 'city' => $order_info['payment_city'], 'state' => $order_info['payment_zone'], 'country' => $order_info['payment_country'], 'currency' => $order_info['currency_code'], 'products' => $order_products ); $data['order_tracker'] = $order_tracker; } |
|||||
Ahora guardamos nuestro fichero de confirmación de compra en OpenCart “success.php”
Y debemos modificar la parte de la vista de nuestro tema para mostrar la etiqueta correctamente.
Para ello vamos al fichero \catalog\view\theme\nombre_del_tema\template \common\ success.tpl y añadimos el siguiente código antes de <?php echo $footer; ?>
<?php
/* NOC Ecommerce Tracking Code in success.tpl file */ if(isset($order_tracker)){ $tracking_info = '<script type="text/javascript">'.PHP_EOL; $tracking_info .= "ga('require', 'ecommerce', 'ecommerce.js');".PHP_EOL; //ADD TOP LEVEL TRACKING INFO $tracking_info .= "ga('ecommerce:addTransaction', { id: '" . $order_tracker['order_id'] . "', affiliation: '" . $order_tracker['store_name'] . "', revenue: " . $order_tracker['total'] . ", shipping: " . $order_tracker['shipping'] . " , tax: " . $order_tracker['tax'] . " }); ".PHP_EOL; //ADD INFO FOR EACH PRODUCT foreach($order_tracker['products'] as $product){ $tracking_info .= "ga('ecommerce:addItem', { id: '" . $order_tracker['order_id'] . "', sku: '" . $product['model'] . "', name: '" . $product['name'] . "', category: '', price: " . $product['price'] . ", quantity: " . $product['quantity'] ." });".PHP_EOL; } $tracking_info .= "ga('ecommerce:send');".PHP_EOL; $tracking_info .= '</script>'.PHP_EOL; echo $tracking_info; } ?> |
|||||
Guardamos y subimos el diseño al ftp de nuestra tienda en producción.
Finalmente para comprobar que hemos añadido el código correctamente al realizar un pedido podremos ver que se ha añadido el código tanto en la extensión de Google Chrome como en el propio código de la página mirando el código fuente.
Al realizar ahora un pedido podremos observar que en nuestra cuenta de Google Analytics ha quedado registrado correctamente el pago.
Para esta implantación o cualquier necesidad con OpenCart podéis contactar directamente con el equipo de desarrollo web de digitalDot, estaremos a vuestra entera disposición para optimizar y poner vuestra tienda online a punto.