SuperAPI AI 工具集

shopify-admin-rfm-customer-segmentation

营销与增长

查看项目

更新于 10-15 09:35

技能介绍

用途 该技能对店铺全部客户执行完整的 RFM(Recency、Frequency、Monetary)分析,即最近购买时间、购买频次和消费金额三个维度。每位客户在三个维度上分别得到 1-5 分,然后被归入可执行的分群:Champions、Loyal Customers、Potential Loyalists、At-Risk、Hibernating、Lost 等。默认只读,不产生任何数据变更。

前置条件 需要已认证的 Shopify CLI 会话:shopify store auth --store <domain> --scopes read_orders,read_customers。API 需要 read_orders、read_customers 权限。

参数

  • store(string,必填):店铺域名,例如 mystore.myshopify.com。
  • days_back(integer,选填,默认 365):订单历史回溯窗口。
  • segments(integer,选填,默认 5):每个维度的分位桶数量(3 或 5)。
  • min_orders(integer,选填,默认 1):客户被评分所需的最低订单数。
  • tag_customers(boolean,选填,默认 false):若为 true,则给客户添加 RFM 分群标签(需要 write_customers 权限)。
  • format(string,选填,默认 human):输出格式,human 或 json。

安全说明 默认只读。若设置 tag_customers: true,会通过 customerUpdate mutation 添加标签,建议先用 dry_run: true 试运行。

RFM 分群定义

  • Champions:R 5、F 5、M 5,最佳客户,近期购买、频繁、高消费。
  • Loyal Customers:R 3-5、F 4-5、M 4-5,持续购买且消费能力强。
  • Potential Loyalists:R 4-5、F 2-3、M 2-3,近期购买、可能成为忠诚客户。
  • New Customers:R 5、F 1、M 1-2,刚完成首次购买。
  • Promising:R 4、F 1-2、M 1-2,近期但频次低,需要培育。
  • Need Attention:R 3、F 3、M 3,各维度均处于平均,正在下滑。
  • About to Sleep:R 2-3、F 2、M 2,最近购买时间和频次低于平均。
  • At Risk:R 1-2、F 4-5、M 4-5,曾是优质客户但近期未购买。
  • Hibernating:R 1-2、F 1-2、M 1-3,所有维度偏低,接近流失。
  • Lost:R 1、F 1-2、M 1-5,很久没有购买。

工作流程

  1. 查询订单:按 created_at:>='<NOW - days_back days>' 过滤,first: 250,选取 createdAt、totalPriceSet、customer { id, email, firstName, lastName, numberOfOrders },使用游标分页直至取完。预期输出:窗口内所有订单及其客户关联信息。
  2. 按客户聚合:Recency = 距最近一次订单的天数;Frequency = 窗口内订单总数;Monetary = 窗口内总消费。
  3. 使用分位分桶对每个维度打 1-5 分:按各指标对所有客户排序,分成 N 个等规模组(五分位),赋予分数(5 为最佳:Recency 最新、Frequency 最频繁、Monetary 消费最高)。
  4. 将 (R, F, M) 分数组合映射到上述命名分群。
  5. 查询客户(补充信息):输入各分群的客户 ID,获取联系方式。预期输出:各分群头部客户的邮箱、姓名、标签。

GraphQL 操作 订单查询(已针对 api_version 2025-01 验证): query OrdersForRFM($query: String!, $after: String) { orders(first: 250, after: $after, query: $query) { edges { node { id createdAt totalPriceSet { shopMoney { amount currencyCode } } customer { id email firstName lastName numberOfOrders } } } pageInfo { hasNextPage endCursor } } }

客户查询(已针对 api_version 2025-01 验证): query CustomerDetails($query: String, $after: String) { customers(first: 250, after: $after, query: $query) { edges { node { id email firstName lastName numberOfOrders totalSpentV2 { amount currencyCode } tags createdAt } } pageInfo { hasNextPage endCursor } } }

会话跟踪 该技能要求在每一阶段输出指定内容(开始、每步之后、完成时)。开始输出技能名称、店铺域名、开始时间戳;每步后输出 [N/TOTAL] 查询/变更操作名、关键参数摘要、结果数量或结果;完成时按 human 或 json 格式输出报告。

human 格式报告包含:RFM 分段报告(days_back 天数)、已评分客户数,各分群数量、占比、平均消费(Champions、Loyal Customers、Potential Loyalists、At Risk、Hibernating、Lost),以及 Top Champions、Top At-Risk(赢回候选)明细,并输出 rfm_segments_<date>.csv。 json 格式输出包含 skill、store、period_days、customers_scored、segments(各分群 count、pct、avg_spend)以及 output_file。

输出格式 CSV 文件 rfm_segments_<YYYY-MM-DD>.csv,列为:customer_id, email, first_name, last_name, recency_days, frequency, monetary, r_score, f_score, m_score, rfm_segment。

错误处理

  • THROTTLED:API 速率超限,等待 2 秒,最多重试 3 次。
  • Guest orders:无客户关联的订单,跳过,无法归属到 RFM 画像。
  • Single-order customers:新客户或一次性购买者,纳入并设 F=1,频次维度自然得分偏低。

最佳实践

  • 多数店铺使用 days_back: 365 以覆盖季节性购买规律;快时尚或快消品可用 days_back: 180。
  • Champions 和 Loyal 分群适合独家优惠和提前访问活动。
  • At-Risk 客户应立即进行赢回活动,可配合 customer-win-back 技能使用。
  • 将 Lost 分群导出为排除名单,避免广告浪费。
  • 可与 customer-cohort-analysis 交叉分析,观察随时间变化的群组级 RFM 趋势。
  • 可与 customer-spend-tier-tagger 配合,基于 RFM 分群自动打标签。

限制 该技能默认只读;只有在显式开启 tag_customers 时才会写入标签,且需要 write_customers 权限。未提供其他功能性限制、收费或价格信息。