digitalDot diseño webLogo Diseño Web digitalDot

Google Analytics para OpenCart

14/11/2017

Google Analytics para Opencart. digitalDotEn digitalDot nos encargamos del SEO y posicionamiento de Ecommerce en Prestashop, Magento, Woocomerce u OpenCart y podemos aseguraros que las ventajas de Google Analytics y la información que aporta sobre una tienda online son innumerables y necesitaríamos varios artículos para poder contarlas y detallarlas visualmente todas ellas.

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.

Configuración de Google Analytics en OpenCart

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.

google analitycs opencart

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.

google analytics opencart

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.

google analytics opencart

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;     

                               }

               }

google analytics opencart

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;

               }

google analytics opencart

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;

}

?>

google analytics opencart

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.

google analytics opencart

google analytics opencart

Al realizar ahora un pedido podremos observar que en nuestra cuenta de Google Analytics ha quedado registrado correctamente el pago.

google analytics opencart

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.

Contenido
crossmenuchevron-down