识别并解决在线店面上的访问 Cookie 轮换问题

Cookie 轮换是指在线店面中的某个内容会在一次访问期间重新生成访问 Cookie。每个新值都会被计为一次单独的访问,因此您的商店记录的访问量会多于实际发生的访问量;又因为访问量是计算转化率的分母,您的转化率就会偏低。您的订单量、销售额和客户数量不受影响。

Shopify 使用名为 _shopify_s 的 Cookie 来识别商店的浏览器会话,并且 Shopify Analytics 会使用该 Cookie 将访客的活动分组为各个访问。访问也有其预期的边界(例如不活动和世界标准时间午夜),相关内容涵盖在对比访问量和访客中。

您可以检查您的浏览器,以确定在线店面上的 Cookie 是否正在发生轮换并找出导致轮换的原因,然后验证修复措施。轮换源自您的在线店面自身的代码或应用,因此您需要在在线店面上解决此问题,并且进行某些检查需要访问您的模板代码。

要求

要完成此页面上的检查,您需要以下工具:

  • 具有开发者工具的桌面浏览器,例如 Chrome、Edge、Firefox 或 Safari。
  • 您的在线店面模板代码、自定义脚本或应用配置的访问权限。
  • 同意管理平台设置的访问权限(如果您的商店使用了该平台)。

Shopify 访问 Cookie 的工作原理

以下 Cookie 用于记录访客在您在线店面上的活动:

用于记录访客在在线店面上活动的 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 后
  • 拒绝同意后

步骤:

  1. 在隐私或无痕浏览窗口中打开您的在线店面。确认您正在使用相应的区域进行检查,并已决定要检查的同意状态。
  2. 打开浏览器的开发者工具。
  3. 在浏览器的开发者工具中打开 Cookies 面板:
    • 在 Chrome 中,转至 Application > Storage > Cookies
    • 在 Firefox 中,转至 Storage > Cookies
    • 在 Safari 中,首先在 Settings > Advanced > Show features for web developers 中开启“开发”菜单,然后转至 Develop > Show Web Inspector > Storage > Cookies
    • 对于其他浏览器,请参阅其支持文档以了解操作步骤。
  4. 选择您的域名。
  5. 在列表中找到 _shopify_s,并记下其值的前几个字符。如果列表中没有 _shopify_s,请继续浏览并观察 Cookies 面板 30 到 60 秒,然后再对 Cookie 行为得出结论。
  6. 保持开发者工具处于打开状态,正常浏览您的在线店面,并访问 3 到 4 个页面(包括产品页面和购物车)。
  7. 在浏览每个页面后检查 _shopify_s 的值,并在单个页面上停留 1 分钟后再次检查。

根据您的 Cookie 同意横幅活动,Cookie 通常会表现出以下行为:

  • 在访客响应同意横幅之前,以及在访客拒绝同意之后,预计不会存在 Cookie。
  • 在访客接受同意之后预计会出现 Cookie,这是唯一必须生成 Cookie 的同意状态。

如果您在接受同意后该 Cookie 仍然缺失,或者如果您的商店在您测试所在的区域不要求征求同意,则说明您的在线店面上有什么内容阻止或删除了它。请按照确定 Cookie 轮换的原因进行排查。

在 Cookie 轮换检查期间,以下行为表明发生了轮换:

  • Cookie 值在访问期间的任何时候发生更改。
  • 出现又消失的 Cookie。

Shopify 无法检测出触发 Cookie 轮换的原因,因为该逻辑在您的在线店面内运行。Shopify 也无法将此行为归因于特定的应用或厂商。

要确定 Cookie 轮换的原因,请按顺序在以下故障排除范围内进行排查。同意处理是导致 Liquid 在线店面上出现大多数轮换的原因:

  1. 检查您的同意管理平台行为
  2. 检查您的Cookie 横幅配置
  3. 检查您的在线店面脚本和逻辑
  4. 检查一般的Cookie 存储和行为

如果您的商店使用了第三方同意管理应用,请从此处开始排查。_shopify_s 在 Shopify Cookie 政策中被归类为报告和分析 Cookie,而不是必要的 Cookie,因此阻止或清除分析 Cookie 的同意应用会对它起作用。

步骤:

  1. 确定您的商店使用的是哪个同意管理应用。
  2. 在应用的设置中,查找 _shopify_s 的归类方式,以及应用对该类别中 Cookie 的处理方式。
  3. 检查该应用是否在每次加载页面时都会清除并重新创建 Cookie,而不是仅根据访客的选择执行一次操作。

要解决此问题,请与应用开发者合作,让应用通过 Customer Privacy API 将每位访客的同意选择报告给 Shopify,而不是在每次加载页面时清除并重新创建分析 Cookie。请勿降低应用强制执行访客选择的频率,因为拒绝选择需要在此次访问期间持续生效。有关建议的设置,请参阅使用第三方 Cookie 横幅应用配置 Cookie 横幅

更正从不向 Shopify 报告访客选择的同意工具不仅会改变将活动分组为访问的方式。修复后,以前未报告的选择将会生效,因此不再收集拒绝同意的访客的非必要数据,您的访问次数也可能因此下降。

