Shopify附加脚本中如何识别未登录客户新老状态以计算联盟佣金?
识别Shopify未登录客户新老状态的方法
Shopify附加脚本区域本身没有直接提供识别未登录客户新老状态的原生变量——毕竟未登录用户没关联到店铺的客户账户系统,但可以通过以下几种实用方案实现需求:
1. 浏览器本地存储标记
这是最常用的前端方案,通过LocalStorage持久化用户访问状态:
- 用户首次访问时,在LocalStorage写入
shopify_customer_status标记,值设为new,同时记录首次访问时间; - 用户下单时读取该标记,判断是新客还是老客;
- 下单完成后更新标记为
returning,确保后续访问能识别为老客户。
示例代码:
// 首次访问初始化标记 if (!localStorage.getItem('shopify_customer_status')) { localStorage.setItem('shopify_customer_status', 'new'); localStorage.setItem('shopify_first_visit', new Date().toISOString()); } // 下单时获取客户状态 const customerStatus = localStorage.getItem('shopify_customer_status'); // 佣金计算逻辑 if (customerStatus === 'new') { // 执行新客户佣金规则 } else { // 执行老客户佣金规则 } // 下单后更新为老客户标记 localStorage.setItem('shopify_customer_status', 'returning');
2. 利用Shopify原生Cookie追踪
Shopify会给所有访客设置_shopify_y这类长期Cookie(有效期通常1年),可以通过检查该Cookie是否存在判断用户是否为回头客:
- 若Cookie不存在,判定为首次访问的新客户;
- 若Cookie存在,判定为之前访问过的老客户。
注意:这种方法依赖用户未清除Cookie,无法区分首次访问后未下单的情况,适合对新老客户定义较宽松的场景。
示例代码:
// 封装Cookie读取函数 function getCookie(name) { const value = `; ${document.cookie}`; const parts = value.split(`; ${name}=`); if (parts.length === 2) return parts.pop().split(';').shift(); } // 检查Shopify长期Cookie const hasShopifyYCookie = getCookie('_shopify_y'); const customerStatus = hasShopifyYCookie ? 'returning' : 'new'; // 后续佣金计算逻辑
3. 后端订单数据回溯(高精度方案)
如果你的联盟系统有后端服务,可以在用户下单后,将订单的邮箱/手机号(若用户填写)同步到后端,查询该标识是否在历史订单中存在:
- 存在则判定为老客户;
- 不存在则为新客户。
这种方法准确性最高,但需要额外的后端存储和查询逻辑,适合对新老客户判定要求严格的场景。
关键注意事项
- 所有前端追踪方法都有局限性:用户清除浏览器数据(Cookie/本地存储)会导致状态重置,无法100%准确识别;
- 必须符合GDPR、CCPA等隐私法规,确保追踪行为有明确的隐私政策告知,必要时获取用户同意。
内容的提问来源于stack exchange,提问作者mark
相关产品推荐
相关产品推荐

