跳至正文
Shopify · Google SEO

Shopify 客户数据与同意管理:隐私政策、Cookie 与跟踪

// / / 光算科技

客户数据的处理在 Shopify 后台有三处落点,顺序错了基本白做:先弄清页面上到底加载了哪些跟踪脚本,再决定哪些要等到取得同意之后再执行,最后才是改隐私政策文本。反过来,先改文案,结果多半是政策和页面实际加载的东西对不上,客户一问细节就露馅。

这篇文章只讲技术落地和检查点,不提供法律意见。店铺面向哪个地区、当地对同意形式有什么要求,这类判断需要专业顾问,也别照抄同行的政策页。

先把脚本盘点出来,再谈写什么

盘点方法不复杂,绕一圈页面就够了:看页面源码里引用的外部脚本域名,看浏览器网络面板里出现的第三方请求,看后台各个渠道和应用的像素设置页,再看主题代码里手写的追踪片段。列成一张表,每条写清域名、归属、用途,以及它在页面加载的什么阶段执行。

脚本盘点的四个来源:只看一处一定漏

只看一处一定漏(光算 · 示意图)

脚本类别通常来自哪里技术上落在哪
流量统计与事件上报主题里手写的统计代码,或统计分析类应用theme.liquid、主题 snippet、应用注入
广告与转化追踪广告平台、渠道类应用主题、应用注入、结账扩展
会话与体验类客服、热图、A/B 测试类应用应用注入的脚本
平台自身运行所需平台本身不用你处理

最容易漏的是主题里硬编码的追踪代码。它不出现在应用列表里,换主题或主题升级时可能被覆盖,也可能重复加载两份。检查时主题设置和代码要一起看。

同意之前的加载顺序怎么改

原则只有一条:如果某个脚本需要先取得同意,它就不能在页面打开时直接执行。做法是把它从模板里挪出来,改成拿到同意之后再注入。

<script>
  function loadAdPixel() {
    if (localStorage.getItem('consent-ads') !== 'granted') return;
    if (document.getElementById('ad-pixel')) return;
    var s = document.createElement('script');
    s.id = 'ad-pixel';
    s.src = 'https://example.com/pixel.js';
    s.async = true;
    document.head.appendChild(s);
  }

  document.addEventListener('consent-updated', loadAdPixel);
  window.addEventListener('load', loadAdPixel);
</script>

这段代码解决的是加载时序,不解决合规判断:同意状态没拿到,请求就不会发出去。同意从哪里来、以什么形式记录,取决于你用的同意管理工具和面向的地区。改动要动模板,先在副本主题里做,确认整条链路没问题再发布。

加载时序要自己测一遍,别信说明

工具装上了不等于生效。用一个干净的浏览器窗口,清空站点数据,在未同意的状态下打开首页和产品页,看网络面板里有没有第三方请求先发出去;再点一次同意,看请求有没有按预期出现。两次的差别就是实际的执行效果。这个测试几分钟能做一次,比读工具的说明文档可靠,也能顺带发现主题里重复加载的旧代码。

同意之前的加载顺序:先拦住请求,再谈提示文案

先拦住请求,再谈提示文案(光算 · 示意图)

改完脚本位置之后别急着下结论,先确认看到的是新版页面。主题、平台缓存和你的浏览器缓存都可能让你测到改动前的结果,测出来不对时先换一个无痕窗口或加一个随机参数重开一次,再判断是不是代码没生效。

政策文本和实际做法要对齐

检查可以按几个问句过一遍:政策里提到的每个工具,页面上是否真的存在;页面上加载的每个跟踪脚本,政策里是否写到了;政策里留的联系方式和表单是否可达、有没有人负责回复;客户提出查阅、更正或删除请求时,内部谁接、走什么流程、记录留在哪。最后一项缺得最多,政策和表单都写好了,真正执行的人却没有指派。

政策文本不是写完就放着的东西。加了一个统计工具、换了一套客服系统、开了一个新市场,都意味着政策里的清单要跟着改。把这件事写进网站上线的检查表:任何新增第三方脚本的动作,都要同时更新政策与同意配置,两边谁先谁后都行,但不能只做一边。

不同地区对同意形式的要求不同,平台上能打开某个设置项也不等于满足当地要求。Markets 可以按位置、客户组等条件为不同市场配置货币、语言、价格和主题内容(Shopify Markets 文档),这类能力解决的是展示差异,不是同意机制。面向多个市场时,用一套文案覆盖全部地区是最容易出问题的做法。

同意管理工具要看它实际拦住了什么

