识别并解决在线店面上的访问 Cookie 轮换问题
Cookie 轮换是指在线店面中的某个内容会在一次访问期间重新生成访问 Cookie。每个新值都会被计为一次单独的访问,因此您的商店记录的访问量会多于实际发生的访问量;又因为访问量是计算转化率的分母,您的转化率就会偏低。您的订单量、销售额和客户数量不受影响。
Shopify 使用名为 _shopify_s 的 Cookie 来识别商店的浏览器会话,并且 Shopify Analytics 会使用该 Cookie 将访客的活动分组为各个访问。访问也有其预期的边界(例如不活动和世界标准时间午夜),相关内容涵盖在对比访问量和访客中。
您可以检查您的浏览器,以确定在线店面上的 Cookie 是否正在发生轮换并找出导致轮换的原因,然后验证修复措施。轮换源自您的在线店面自身的代码或应用,因此您需要在在线店面上解决此问题,并且进行某些检查需要访问您的模板代码。
要求
要完成此页面上的检查,您需要以下工具:
- 具有开发者工具的桌面浏览器,例如 Chrome、Edge、Firefox 或 Safari。
- 您的在线店面模板代码、自定义脚本或应用配置的访问权限。
- 同意管理平台设置的访问权限(如果您的商店使用了该平台)。
Shopify 访问 Cookie 的工作原理
以下 Cookie 用于记录访客在您在线店面上的活动:
| Cookie | 描述 |
|---|---|
_shopify_s | 识别浏览器会话和商店的组合。从最后一次使用起有 30 分钟的滚动到期时间。 |
_shopify_y | 支持 Shopify Analytics。在 1 年后到期。 |
当在访客的浏览器中设置访问 Cookie 时,它将具有一个唯一值,例如 1a2b3c4d-1a2b-3c4d-1a2b-3c4d5e6f7a8b。当某次访问到期并开始新的访问时,该 Cookie 会更改为另一个唯一值,例如 5e6f7a8b-5e6f-7a8b-5e6f-7a8b9c0d1e2f。
因为 _shopify_s 的到期时间是滚动的,所以访客的每一项行动都会刷新该时间。在未发生轮换的在线店面上,该值在整个访问期间保持不变,并且仅在不活跃 30 分钟后才会到期。如果在访问中途该值发生了更改,则更改前后的活动会被计为 2 次独立的访问。
检查访问 Cookie 是否发生轮换
您可以使用浏览器运行 Cookie 轮换检查。您无法通过“分析”报告诊断 Cookie 轮换,因为这些报告显示的是访问量总数,而不是每次访问被创建的原因。请在隐私或无痕浏览窗口中完成检查,以免现有的 Cookie 和浏览器扩展程序影响结果。
运行检查的位置非常重要。您的同意横幅仅在您的商店配置的区域中显示,而大多数轮换都发生在同意流程中,因此在没有横幅的区域中运行检查可能完全错过此问题。请确认您的商店需要在哪些区域征求同意,然后从这些区域之一运行检查。如果您自己无法从该区域浏览,请让可以浏览的同事或开发人员代劳。若要查看您的商店需要在哪些区域征求同意,请参阅管理您的 Cookie 横幅。
若要确认 Cookie 行为,请在每种同意状态下在您的在线店面上运行此检查:
- 不响应横幅
- 同意使用 Cookie 后
- 拒绝同意后
步骤:
- 在隐私或无痕浏览窗口中打开您的在线店面。确认您正在使用相应的区域进行检查,并已决定要检查的同意状态。
- 打开浏览器的开发者工具。
- 在浏览器的开发者工具中打开 Cookies 面板:
- 在 Chrome 中,转至 Application > Storage > Cookies。
- 在 Firefox 中,转至 Storage > Cookies。
- 在 Safari 中,首先在 Settings > Advanced > Show features for web developers 中开启“开发”菜单,然后转至 Develop > Show Web Inspector > Storage > Cookies。
- 对于其他浏览器,请参阅其支持文档以了解操作步骤。
- 选择您的域名。
- 在列表中找到
_shopify_s,并记下其值的前几个字符。如果列表中没有_shopify_s,请继续浏览并观察 Cookies 面板 30 到 60 秒,然后再对 Cookie 行为得出结论。 - 保持开发者工具处于打开状态,正常浏览您的在线店面,并访问 3 到 4 个页面(包括产品页面和购物车)。
- 在浏览每个页面后检查
_shopify_s的值,并在单个页面上停留 1 分钟后再次检查。
根据您的 Cookie 同意横幅活动,Cookie 通常会表现出以下行为:
- 在访客响应同意横幅之前,以及在访客拒绝同意之后,预计不会存在 Cookie。
- 在访客接受同意之后预计会出现 Cookie,这是唯一必须生成 Cookie 的同意状态。
如果您在接受同意后该 Cookie 仍然缺失,或者如果您的商店在您测试所在的区域不要求征求同意,则说明您的在线店面上有什么内容阻止或删除了它。请按照确定 Cookie 轮换的原因进行排查。
在 Cookie 轮换检查期间,以下行为表明发生了轮换:
- Cookie 值在访问期间的任何时候发生更改。
- 出现又消失的 Cookie。
确定 Cookie 轮换的原因
Shopify 无法检测出触发 Cookie 轮换的原因,因为该逻辑在您的在线店面内运行。Shopify 也无法将此行为归因于特定的应用或厂商。
要确定 Cookie 轮换的原因,请按顺序在以下故障排除范围内进行排查。同意处理是导致 Liquid 在线店面上出现大多数轮换的原因:
- 检查您的同意管理平台行为。
- 检查您的Cookie 横幅配置。
- 检查您的在线店面脚本和逻辑。
- 检查一般的Cookie 存储和行为。
同意管理平台行为
如果您的商店使用了第三方同意管理应用,请从此处开始排查。_shopify_s 在 Shopify Cookie 政策中被归类为报告和分析 Cookie,而不是必要的 Cookie,因此阻止或清除分析 Cookie 的同意应用会对它起作用。
步骤:
- 确定您的商店使用的是哪个同意管理应用。
- 在应用的设置中,查找
_shopify_s的归类方式,以及应用对该类别中 Cookie 的处理方式。 - 检查该应用是否在每次加载页面时都会清除并重新创建 Cookie,而不是仅根据访客的选择执行一次操作。
要解决此问题,请与应用开发者合作,让应用通过 Customer Privacy API 将每位访客的同意选择报告给 Shopify,而不是在每次加载页面时清除并重新创建分析 Cookie。请勿降低应用强制执行访客选择的频率,因为拒绝选择需要在此次访问期间持续生效。有关建议的设置,请参阅使用第三方 Cookie 横幅应用配置 Cookie 横幅。
更正从不向 Shopify 报告访客选择的同意工具不仅会改变将活动分组为访问的方式。修复后,以前未报告的选择将会生效,因此不再收集拒绝同意的访客的非必要数据,您的访问次数也可能因此下降。
Cookie 横幅配置
在您的商店要求提供同意的区域中,在访客接受之前,Shopify 不会设置分析 Cookie。在这些区域之外,Cookie 横幅默认处于未激活状态,因此在进行任何横幅交互之前,稳定的 _shopify_s 属于预期行为。要查看您的商店在哪些区域要求提供同意,请参阅管理 Cookie 横幅。
在要求提供同意的区域中,轮换发生在访客做出决定之前的窗口期内。同意工具没有保持 Cookie 不变,而是反复清除并重新创建它,每个循环都会记录为一次新的访问。
步骤:
- 在无痕浏览窗口中打开您的在线店面,且不要对同意横幅进行回应。
- 在浏览器的 Cookies 面板中观察
_shopify_s30 到 60 秒。 - 在横幅仍未得到回应期间,检查该值是否反复更改,或 Cookie 是否消失又重新出现。
- 对横幅进行回应,然后检查该行为是否停止。
要解决此问题,请确认您的商店配置了在哪些区域要求提供同意,并确保横幅通过 Customer Privacy API 向 Shopify 报告每位访客的选择,而不是在横幅打开时清除并重新创建 Cookie。如果该访客的分析数据已被阻止,但 Cookie 仍重新出现,则表明正在写入 Cookie 的并非同意工具,请继续排查本页面上的其余范围。
在线店面脚本和逻辑
并非所有的轮换都是由同意处理引起的。在正常访问期间任何删除、阻止、轮换或重新生成 _shopify_s 的脚本或在线店面逻辑都会导致轮换。例如,cart.js 大约每 10 秒被调用一次,Cookie 值也会随之重新生成。在另一个示例中,轮换被追溯到与同意工具无关的域名错误分类。
步骤:
- 在开发者工具中打开 Network 标签,然后选择 Preserve log。
- 在同一个页面上停留 60 秒,不要与其进行互动。
- 观察 Cookies 面板中的
_shopify_s值,并检查是否有任何在短循环中重复的请求,尤其是cart.js。 - 每次该值发生更改时,请注意在更改前立即运行了哪个请求或脚本。重复出现但未更改该值的请求并非引起问题的根源。
- 在您的模板代码、自定义脚本和标签管理器容器中搜索
document.cookie和_shopify_s。 - 确认您的在线店面是通过单个规范域名提供服务的。在 Cookies 面板中,检查
_shopify_s是否在不同的域名下显示了多次。 - 检查最近安装的应用和近期的模板更改。如果此行为是最近开始的,请将其与这些更改联系起来排查。
要解决此问题,请更正写入 Cookie 的代码,并确保在分析运行之前重定向会解析为一个规范的主机名。只有在确认重复请求会更改 _shopify_s 值后,才能对其进行限制或删除,因为购物车、库存和聊天功能可以进行合理的轮询而不会影响 Cookie。
更正重写 Cookie 的脚本、应用或域名,只会改变将现有访客活动分组为访问的方式。收集的数据不会发生更改。
Cookie 存储和行为
虽然尚未发现轮换直接源于 Cookie 属性,但在排查了其他范围后,值得将其排除。
步骤:
- 在 Cookies 面板中,检查
_shopify_s的 Domain、Path、Expires 和 SameSite 值,而不仅仅是其数值。 - 确认没有任何内容用更短的生命周期,或比 Shopify 设置的更窄的路径来覆盖该 Cookie。
要解决此问题,请删除覆盖 Cookie 属性的代码或应用设置。
验证修复
请通过检查 Cookie 而不是查看您的分析报告来确认修复效果。在整个访问期间保持稳定的 _shopify_s 值标志着修复已生效。修复前记录的访问数据不会重新处理,因此您的历史报告将继续显示虚增的访问次数。
在新的无痕浏览窗口中重复检查访问 Cookie 是否正在轮换的步骤,并确认以下结果:
| 检查 | 预期结果 |
|---|---|
| 浏览 3 或 4 个页面,且不对同意横幅进行回应。 | 未设置 _shopify_s,或其保持稳定的值。 |
| 接受同意后重复该检查。 | _shopify_s 保持稳定的值。 |
| 拒绝同意后重复该检查。 | 未设置 _shopify_s,或其保持稳定的值。 |
| 从产品页面移至购物车,然后再返回浏览。 | _shopify_s 值持续存在。 |
| 停留在同一页面 60 秒,并观察 Network 标签。 | 没有重复请求更改 _shopify_s 的值。 |
轮换继续时的后续步骤
轮换是由 Shopify 无法控制的代码或配置引起的,因此应由维护该代码的人员负责修复。如果您已排查本页面的所有方面,并且 _shopify_s 仍在轮换,请联系相关责任方:
- 对于同意管理平台或其他应用,请通过 Shopify App Store 中的应用产品页面联系应用开发者。
- 对于自定义模板代码、自定义脚本或标签管理器容器,请联系维护这些内容的开发者或机构。
提供以下详细信息,以便他们可以重现该行为:
- 您测试的同意状态,以及在每种状态下发生的情况。
- 您记录的
_shopify_s值,以及每次更改之前的页面或行动。 - 更改该值的任何重复请求,以及发起该请求的脚本。
- 您已做出的更改。