在您的商店要求提供同意的区域中,在访客接受之前,Shopify 不会设置分析 Cookie。在这些区域之外,Cookie 横幅默认处于未激活状态,因此在进行任何横幅交互之前,稳定的 _shopify_s 属于预期行为。要查看您的商店在哪些区域要求提供同意,请参阅管理 Cookie 横幅

在要求提供同意的区域中,轮换发生在访客做出决定之前的窗口期内。同意工具没有保持 Cookie 不变,而是反复清除并重新创建它,每个循环都会记录为一次新的访问。

步骤:

  1. 在无痕浏览窗口中打开您的在线店面,且不要对同意横幅进行回应。
  2. 在浏览器的 Cookies 面板中观察 _shopify_s 30 到 60 秒。
  3. 在横幅仍未得到回应期间,检查该值是否反复更改,或 Cookie 是否消失又重新出现。
  4. 对横幅进行回应,然后检查该行为是否停止。

要解决此问题,请确认您的商店配置了在哪些区域要求提供同意,并确保横幅通过 Customer Privacy API 向 Shopify 报告每位访客的选择,而不是在横幅打开时清除并重新创建 Cookie。如果该访客的分析数据已被阻止,但 Cookie 仍重新出现,则表明正在写入 Cookie 的并非同意工具,请继续排查本页面上的其余范围。

在线店面脚本和逻辑

并非所有的轮换都是由同意处理引起的。在正常访问期间任何删除、阻止、轮换或重新生成 _shopify_s 的脚本或在线店面逻辑都会导致轮换。例如,cart.js 大约每 10 秒被调用一次,Cookie 值也会随之重新生成。在另一个示例中,轮换被追溯到与同意工具无关的域名错误分类。

步骤:

  1. 在开发者工具中打开 Network 标签,然后选择 Preserve log
  2. 在同一个页面上停留 60 秒,不要与其进行互动。
  3. 观察 Cookies 面板中的 _shopify_s 值,并检查是否有任何在短循环中重复的请求,尤其是 cart.js
  4. 每次该值发生更改时,请注意在更改前立即运行了哪个请求或脚本。重复出现但未更改该值的请求并非引起问题的根源。
  5. 在您的模板代码、自定义脚本和标签管理器容器中搜索 document.cookie_shopify_s
  6. 确认您的在线店面是通过单个规范域名提供服务的。在 Cookies 面板中,检查 _shopify_s 是否在不同的域名下显示了多次。
  7. 检查最近安装的应用和近期的模板更改。如果此行为是最近开始的,请将其与这些更改联系起来排查。

要解决此问题,请更正写入 Cookie 的代码,并确保在分析运行之前重定向会解析为一个规范的主机名。只有在确认重复请求会更改 _shopify_s 值后,才能对其进行限制或删除,因为购物车、库存和聊天功能可以进行合理的轮询而不会影响 Cookie。

更正重写 Cookie 的脚本、应用或域名,只会改变将现有访客活动分组为访问的方式。收集的数据不会发生更改。

虽然尚未发现轮换直接源于 Cookie 属性,但在排查了其他范围后,值得将其排除。

步骤:

  1. Cookies 面板中,检查 _shopify_sDomainPathExpiresSameSite 值,而不仅仅是其数值。
  2. 确认没有任何内容用更短的生命周期,或比 Shopify 设置的更窄的路径来覆盖该 Cookie。

要解决此问题,请删除覆盖 Cookie 属性的代码或应用设置。

验证修复

请通过检查 Cookie 而不是查看您的分析报告来确认修复效果。在整个访问期间保持稳定的 _shopify_s 值标志着修复已生效。修复前记录的访问数据不会重新处理,因此您的历史报告将继续显示虚增的访问次数。

在新的无痕浏览窗口中重复检查访问 Cookie 是否正在轮换的步骤,并确认以下结果:

解决访问 Cookie 轮换问题后要重复的检查,以及确认修复生效的结果。
检查预期结果
浏览 3 或 4 个页面,且不对同意横幅进行回应。未设置 _shopify_s,或其保持稳定的值。
接受同意后重复该检查。_shopify_s 保持稳定的值。
拒绝同意后重复该检查。未设置 _shopify_s,或其保持稳定的值。
从产品页面移至购物车,然后再返回浏览。_shopify_s 值持续存在。
停留在同一页面 60 秒,并观察 Network 标签。没有重复请求更改 _shopify_s 的值。

轮换继续时的后续步骤

轮换是由 Shopify 无法控制的代码或配置引起的,因此应由维护该代码的人员负责修复。如果您已排查本页面的所有方面,并且 _shopify_s 仍在轮换,请联系相关责任方:

  • 对于同意管理平台或其他应用,请通过 Shopify App Store 中的应用产品页面联系应用开发者。
  • 对于自定义模板代码、自定义脚本或标签管理器容器,请联系维护这些内容的开发者或机构。

提供以下详细信息,以便他们可以重现该行为:

  • 您测试的同意状态,以及在每种状态下发生的情况。
  • 您记录的 _shopify_s 值,以及每次更改之前的页面或行动。
  • 更改该值的任何重复请求,以及发起该请求的脚本。
  • 您已做出的更改。