选同意管理方案时,宣传页上的"支持 GDPR 提示"这类描述基本没有区分度。真正要看的是四件事:它能不能在同意之前真的拦住请求,而不是只弹一个提示条;它能不能按地区给出不同的提示与默认状态,因为面向的地区不同,处理方式往往不一样;同意记录能不能导出,出了争议你需要证明当时取得过同意;它自己加载了多少脚本,有些工具为了显示一条横幅,引入的第三方请求比它管住的还多。

还有一件要提前确认的事:它与你正在用的统计、广告、客服方案是否兼容。技术上不兼容的常见表现是,工具记录了同意状态,但某个应用仍然按自己的逻辑加载,两边都以为对方在处理。

结账环节的数据不在你的控制范围内

结账页是平台控制最严的页面。第三方脚本能不能注入、以什么方式注入,取决于你的套餐和所用方案,具体能力以后台与平台文档为准,别照着店铺前台的思路去改结账页。商户能确定的通常是结账前收集了什么、在什么位置告知、客户能不能选择。把客户信息收集的字段加到没有必要那么多,本身也是数据处理上的负担。

访问与删除请求要同时覆盖平台、应用和表单

客户数据不只存在平台里。订单和客户资料在后台,同时也在你安装的应用手里。应用能访问什么,取决于安装时批准的访问范围,官方文档对这套机制写得很清楚(Shopify 应用认证与访问范围文档)。所以删除请求的处理要分三层看:平台内的记录、应用手里的数据、主题里可能残留的上报脚本。如果异常出现在订单侧——可疑下单、拒付、折扣码被批量使用——那属于风控问题,处理顺序见结账滥用与欺诈信号

应用只是临时用的话,先导出需要保留的记录,再撤权或卸载,最后清主题残留,顺序反了会丢数据;清理时要搜哪些标识、怎么确认某段代码确实来自已卸载的应用,见卸载插件后的残留清理

还有一类数据容易被忽略:联系表单和客服工具收到的内容。主题自带的表单通常直接把内容发到邮箱,应用接管的表单会存在它自己的表里,两者的导出方式和保留位置都不一样,替代或停用之前先确认旧内容能导出来。内部权限也算数据管理的一部分,谁能导出客户名单、谁只能看订单应该分开,共用登录信息的问题见账号安全那篇的检查项。

另有一种常见混淆值得点出来:屏蔽某些地区或来源的访问,解决的是"谁能看到店铺",和客户数据的处理合规是两件事,前者怎么做可以看怎么防止同行查看你的 shopify 网站

撤权和卸载这些动作本身也有风险,做之前先确认不会中断正常订单流程,具体顺序可以参考应用权限审计;而如果你连页面上有哪些脚本都还没列全,先做第三方脚本审计那一遍,同意管理才有东西可管。

收到查阅或删除请求时的执行顺序,建议固定在流程里,不要每次临时想:

  1. 确认请求人的身份和请求范围,明确是查阅、更正还是删除,涉及哪些数据。
  2. 在平台后台定位对应的客户记录与订单记录,确认哪些能直接处理、哪些涉及交易存档需要保留。
  3. 逐个检查装过的应用,看数据是否也同步到了它们那边,需要单独去应用里处理还是可以通过撤权解决。
  4. 处理完成后记录时间、处理方式和执行人,回复客户时把范围写清楚。
  5. 把这次处理涉及的应用与脚本位置补进你的清单,下次同类请求不用再从零找。

这三层里最容易被漏掉的是应用那一层。请求处理完,某个已经停用的应用里还留着一份客户数据,这类情况在审计时经常被发现,也说明脚本和数据清单需要定期更新,而不是一次性做完就归档。

哪些判断超出这篇文章的范围

  • 哪些脚本必须先取得同意、同意要用什么形式、记录保留多久,各地要求不同,需要专业意见。
  • 平台后台的设置项名称和位置会变,操作路径以后台实际显示为准。
  • 应用是否遵守你的同意设置,只能测出来,不能靠它的宣传说明。
  • 同意记录要不要留存、留成什么形式,属于法律判断,不由技术方案决定。
  • 面向的市场增加时,同意配置要重新评估,沿用原来的弹窗文案等于没做。

先做的两件事其实是脚本清单和加载时序,政策文本跟着它们改,改完还能对得上,客户或平台追问时你答得出来。技术层面能保证的是"该发出去的请求什么时候发出去",不能保证的是"这套做法在你的市场是否合规",把这两件事分开,就不容易在错误的层面上花时间。