8. November 2011 FPW

Basket-Tracking mit xtc-modified und Google Analytics

Die Erfassung der Besucherströme auf einer Website ist unerlässlich, wenn man die Website nicht nur zum Spaß betreibt, sondern damit direkt oder indirekt Geld verdienen möchte. Nur so kann man erkennen, welche Kanäle Besucher bringen, welche Seiten für die Besucher interessant sind, woher die Besucher kommen usw. Noch wichtiger ist das bei einem Onlineshop. Hier kommt neben dem Besucher-Tracking auch noch das Conversion Tracking hinzu. Dabei wird aufgezeichnet, dass der Besucher eine Conversion – beim Onlineshop also einen Kauf – getätigt hat. So kann man erkennen, welche Kanäle, welche Keywords, welche Besucher eher zu einem Kauf führen als andere. Der nächste Schritt ist das Basket-Tracking. Dabei wird zusätzlich aufgezeichnet, was die Kunden kaufen. Wie dies zu realisieren ist, zeigt dieser Artikel am Beispiel von xtc-modified (einer Weiterentwicklung von xt:commerce mit vielen Vorteilen gegenüber dem Original) und Google Analytics.

Ziel des Basket-Trackings ist, dass im Analytics erkennbar ist, welche Produkte bei welchen Besuchen gekauft wurden und welcher Umsatz damit generiert wurde. Der Inhalt eines gekauften Warenkorbes muss also an Google Analytics übermittelt werden, um diese Informationen aufzuzeichnen.

Google Analytics bietet diese Möglichkeit des Trackings. Dazu muss im Profil zunächst das E-Commerce-Tracking eingeschaltet werden.

profil

Die Möglichkeiten zum Conversion Tracking, die xtc-modified bietet, nutzen wird nicht. Diese Code wäre nicht aktuell und würde uns nicht die gewünschten Informationen liefern.

xtc-conversion

Anschließend fügen wir den benötigten Code in den Quellcode von xtc-modified ein. Die Übermittlung der Daten muss auf der Bestätigungsseite des Checkout-Prozesses erfolgen, damit nur wirklich bestellte Warenkörbe erfasst werden. Also sind die Dateien /checkout-success.php und %TEMPLATE_PATH%/module/checkout-success.html die richtigen Stellen für den Einbau des Trackings.

checkout-success.php

Am besten sucht man nach “if (GOOGLE_CONVERSION == ‘true’) {“. Da beginnt der Original-Code zum Conversion-Tracking. Dieser bleibt unverändert. Davor wird jedoch folgender Codeblock eingefügt:

// Google Analytics start
$smarty->assign('oID',$last_order);
$smarty->assign('CITY',$orders['customers_city']);
$smarty->assign('STATE',$orders['customers_state']);
$smarty->assign('COUNTRY',$orders['customers_country']);
$orders_total_shipping_query = xtc_db_query("select value from ".TABLE_ORDERS_TOTAL." where orders_id = '".$last_order."' and class='ot_shipping'");
$orders_total_shipping = xtc_db_fetch_array($orders_total_shipping_query);
$smarty->assign('SHIPPING',$orders_total_shipping['value']);
$orders_total_tax_query = xtc_db_query("select sum(value) value from ".TABLE_ORDERS_TOTAL." where orders_id = '".$last_order."' and class='ot_tax'");
$orders_total_tax = xtc_db_fetch_array($orders_total_tax_query);
$smarty->assign('TAX',$orders_total_tax['value']);
$orders_total_query = xtc_db_query("select value from ".TABLE_ORDERS_TOTAL." where orders_id = '".$last_order."' and class='ot_total'");
$orders_total = xtc_db_fetch_array($orders_total_query);
$smarty->assign('VALUE',$orders_total['value']);
$order_query = xtc_db_query(
"SELECT (select cd. categories_name from ".TABLE_CATEGORIES_DESCRIPTION." cd
inner join ".TABLE_PRODUCTS_TO_CATEGORIES." ptc on ptc.categories_id = cd.categories_id AND cd.language_id = 2
where ptc.products_id = p.products_id
limit 1) categories_name,
p.products_id,
orders_products_id,
products_model,
products_name,
products_price,
products_quantity
FROM ".TABLE_ORDERS_PRODUCTS." p
WHERE orders_id='".$last_order."'");

$order_data = array ();
while ($order_data_values = xtc_db_fetch_array($order_query)) {
$order_data[] = array ('PRODUCTS_MODEL' => $order_data_values['products_id'],
'PRODUCTS_NAME' => $order_data_values['products_name'],
'CAT' => $order_data_values['categories_name'],
'PRODUCTS_SINGLE_PRICE' => $order_data_values['products_price'],
'PRODUCTS_QTY' => $order_data_values['products_quantity']);
}
$smarty->assign('order_data', $order_data);
// Google Analytics end

checkout-success.html

Dort sucht man nach “{if $google_tracking eq ‘true’}”, welches wieder der Original-Code von xtc-modified ist. Davor wird folgender Code eingefügt:

<!-- Google e-Commerce Analytics -->
<script type="text/javascript">
_gaq.push(['_addTrans',
'{$oID}',
'Naudi.de',
'{$VALUE}',
'{$TAX}',
'{$SHIPPING}',
'{$CITY}',
'{$STATE}',
'{$COUNTRY}'
]);
{foreach name=aussen item=order_values from=$order_data}
_gaq.push(['_addItem',
'{$oID}',
'{$order_values.PRODUCTS_MODEL}',
'{$order_values.PRODUCTS_NAME}',
'{$order_values.CAT}',
'{$order_values.PRODUCTS_SINGLE_PRICE}',
'{$order_values.PRODUCTS_QTY}'
]);
{/foreach}
_gaq.push(['_trackTrans']); //submits transaction to the Analytics servers
</script>
<!-- Google e-Commerce Analytics Ende -->

Damit sind die Änderungen erledigt. Der Code stammt übrigens von einem User im xtCommerce-Forum. Voraussetzung für die korrekte Funktion ist der richtig eingebundene Google Analytics-Code im Header der Seite. Aber davon, dass dieser vorhanden ist, gehen wir hier einmal aus. Wenn alles richtig gemacht wurde kann man dann im Analytics zum Beispiel bald folgende Daten finden:

produktleistung

Bei Shops mit wenigen Transaktionen sollte man immer mit Produkten testen, die sehr billig sind, um die Ergebnisse des Trackings nicht zu verfälschen. Will man andere Funktionen testen, wo das Tracking nicht wichtig ist, sollte man das Tracking ganz abschalten. Da macht sich ein Browser gut bei dem das Browser-Add-on zur Deaktivierung von Google Analytics installiert ist.

Tagged: , , , , ,

Schröder & Wendt - Wir freuen uns auf Sie!

Ihre Anfragen beantworten wir kurzfristig - meist noch am gleichen Tag. Versprochen!