代码植入最佳实践:避免出现“未分配”“(not set)”和“直接流量”问题

Google Analytics 代码有多个可能会影响到会话和用户身份的配置选项。如果配置不当,则可能导致无法识别或分类流量来源,并引发报告中出现其他问题。正确的配置有助于生成准确的报告,并防止报告中的渠道组出现“未分配”行、“(not set)”值,以及意外地将大部分流量归类为“直接流量”。

当 Google Analytics 无法对流量来源进行分类时,Google Analytics 报告中就会出现“未分配”行。Google Analytics 会根据固定规则将流量来源归类到渠道中。例如,“自然搜索”渠道包含来自所有搜索引擎的流量。渠道会整理并划分为不同的渠道组。如果您使用的是默认渠道组,可以查看默认渠道定义中对流量进行分类的具体逻辑。渠道组可在用户级别、会话级别或事件级别进行查看。

如果流量来源不符合您在报告中所查看渠道组内任何渠道的定义,则会显示为“未分配”。如果流量来自用户定义的来源或媒介,或者由于缺少会话或用户身份信息而处于“(not set)”状态,则可能没有预定义规则来对相应流量来源进行分类。

代码排序最佳实践

请遵循以下建议的代码排序最佳实践:

代码类型 说明 最佳做法

Google 代码

配置 Google 产品并发送事件数据

在调用事件方法(包括受众群体触发的事件)之前初始化 Google 代码。

Google 跟踪代码管理器

设置 Google 跟踪代码管理器

Google 跟踪代码管理器(适用于网页)

Google 跟踪代码管理器简介

按照 4 步骤设置 GTM

服务器端代码植入

服务器端 - 跟踪代码管理器

切勿跳过这些特定的代码设置

对于同一 Google Analytics 媒体资源,您不应在同一网页上同时维护服务器端实现和独立的客户端实现。如果您使用的是 sGTM,请确保所有有效代码均设置为通过服务器端容器发送事件。

如果您无法遵循针对事件推荐的排序做法,仍应遵循以下两项建议。否则,您可能会遇到报告方面的问题。

  • 在网页上尽早(并在所有事件之前)通过 config 命令(适用于 Google 代码)或 Google 代码设置(适用于 Google 跟踪代码管理器)提供网页的所有相关配置。
  • 避免在 config 命令之前触发自定义事件,否则这些事件将随 session_start 事件一起被批处理。config 命令可能会影响网页其余部分的用户和会话身份;也就是说,网页浏览和后续事件无法与之前的会话开始和自定义事件相关联。

如果事件未按正确顺序排列,会怎么样?

如果在非预期时间设置 Google Analytics 代码,可能会影响用户 ID 和/或会话 ID。例如,如果 config 命令或 Google 代码在网页中的其他事件之后触发,可能会导致报告不准确。这可能会导致:

  • 数据在 Google Analytics 中显示为“(not set)”
  • 用户数和会话数不正确
  • 无法正确计算用户级和会话级指标
  • 用户和会话衡量不当

什么原因会导致事件排序错误?

导致意外时序的常见已知原因包括:

功能 原因 结果 最佳做法

服务器端代码植入

服务器管理的设置(服务器管理的客户端 ID)

客户端管理的设置
(transport_url, first_party_collection, server_container_url)

勾选“服务器管理的设置”对应的服务器端代码植入复选框,该选项默认处于开启状态。

通过服务器代码处理 Google Analytics 事件时,用户可以使用一系列选项,以便使用与网站代码所用客户端 ID 不同的用户身份。

如果在顶部下拉菜单中设置“服务器管理”,服务器端代码植入将管理单独的客户端 ID,并将其替换为它所处理的衡量结果。此外,该设置还会提供多种写入该 Cookie 的方式,并为已拥有 GA 直接流量且不想因突然更改所有访问者的 ID 而导致受众群体和报告出现明显断层的客户,提供了一个分阶段迁移选项。

如果您使用此选项,则必须确保流式传输的所有衡量数据都通过您的服务器代码传输,而不会直接发送到 Google 服务器。

为此,最简单的方法是确保将数据发送到服务器容器的网站代码的 Google 跟踪代码管理器或 config 命令(Google 代码)始终是该容器的第一个代码或命令。

Cookie 名称自定义
(cookie_prefix)

这会更改同时用于客户 ID 和会话状态的第一方 Cookie 的名称。

用户无法跨会话关联,事件也无法包含在会话中。

使用会话或用户维度进行分析时,事件指标会显示为“(not set)”。

在整个网站中使用统一的 Cookie 前缀。建议在 Google Analytics 中将 Cookie 前缀用来创建自定义 Cookie 名称,而不是用来创建多个 Cookie 孤岛(如果使用不同的或不一致的前缀,就会出现这种情况)。

自动跨网域链接器
linker1

此设置会指示代码处理并开始使用上一个网页中的客户端和会话数据(如果有)。采用关联的数据时,代码会假定会话已在上一个网页上开始。

如果链接器初始化较晚,并通过较晚的 config 命令发现了跨网域关联用户,那么用户身份将在该时刻突然发生变化。

较晚的 config 命令至少会导致会话时间较短,在采用链接器参数值时会被舍弃。任何在此之前发送的会话或用户属性都无法再与实际会话或用户关联。

不要自定义客户端 ID 或会话 ID,因为这会导致代码和处理过程中对会话结构的假设被打破,并且还可能导致问题。

手动跨网域链接器
client_idsession_id

为了让客户能够手动实现跨网域衡量,Google Analytics 代码提供了用于获取和设置客户端 ID 和会话 ID 的 API。如果不慎修改了自动生成值中的 client_idsession_id,就会影响 Google Analytics 事件与用户和会话的关联方式。

与原始客户端 ID 和会话 ID 解除关联的事件可能缺少重要信息,并导致意外的归因问题。

使用 user_id 提供自定义用户身份。

不要使用这些 API 来修改或提供自定义客户端 ID 或会话 ID。只有在需要跨网域手动设置的极少数情况下,才应手动设置这些 ID。

1 linker 是自动跨网域链接中的参数。如果自动跨网域链接不适合您的网站,您可以选择手动设置客户 ID 和会话 ID。切勿自定义这些值。Google Analytics 对这些值有特定的格式要求,意外值可能会导致中断。详细了解链接器参数

该内容对您有帮助吗?

您有什么改进建议?
搜索
清除搜索内容
关闭搜索框
Google 应用
主菜单
7396869821226780100
true
搜索支持中心
false
true
true
true
true
true
69256
false
false
false
false