Google Analysis Measurement Protocol

创建一个像素 URL 用于跟踪邮件是否被打开:

<img src="https://www.google-analytics.com/collect?v=1&tid=UA-01010-1&cid=ba28fd4d-a15c-4109-90b1-f3ed2d586f8a&aip=1&t=event&ec=email&ea=open&dl=%2Fnotification%2Fabandoned&dt=Complete%20your%20Purchase">

这个链接很长,我们拆开看它包含什么信息:

v   = 1
tid = UA-01010-1
cid = ba28fd4d-a15c-4109-90b1-f3ed2d586f8a
aip = 1
t   = event
ec  = email
ea  = open
dl  = /notification/abandoned
dt  = Complete your Purchase

下文是具体的参数解释。

必填参数

协议版本,参数 v,当前值为 1,写作 v=1

跟踪 ID / 网络媒体资源 ID,参数 tid,格式为 UA-XXXX-Y,示例 tid=UA-XXXX-Y

匹配类型,参数 t,类型的值:event, pageview, screenview, transaction, item, social, exception, timing。对于不同的匹配类型,有不同的必填项目:

  • t=event 必填 ec, ea
  • t=pageview 必填 dl,或 dh + dp
  • t=transaction 必填 ti
  • t=item 必填 ti, in

注:transaction, item 这两种类型与电子商务交易相关。另外有增强电子商务,必须单独在 analytics.js 中点击选项开通才能配置使用相关参数。

用户 ID

有两个参数用于标识用户,分别为 ciduid,两者必须填其中一个。

User ID (uid) 用于匿名标识用户、设备或浏览器。对网页而言,一般以第一方 Cookie 的形式存储在本地,有效期为两年。对移动应用而言,会针对每个应用安装实例随机生成。uid 的值为一个随机 UUID(版本 4),由 http://www.ietf.org/rfc/rfc4122.txt 定义。实例:cid=35009a79-1a05-49d7-b876-2b884d0f825b

PHP 生成 UUID 代码:

function guidv4($data = null) 
{
    // Generate 16 bytes (128 bits) of random data or use the data passed into the function.
    $data = $data ?? random_bytes(16);
    assert(strlen($data) == 16);

    // Set version to 0100
    $data[6] = chr(ord($data[6]) & 0x0f | 0x40);
    // Set bits 6-7 to 10
    $data[8] = chr(ord($data[8]) & 0x3f | 0x80);

    // Output the 36 character UUID.
    return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}

注:PHP 7 开始支持 random_bytes(),之前的版本可以用 openssl_random_pseudo_bytes() 函数。

Client ID (cid) 用于标识用户,但不能为个人身份信息,不能长久存储在 GA Cookie 中。示例 uid=as8eknlll

选填参数

数据来源,参数 ds,从 analytics.js 发出的数据来源为 web,从移动 SDK 发送的数据来源为 app,示例 ds=web, ds=app 等。

来源网址,参数 dr,用于统计流量来源,如流量来自 https://berlinix.com,写作 dr=https%3A%2F%2Fberlinix.com

广告系列名称,参数 cn,例如 (direct) 写作 cn=%28direct%29

广告系列来源,参数 cs

广告系列媒体,参数 cm,示例 cm=organic

广告系列关键字,参数 ck,例如 Blue Shoes 写作 ck=Blue%20Shoes

广告系列内容,参数 cc

广告系列 ID,参数 ci

文档网址,参数 dl,表示完整的 URL,例如 https://berlinix.com/sales?p=1,写作 https%3A%2F%2Fberlinix.com%2Fsales%3Fp%3D1。文档网址参数 dl 可拆分为 dh, dp 两部分,分别表示主机名和文档路径+参数(以 / 打头)。若 t=pageview 则必须设置 dl 或同时设置 dhdp

屏幕名称,参数 cd,若 t=screenview 则必须设置,例如 High Scores 写作 cd=High%20Scores

事件类别,参数 ec,若 t=event 则必须设置,例如 Category 写作 ec=Category

事件操作,参数 ea,若 t=event 则必须设置,例如 Action 写作 ea=Action

交易 ID,参数 ti,若 t=transactiont=item 则必须设置,例如 0D564 写作 ti=0D564

商品名称,参数 in,若 t=item 则必须设置,例如 Shoe 写作 in=Shoe

文档标题,参数 dt

对 IP 地址进行匿名处理,参数 aip,只要包含此参数就会将发送者 IP 匿名处理,示例 &aip=&aip=0&aip=1

缓存无效化宏,参数 z,用于在 GET 请求中添加一个随机数,确保浏览器和代理服务器不对匹配进行缓存。它应作为请求的最后一个参数发送。这个值不会显示在数据统计中。示例 z=289372387623

增强型电子商务

要使用这一系列的参数,必须在 analytics.js 中先开通选项。

产品 SKU,参数 pr<idx>id,其中 <idx> 表示产品索引,其值是 1-200 之间的整数。例如 p123 写作 pr1id=p123

产品名称,参数 pr<idx>nm,例如 T-Shirt 写作 pr1nm=T-Shirt

参考