电子商务衡量

本指南将介绍如何使用 analytics.js 收集电子商务数据。

概览

通过电子商务衡量,您可以衡量网站产生的交易次数和收入。在典型的电子商务网站上,当用户在浏览器中点击“购买”按钮时,用户的购买信息就会发送给执行交易的网络服务器。如果成功,服务器会将用户重定向至提供交易详情和购买收据的“谢谢”页面或收据页面。您可以使用 analytics.js 库将致谢页面中的电子商务数据发送到 Google Analytics(分析)。

您可以使用 analytics.js 发送两种类型的电子商务数据:交易数据和商品数据。

交易数据

交易是指发生在您网站上的完整交易,包括以下值:

值类型 是否必须提供 说明
id text 交易 ID(例如 1234)。
affiliation text 发生此交易的商店或关联商户(例如 Acme Clothing)。
revenue currency 与这笔交易关联的总收入或总计金额(例如 11.99)。 此值包含运费、税费或其他要计入 revenue 的总收入调整值。
shipping currency 指定交易的总运费(例如 5)。
tax currency 指定交易的税款总额(例如 1.29)。

商品数据

商品指购物车里的单款产品,包括以下值:

值类型 是否必须提供 说明
id text 交易 ID。此 ID 将商品与其所属的交易关联在一起(例如 1234)。
name text 商品名称(例如粉色绒毛小兔)。
sku text 指定 SKU 或商品代码(例如 SKU47)。
category text 商品所属类别(例如聚会玩具)。
price currency 每件商品的单价(例如 11.99)。
quantity integer 在交易中购买的商品数量。 如果传递到此字段的是非整数值(例如 1.5),将舍入为最接近的整数值。

实现

您通常应在用户完成结账流程后马上实现电子商务衡量。这通常发生在致谢页面上。 在获得电子商务数据并准备好发送给 Google Analytics(分析)后,您应完成以下几个步骤:

加载电子商务插件

为缩小 analytics.js 库的体积,电子商务衡量不在默认库中提供,而是以一个插件模块的形式提供。在使用该模块前,必须先加载它。

要加载电子商务插件,请使用以下命令:

ga('require', 'ecommerce');

必须在您创建跟踪器对象之后、使用与电子商务相关的任何具体功能之前执行此命令。

插件加载之后,一系列电子商务衡量专用的新命令将会添加到默认跟踪器中。

添加交易

插件加载后就会创建透明的购物车对象。您可以将交易和商品数据添加到购物车,并在完全配置后一次性发送全部数据。

您可以使用 ecommerce:addTransaction 命令向购物车添加交易数据:

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.
});

添加商品

接下来,要向购物车添加商品,您可以使用 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 命令,系统只会发送新的交易和商品数据。

清除数据

如果需要手动清除购物车中的所有交易和商品,可使用以下命令:

ga('ecommerce:clear');

指定局部货币

默认情况下,您可以通过 Google Analytics(分析)的管理网页界面为所有交易和商品配置一种通用的全局货币。系统默认会为所有商品和交易使用全局货币。使用多种货币开展交易的网站可通过电子商务插件指定交易和个别产品的本地货币。

本地货币必须按 ISO 4217 标准指定。如需查看支持的转换货币的完整列表,请参阅货币代码参考

要设置特定交易及其所有商品的局部货币,您只需为交易指定该货币即可:

ga('ecommerce:addTransaction', {
  'id': '1234',
  'affiliation': 'Acme Clothing',
  'revenue': '11.99',
  'shipping': '5',
  'tax': '1.29',
  'currency': 'EUR'  // local currency code.
});

最后,您还可以按商品指定货币:

  ga('ecommerce:addItem', {
    'id': '1234',
    'name': 'Fluffy Pink Bunnies',
    'sku': 'DD23444',
    'category': 'Party Toys',
    'price': '11.99',
    'quantity': '1',
    'currency': 'GBP' // local currency code.
  });

多跟踪器支持

如果您在网页上实现了多个(已命名)跟踪器,您也可以使用电子商务插件。插件的运作方式与默认跟踪器完全相同,唯一的区别在于格式:trackerName.pluginName:method。 例如,假设您创建了名为 myTracker 的跟踪器:

ga('create', 'UA-XXXXX-Y', 'auto', {'name': 'myTracker'});

然后,您应使用以下命令为该已命名的跟踪器加载电子商务插件:

ga('myTracker.require', 'ecommerce');

要发送交易,您可以创建交易对象并按如下所示将其传递给已命名的跟踪器:

var transaction = {
  'id': '1234',                    // Transaction ID.
  'affiliation': 'Acme Clothing',  // Affiliation or store name.
  'revenue': '11.99',              // Grand Total.
  'shipping': '5' ,                // Shipping.
  'tax': '1.29'                    // Tax.
};

ga('myTracker.ecommerce:addTransaction', transaction);

通过使用此语法,交易对象可用在多个跟踪器上。

最后,您应按如下方式发送交易数据:

ga('myTracker.ecommerce:send');

示例

大多数电子商务网站在服务器上执行交易,但 analytics.js 库是从浏览器发送数据到 Google Analytics(分析)。因此,为了正确发送电子商务数据到 Google Analytics(分析),服务器与客户端之间必须进行一定的协作。

大部分电子商务网站都使用服务器端模板引擎呈现致谢页面。在这种情况下,您应向服务器端模板添加电子商务衡量代码,并使用服务器逻辑来以动态方式将电子商务数据值写入最终页面。以下是在 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'=>'Sandals', '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 <<<HTML
ga('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 <<<HTML
ga('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');

<?php
echo getTransactionJs($trans);

foreach ($items as &$item) {
  echo getItemJs($trans['id'], $item);
}
?>

ga('ecommerce:send');
</script>

在 PHP 脚本完成执行后,analytics.js 所需的交易和商品数据将输出至页面。一旦页面上的 JavaScript 在浏览器中运行,所有的电子商务数据都将发送至 Google Analytics(分析)。

货币类型

默认货币类型可通过管理界面配置。 当您使用 analytics.js 发送货币值时,该值代表的是总货币值。

货币整数和小数部分之间可使用小数点分隔。值最多可精确到小数点后 6 位。 以下值可在货币字段中使用:

1000.000001

在值发送至 Google Analytics(分析)后,第一个数字、“-”字符或“.”(小数点)字符之前的文字都将移除。因此:

$-55.00

将变为:

-55.00