文章目录
通过电子商务跟踪,您可以衡量网站产生的交易次数和收入。在典型的电子商务网站上,当用户在浏览器中点击“购买”按钮时,用户的购买信息就会发送给执行交易的网络服务器。如果成功,服务器会将用户重定向至提供交易详情和购买收据的“谢谢”页面或收据页面。您可以使用analytics.js库将“谢谢”页面中的电子商务数据发送到Google Analytics(分析)。
可以使用analytics.js发送两种类型的电子商务数据:交易数据和商品数据。
交易数据
交易是指发生在您网站上的完整交易,包括以下值:
值 | 类型 | 必需 | 说明 |
---|---|---|---|
ID | String | 是 | 交易ID(例如1234)。 |
Affiliation | String | 否 | 发生此交易的商店或联属机构(例如Acme Clothing)。 |
Revenue | Currency | 否 | 与当次交易关联的总收入或总计金额(例如11.99)。此值包含运费、税费或其他要计入revenue的总收入调整值。 |
Shipping | Currency | 否 | 指定交易的总运费(例如5)。 |
Tax | Currency | 否 | 指定交易的税款总额(例如1.29)。 |
商品数据
商品指购物车里的单款产品,包括以下值:
值 | 类型 | 必需 | 说明 |
---|---|---|---|
ID | Number | 是 | 交易ID。此ID将商品与其所属的交易关联在一起(例如1234)。 |
Name | String | 是 | 商品名称(例如粉色绒毛小兔)。 |
SKU | String | 否 | 指定SKU或商品代码(例如SKU47)。 |
Category | String | 否 | 商品所属类别(例如聚会玩具)。 |
Price | Currency | 否 | 每件商品的单价(例如11.99)。 |
Quantity | Number | 否 | 在交易中购买的商品数量。如果传递到此字段的是非整数值(例如1.5),将舍入为最接近的整数值。 |
实现
加载电子商务插件
为减小analytics.js库的规模,增强型电子商务跟踪不在默认库中提供,而是以需要在使用前加载的插件模块的形式提供。
要加载电子商务插件,请使用以下命令:
ga('require', 'ecommerce');
添加交易
插件加载后就会创建透明的购物车对象。您可以将交易和商品数据添加到购物车,并在完全配置后一次性发送全部数据。
您可以使用
ga('ecommerce:addTransaction', { 'id': '1234', // Transaction ID. Required. 'affiliation': 'Acme Clothing', // Affiliation or store name. 'revenue': '11.99', // Grand Total. 'shipping': '5', // Shipping. 'tax': '1.29' // Tax. 'currency': 'EUR' // local currency code.});
命令向购物车添加交易数据:
ga('ecommerce:addItem', { 'id': '1234', // Transaction ID. Required. 'name': 'Fluffy Pink Bunnies', // Product name. Required. 'sku': 'DD23444', // SKU/code. 'category': 'Party Toys', // Category or variation. 'price': '11.99', // Unit price. 'quantity': '1' // Quantity. 'currency': 'GBP' // local currency code.});
添加商品
下一步,要向购物车添加商品,您可以使用
ecommerce:addItem
命令:
ga('ecommerce:addItem', { 'id': '1234', // Transaction ID. Required. 'name': 'Fluffy Pink Bunnies', // Product name. Required. 'sku': 'DD23444', // SKU/code. 'category': 'Party Toys', // Category or variation. 'price': '11.99', // Unit price. 'quantity': '1' // Quantity.});
发送数据
最后,在购物车中配置所有电子商务数据后,您可以使用 ecommerce:send 命令向Google Analytics(分析)发送数据:
ga('ecommerce:send')
此命令将仔细检查购物车中的每笔交易和每件商品,并将相应的数据发送给Google Analytics(分析)。完成后,系统将清空购物车并准备发送新交易的数据。如果发出的是之前的 ecommerce:send命令,系统只会发送新的交易和商品数据。
大部分电子商务网站都使用服务器端模板引擎呈现“谢谢”页面。在这种情况下,您应向服务器端模板添加电子商务跟踪代码,并使用服务器逻辑来以动态方式将电子商务数据值写入最终页面。以下是在PHP中的代码示例。
在PHP中,您通常应使用某种形式来呈现电子商务数据。在以下示例中,数据存储在关联数组内:
<?php// Transaction Data$trans = array('id'=>'1234', 'affiliation'=>'Acme Clothing', 'revenue'=>'11.99', 'shipping'=>'5', 'tax'=>'1.29');// List of Items Purchased.$items = array( array('sku'=>'SDFSDF', 'name'=>'Shoes', 'category'=>'Footwear', 'price'=>'100', 'quantity'=>'1'), array('sku'=>'123DSW', 'name'=>'Sandles', 'category'=>'Footwear', 'price'=>'87', 'quantity'=>'1'), array('sku'=>'UHDF93', 'name'=>'Socks', 'category'=>'Footwear', 'price'=>'5.99', 'quantity'=>'2'));?>
第一步,编写相应的逻辑以将电子商务数据转换为analytics.js要求的JavaScript字符串:
<?php// Function to return the JavaScript representation of a TransactionData object.function getTransactionJs(&$trans) { return <<<HTMLga('ecommerce:addTransaction', { 'id': '{$trans['id']}', 'affiliation': '{$trans['affiliation']}', 'revenue': '{$trans['revenue']}', 'shipping': '{$trans['shipping']}', 'tax': '{$trans['tax']}'});HTML;}// Function to return the JavaScript representation of an ItemData object.function getItemJs(&$transId, &$item) { return <<<HTMLga('ecommerce:addItem', { 'id': '$transId', 'name': '{$item['name']}', 'sku': '{$item['sku']}', 'category': '{$item['category']}', 'price': '{$item['price']}', 'quantity': '{$item['quantity']}'});HTML;}?>
然后,在<script>代码内添加额外的PHP逻辑,以动态方式输出交易和商品数据:
<!-- Begin HTML --><script>ga('require', 'ecommerce');<?phpecho getTransactionJs($trans);foreach ($items as &$item) { echo getItemJs($trans['id'], $item);}?>ga('ecommerce:send');</script>
在PHP脚本完成执行后,analytics.js所需的交易和商品数据将输出至页面。一旦页面上的JavaScript在浏览器中呈现,所有的电子商务数据都将发送至Google Analytics(分析)。
附上Magento 交易跟踪代码
<?php$order = Mage::getModel('sales/order')->load(Mage::getSingleton('checkout/session')->getLastOrderId());$subtotal = $order->getSubtotal();$order_id = $order->getId(); //the id of the order//$order->getIncrementId();//the increment id of the order$gtotal = $order->getGrandTotal();//grand total of the order$address = $order->getBillingAddress()->getData();$city = $address['city'];$state = $address['region'];$country = $address['country_id'];?><script type="text/javascript">ga('require', 'ecommerce');ga('ecommerce:addTransaction', { 'id': '<?php echo $order_id; ?>', // Transaction ID. Required. 'affiliation': '', // Affiliation or store name. 'revenue': '<?php echo $gtotal;?>', // Grand Total. 'shipping': '0', // Shipping. 'tax': '0' // Tax.});<?php$items = $order->getAllItems();$itemcount=count($items);$name=array();$unitPrice=array();$sku=array();$ids=array();$qty=array();foreach ($items as $itemId => $item){?>ga('ecommerce:addItem', { 'id': '<?php echo $order_id; ?>', // Transaction ID. Required. 'name': '<?php echo $item->getName(); ?>', // Product name. Required. 'sku': '<?php echo $item->getSku(); ?>', // SKU/code. 'category': '', // Category or variation. 'price': '<?php echo $item->getPrice(); ?>', // Unit price. 'quantity': '<?php echo $item->getQtyToInvoice(); ?>' // Quantity.});<?php}?> ga('ecommerce:send');</script>