Coupert SP 用户分层完整分析

从主商家 9 类聚类,到 R×F 8 桶画像,最终 10 个可营销分层桶
日期:2026-07-09 作者:chensu & Claude 窗口:2026-04-09 ~ 2026-07-07(90d) 用户样本:1,944,514 数据源:StarRocks / dws_log_sp_user_shopping_journey_detail_di

目录

  1. TL;DR — 核心结论一屏
  2. 分析目标与背景
  3. 数据基础与口径
  4. Step 1:主商家 9 类聚类
  5. Step 2:R/F/M 分布探查
  6. Step 3:R×F 8 桶大盘分层
  7. Step 4:R×F × 主商家 交叉画像
  8. 最终 10 个营销分层桶
  9. 三大结论 + 后续建议
  10. 附录:字段释义 & 完整 SQL 集

0 · TL;DR — 核心结论一屏

SP 用户总数(90d)
1.94M
真实 SP,剔除首页误触/无 checkout
Champions 用户占比
16.89%
33 万人
Champions 贡献 GMV
49.75%
$573M / $1.15B
Lost 用户占比
24.19%
47 万人 → 仅贡献 5.4% GMV
🎯 三条黄金结论
  1. 17% 用户创造 50% GMV — Champions(近期高频综合电商)是绝对核心资产。保卫 Champions > 救回 AtRisk > 培育新客
  2. Amazon 是生命线 — Champions 中 89% 是综合电商用户,其中 Amazon 占大头(205万 SP / 33.6万用户,占 Ecom 用户 30%)。Amazon 服务体验降级 = 直接冲击核心资产
  3. 47 万 Lost 用户不投 — 一次性用户 90d 未回归,转化率业内 <2%,营销预算应转移给 B4 AtRisk(人均 GMV $1015)

📊 R×F 8 桶大盘(按 GMV 占比排序)

🏆 B1 Champions
49.75%
$573M
⭐ B2 Loyal
12.4%
$143M
🚀 B8 MidActive
11.6%
$134M
💤 B5 Hibernating
9.06%
$104M
⚠️ B4 AtRisk
8.66%
$100M
🌑 B6 Lost
5.41%
$62M
🆕 B3 NewBuyer
1.62%
$19M
🌱 B7 MidNew
1.53%
$18M

1 · 分析目标与背景

1.1 目标

把 Coupert 里"会在 CPS 商家实际购物"的 SP 用户,按营销可运营的维度分成若干桶,供后续差异化营销素材、Push 频次、邮件策略、返现补贴使用。

❌ 这不是什么
  • 不是 LTV 价值分层 — 不算未来净利润
  • 不是经典 R×F×M 硬套 — 因为不同类目天然频次差异会污染分层
  • 不是 Coupert 内部服务偏好分层 — 那是 CB/AT/PCP 弹窗策略分析
✅ 这是什么
  • 营销可运营的桶 — 每桶有明确策略、规模、GMV 权重
  • 基于真实 SP 行为 — 只看真下过单的用户,不看曝光/点击的池
  • 4 维度画像:主商家类目 + R + F + M

1.2 4 维度

维度定义取值范围业务含义
主商家类目用户 90d 内 SP 次数最多的商家类目9 类(综合电商/旅游/食品/电子/家居/健康/商务/其他/未分类)用户购物倾向(在哪里买)
R (Recency)最近一次 SP 距 2026-07-07 的天数0 – 90 天新鲜度(还活跃吗)
F (Frequency)90d 内 SP 次数(distinct sp_id)1 – 数百购物频次
M (Monetary)90d 累计订单金额(USD, cap $10k/单)$0 – $50k+消费能力(GMV 权重)

1.3 为什么加"主商家类目"

💡 关键设计选择

经典 RFM 会把"一年买 2 次机票的高价值旅游用户"和"一年买 2 次电脑的电子用户"扔到同一桶(F=2 中频),但他们营销策略完全不同 — 一个要做旅游季触发,一个要做数码新品推送。

加入"主商家类目"后,我们能识别:这个用户是"综合电商高频"还是"垂直类低频专家",从而给出差异化策略。

2 · 数据基础与口径

2.1 主数据源:soar_dw.dws_log_sp_user_shopping_journey_detail_di

Coupert SP(Shopping Success)用户成单明细宽表。每一行 = 一次 SP journey(一个 checkout 页触发的下单流程)。

关键字段类型说明
ptdate分区日
guidvarcharCoupert 用户唯一标识(跨设备匿名 ID)
sp_idvarchar单次 SP journey 唯一 ID(distinct 后 = 频次 F)
domainvarchar下单商家域名(如 amazon.com, booking.com)
order_valuedouble订单金额,已归一化 USD(从 SP checkout 页取回)
cps_scoreint商家 CPS 质量分(≥40 为真实 CPS 商家阈值,chensu 定义)
create_timedatetimeSP 触发时间
extra_session_first_pagevarchar= '1' 表示"首页误触",非真实 SP
extra_no_checkoutvarchar= '1' 表示"没进 checkout",非真实 SP
service_usedtinyint是否使用了 Coupert 服务(CB/AT/PCP)

2.2 过滤条件(5 层)

#条件目的过滤前 → 过滤后
1pt BETWEEN '2026-04-09' AND '2026-07-07'90 天窗口(对齐 chensu 之前 30d/90d 双基线)
2cps_score >= 40只算"真 CPS 商家"(chensu memory: 低质小站 cps_score<40 剔除)
3COALESCE(extra_session_first_page,'0') != '1'剔除首页误触(chensu 明确要求)
4COALESCE(extra_no_checkout,'0') != '1'剔除未进 checkout(不算真 SP)
5order_value BETWEEN 0.01 AND 10000脏数据 cap(用于 M 计算,不影响用户圈选)
📌 口径说明

chensu 明确确认:"这个表已经是 cp 的数据了,不需要额外 bu=cp 过滤"。因此本次分析未加 bu 条件。
extra_session_first_pageextra_no_checkout 是 varchar 而非 int,比较时用字符串 '1'。

2.3 基础统计

总用户数
1,944,514
unique guid
SP 记录数
9,657,187
journey 条数
Unique 商家
21,793
unique domain
总 GMV
$1.15B
USD(capped)

2.4 基础 SQL

-- 基础用户表 SQL
SELECT guid, sp_id, domain, order_value, create_time
FROM soar_dw.dws_log_sp_user_shopping_journey_detail_di
WHERE pt BETWEEN DATE '2026-04-09' AND DATE '2026-07-07'
  AND cps_score >= 40
  AND COALESCE(extra_session_first_page, '0') != '1'
  AND COALESCE(extra_no_checkout, '0') != '1'

3 · Step 1:主商家 9 类聚类

3.1 为什么需要主商家类目

用户 SP 商家跨度大 —— 有人只买 amazon,有人在 booking / doordash / mi.com 都买。要给用户打"主类目"标签,就必须先给每个 domain 打上类目标签,再按用户 SP 次数投票选出主类目。

3.2 类目源探查

数仓里有多张商家类目表,chensu 指定用 soar_dw.v_dwd_store_merchant_ai_audit_df(AI 判定的商家审核表)。

候选表字段状态说明
ods_coupert_store_store_merchant_ai_audit_dfcategory❌ 权限拒绝需申请
ods_coupert_tracking_store_base_info_dfcategory/sub_category❌ 权限拒绝需申请
ods_coupert_tracking_merchant_category_hd_dffirst/secondary_category❌ 权限拒绝需申请
dim_pub_normalmerchant_dfcategory_detail⚠️ 可用但脏SimilarWeb 数据,Unknown 73K
v_dwd_store_merchant_ai_audit_dfcategory, shopping_type, is_merchant✅ 采用186K unique domain 全量,34 类

audit 表字段结构

DESCRIBE soar_dw.v_dwd_store_merchant_ai_audit_df;
-- 核心字段:
-- pt (datetime), store_id, domain, category (varchar 256),
-- shopping_type, is_merchant (0/1), ai_model, ai_prompt_version
-- 每个 domain 只在被审核的那天出现一次(非每日快照),所以取 domain 最新记录用 ROW_NUMBER

3.3 覆盖率验证

✅ Join 覆盖率极佳
SP domain 数
21,793
100%
Join 上 audit
16,221
74% (但流量占 99.7%)
有 category
14,961
流量占 64.9%
is_merchant=1
63.1%
SP 流量占比

3.4 34 类 → 9 大类合并映射

#大类合并的原始 categoryDomain 数SP 流量占比
1综合电商E-commerce & Shopping3,12450.8%
2Uncategorized(空字符串 / NULL)4,29135.1%
3旅游Travel & Tourism + Tickets3165.6%
4食品Food & Drink872.1%
5电子Computers Electronics & Technology3212.1%
6家居Home & Garden1040.8%
7健康Health / Health & Fitness931.0%
8商务金融Business & Consumer Services + Finance + Science & Education + Legal + Jobs + Real Estate4541.5%
9其他Pets / Sports / Games / Vehicles / Arts / Adult / Gambling ...6351.1%

3.5 关键问题:Uncategorized 占 35% 流量,怎么办?

🔍 探查发现

拉 Uncategorized 里 top 100 高流量 domain 后发现:全部 100 个 status = IN_AUDIT_BUT_EMPTY(AI 跑过但没打 category 标签),且清一色是知名大牌。

Top 20 未分类 domain(按 SP 流量倒序)

#DomainSP 记录数用户数GMV ($)AOV手工归类
1amazon.com2,050,549336,183162.0M$86综合电商
2ebay.com212,31564,59727.2M$160综合电商
3booking.com210,31172,28087.6M$579旅游
4etsy.com132,34368,8386.6M$57综合电商
5doordash.com92,21120,6443.1M$43食品
6amazon.es46,91021,9163.3M$74综合电商
7woolworths.com.au42,47111,2907.6M$196食品(超市)
8amazon.it41,63317,0263.2M$86综合电商
9lieferando.de41,60111,7001.3M$36食品(外卖)
10target.com34,30517,4633.0M$91综合电商
11amazon.com.br31,75818,1271.7M$57综合电商
12chewy.com18,99612,3331.7M$91其他(宠物)
13aliexpress.us14,2845,5131.0M$73综合电商
14docmorris.de13,9277,5930.8M$64健康(药房)
15macys.com12,5804,5801.5M$243综合电商
16priceline.com10,7366,5622.7M$511旅游
17groupon.com8,4876,0120.6M$85综合电商
18kohls.com7,3064,8320.8M$105综合电商
19oscaro.com7,2196,0400.9M$123其他(汽配)
20amazon.pl7,0373,3160.4M$67综合电商
⚠️ 光 amazon.com 一家 = Uncategorized 用户的 60%

33.6 万用户 / 205 万 SP 记录都被算作"未分类",实际上就是 Amazon 主站的用户。手工兜底这 91 个 top domain 后,能救回 94% 的原 Uncategorized 用户

3.6 手工兜底 91 domain 分类分配

Ecom 综合电商(38 个)

amazon 各国(.com/.es/.it/.com.br/.pl/.in/.com.au/.com.be)、ebay/etsy/target/macys/kohls/belk/bedbathandbeyond/groupon/newlook/kogan/aliexpress/1688/wilko/barnesandnoble/jcrew/boohoo/desigual/placedestendances/intimissimi/pandora/laredoute/oakley/birkenstock/bonds/momox/rebuy/avon/eyebuydirect/carters/centauro

旅游 Travel(10 个)

booking / priceline / transavia / tripadvisor / etihad / ita-airways / jettours / promosejours / decolar / ticketmaster.fr

食品 Food(14 个)

doordash / lieferando.de / lieferando.at / pyszne.pl / dominos.co.uk / just-eat.ch / takeaway / foodlion / e.leclerc / monoprix / carrefour.com.br / woolworths.com.au / totalwine / nescafe-dolcegusto.com.br

电子 Electronics(9 个)

mi.com / notebooksbilliger / bestbuy.ca / farnell / tineco / waves / terabyteshop / alza.hu / alza.de

健康 Health(5 个)

docmorris / pharmacy2u / drmax / drogal / esn

家居 Home(3 个) / 商务 Business(3 个)

leroymerlin.es / bueroshop24 / yeti | myperfectresume / onfastspring / lebara

其他 Other(17 个)

宠物: chewy/petsmart/petsmart.ca/petco | 运动: hoka/dickssportinggoods/anacondastores/decathlon.com.br/nike.com.br/crocs/jdsports/topps | 汽配: motointegrator.de/motointegrator.fr/oscaro | 工具: acmetools/zoro

3.7 兜底前 vs 兜底后(Before / After)

#主类目Before (仅 AI)After (兜底 91 domain)变化 (pp)
1综合电商1,149,178 (59.10%)1,520,556 (78.20%)+19.1pp ⬆️
2Uncategorized500,928 (25.76%)32,761 (1.68%)-24.1pp ⬇️⬇️
3旅游135,201 (6.95%)184,474 (9.49%)+2.5pp
4食品24,329 (1.25%)51,166 (2.63%)+1.4pp
5电子62,574 (3.22%)67,675 (3.48%)+0.3pp
6健康14,377 (0.74%)19,232 (0.99%)+0.3pp
7家居6,954 (0.36%)7,837 (0.40%)+0.04pp
8商务金融33,368 (1.72%)34,768 (1.79%)+0.07pp
9其他17,605 (0.91%)26,045 (1.34%)+0.4pp
💡 手工兜底效果
  • Uncategorized 从 25.8% → 1.68%(-24pp),尾巴基本清干净
  • 综合电商暴涨 59% → 78%,Amazon 系吸收进来
  • 兜底后所有 9 类主类目集中度全部 ≥0.86(Food 唯一 0.86,其他都 0.9+)
  • 结论:用户很垂直 —— 一个"电商用户" 88% 时间就在综合电商,不是"啥都逛"

3.8 完整聚类 SQL

-- ═══ Step 1: 用户主商家 9 类聚类 ═══
WITH audit_uniq AS (
  -- 取每个 domain 最新一次 AI 审核记录
  SELECT domain, category FROM (
    SELECT domain, category,
           ROW_NUMBER() OVER (PARTITION BY domain ORDER BY pt DESC, id DESC) AS rn
    FROM soar_dw.v_dwd_store_merchant_ai_audit_df
    WHERE domain IS NOT NULL AND domain != ''
  ) t1 WHERE rn = 1
),
manual_map AS (
  -- 手工兜底 91 个高流量 domain
  SELECT * FROM (VALUES
    ('amazon.com','1_Ecom'), ('amazon.es','1_Ecom'), ...(38 Ecom)
    ('booking.com','3_Travel'), ...(10 Travel)
    ('doordash.com','4_Food'), ...(14 Food)
    ('mi.com','5_Electronics'), ...(9 Electronics)
    ('docmorris.de','7_Health'), ...(5 Health)
    ... (17 Other, 3 Home, 3 Business)
  ) AS mm(domain, cat_manual)
),
sp AS (
  SELECT guid, domain
  FROM soar_dw.dws_log_sp_user_shopping_journey_detail_di
  WHERE pt BETWEEN DATE '2026-04-09' AND DATE '2026-07-07'
    AND cps_score >= 40
    AND COALESCE(extra_session_first_page, '0') != '1'
    AND COALESCE(extra_no_checkout, '0') != '1'
),
tagged AS (
  -- 每条 SP 记录打上 9 类标签:优先手工兜底,其次 AI 类目,最后 Uncategorized
  SELECT
    s.guid,
    COALESCE(
      m.cat_manual,
      CASE
        WHEN a.category = 'E-commerce & Shopping' THEN '1_Ecom'
        WHEN a.category IN ('Travel & Tourism','Tickets') THEN '3_Travel'
        WHEN a.category = 'Food & Drink' THEN '4_Food'
        WHEN a.category IN ('Computers Electronics & Technology',...) THEN '5_Electronics'
        WHEN a.category = 'Home & Garden' THEN '6_Home'
        WHEN a.category IN ('Health','Health & Fitness') THEN '7_Health'
        WHEN a.category IN ('Business & Consumer Services','Finance',...) THEN '8_Business'
        WHEN a.category IS NULL OR a.category = '' THEN '2_Uncategorized'
        ELSE '9_Other'
      END
    ) AS cat9
  FROM sp s
  LEFT JOIN audit_uniq a ON a.domain = s.domain
  LEFT JOIN manual_map m ON m.domain = s.domain
),
user_cat AS (-- 每 user × 每类目 SP 次数
  SELECT guid, cat9, COUNT(*) AS c FROM tagged GROUP BY guid, cat9
),
user_cat_rn AS (
  SELECT guid, cat9, ROW_NUMBER() OVER (PARTITION BY guid ORDER BY c DESC, cat9) AS rn
  FROM user_cat
)
-- 主类目 = 该用户 SP 次数最多的类目
SELECT guid, cat9 AS main_cat FROM user_cat_rn WHERE rn = 1;

4 · Step 2:R/F/M 分布探查

4.1 为什么先看分布

按数据实际分布选切分点,避免"拍脑袋" 25%/50%/75% 分位。分布决定切分逻辑。

4.2 R (Recency) — 最近一次 SP 距 2026-07-07 天数

R 桶用户数占比累计解读
0-7 天421,30921.68%21.7%本周活跃
8-14 天233,86812.03%33.7%上周活跃
15-30 天387,39019.92%53.6%中期
31-60 天524,37826.97%80.6%1-2 月前
61-90 天377,56919.42%100.0%快流失
📊 R 分布洞察

R 分布相对均匀(各档 12-27%),没有明显的"活跃/沉睡"断层。这符合 SaaS 型产品特征 — Coupert 是随购物场景触发的,用户不会"每天用",但 90d 内会零散触发多次。

切分点选择:14d 和 30d — 一个 2 周(本月本周)+ 一个月线,符合运营周期。

4.3 F (Frequency) — 90d 内 SP 次数

F 桶用户数占比累计解读
F = 1700,06836.00%36.0%单次尝鲜
F = 2353,29718.17%54.2%重复过一次
F = 3-4352,98718.15%72.3%中低频
F = 5-9310,81615.99%88.3%中高频
F ≥ 10227,34611.69%100.0%核心忠粉
⚠️ F 分布呈"倒 J 型"

36% 用户只 SP 过 1 次(一次性用户,"漏斗尾部"),另一头是 11.7% 用户 SP ≥ 10 次。这是极其典型的幂律分布 —— 少数高频用户驱动大部分行为。

切分点选择:1 / 2-4 / 5+ — 一次性 vs 中频 vs 高频 3 档。

4.4 M (Monetary) — 90d 累计 GMV (USD)

M 桶用户数占比累计解读
$0169,5748.72%8.7%SP 有但 order_value 缺失(可能 checkout URL 提取失败)
$1-100636,96232.76%41.5%小额
$100-500667,34034.32%75.8%中额(中位数带)
$500-2000356,46718.33%94.1%较高
>$2000114,1715.87%100.0%高价值
📊 M 分布洞察

M 集中在 $100-500 中位带(34%),高价值 >$2000 只有 5.9%(≈ 11.4 万人)。
但注意 —— M 高度依赖 F(次数越多 GMV 越大),如果同时用 R×F×M 分桶会有严重共线性。因此本次分层不把 M 作为切分维度,只作为桶内画像属性使用。

4.5 分布探查 SQL

WITH ug AS (
  SELECT
    guid,
    DATEDIFF(DATE '2026-07-07', CAST(MAX(create_time) AS DATE)) AS r_days,
    COUNT(DISTINCT sp_id) AS f,
    SUM(CASE WHEN order_value BETWEEN 0.01 AND 10000 THEN order_value ELSE 0 END) AS m
  FROM sp
  GROUP BY guid
)
SELECT
  'R (recency days)' AS metric,
  SUM(CASE WHEN r_days <= 7 THEN 1 ELSE 0 END) AS b1_le7,
  SUM(CASE WHEN r_days BETWEEN 8 AND 14 THEN 1 ELSE 0 END) AS b2_8_14,
  ... (类似 for 15-30, 31-60, 61-90)
FROM ug
UNION ALL
SELECT 'F (sp count)', ... 类似 F 分档
UNION ALL
SELECT 'M (gmv usd)', ... 类似 M 分档

5 · Step 3:R×F 8 桶大盘分层

5.1 8 桶定义(经典 RFM 变体)

命名R 条件F 条件业务定位
B1🏆 Champions≤14d≥5近期&高频,核心资产
B2⭐ Loyal≤30d2-4近期&中频,稳定回头客
B3🆕 NewBuyer≤14d1近期&单次,新客
B4⚠️ AtRisk>30d≥5曾高频快流失,救回优先
B5💤 Hibernating>30d2-4中期休眠
B6🌑 Lost>30d1一次性丢失,几近死亡
B7🌱 MidNew15-30d1中期新客(新客回访前的 gap 期)
B8🚀 MidActive15-30d≥5准 Champion(等回来)

5.2 8 桶大盘分布(完整版)

用户数用户%avg_Ravg_Favg_M ($)Total GMVGMV%
B1 Champions328,45016.89%5.3d15.45$1,745$573.2M49.75% ⭐
B2 Loyal373,00419.18%13.4d2.80$383$142.7M12.38%
B3 NewBuyer116,1095.97%6.6d1.00$160$18.6M1.62%
B4 AtRisk98,3385.06%47.9d9.10$1,015$99.8M8.66%
B5 Hibernating333,28017.14%54.2d2.58$313$104.4M9.06%
B6 Lost470,32924.19%61.4d1.00$133$62.4M5.41%
B7 MidNew113,6305.84%22.7d1.00$155$17.6M1.53%
B8 MidActive111,3745.73%21.6d9.71$1,200$133.6M11.59%
合计1,944,514100%$1,151.8M100%

5.3 幂律可视化:用户占比 vs GMV 占比

用户占比

B1 Champions
16.89%
B2 Loyal
19.18%
B3 NewBuyer
5.97%
B4 AtRisk
5.06%
B5 Hibernating
17.14%
B6 Lost
24.19%
B7 MidNew
5.84%
B8 MidActive
5.73%

GMV 占比

B1 Champions
49.75%
B2 Loyal
12.38%
B3 NewBuyer
1.62%
B4 AtRisk
8.66%
B5 Hibernating
9.06%
B6 Lost
5.41%
B7 MidNew
1.53%
B8 MidActive
11.59%
💎 三个幂律关键点
  1. B1 极度倾斜:16.9% 用户 → 49.75% GMV(3× 权重)
  2. B6 极度低效:24.2% 用户 → 5.41% GMV(0.22× 权重,远低于平均)
  3. B4 是"隐藏金矿":只有 5.06% 用户,但人均 $1,015 GMV,仅次于 B1。这些是"曾经的 Champions",如能救回,权重 1.7×

5.4 8 桶分层 SQL(核心逻辑)

-- ═══ Step 3: R×F 8 桶分层 ═══
WITH user_rfm AS (
  SELECT
    guid,
    DATEDIFF(DATE '2026-07-07', CAST(MAX(create_time) AS DATE)) AS r_days,
    COUNT(DISTINCT sp_id) AS f,
    SUM(CASE WHEN order_value BETWEEN 0.01 AND 10000 THEN order_value ELSE 0 END) AS m
  FROM tagged  -- 来自 Step 1 的 tagged CTE
  GROUP BY guid
),
user_seg AS (
  SELECT guid, r_days, f, m,
    CASE
      WHEN r_days <= 14 AND f >= 5              THEN 'B1_Champions'
      WHEN r_days <= 30 AND f BETWEEN 2 AND 4 THEN 'B2_Loyal'
      WHEN r_days <= 14 AND f = 1              THEN 'B3_NewBuyer'
      WHEN r_days > 30 AND f >= 5              THEN 'B4_AtRisk'
      WHEN r_days > 30 AND f BETWEEN 2 AND 4  THEN 'B5_Hibernating'
      WHEN r_days > 30 AND f = 1               THEN 'B6_Lost'
      WHEN r_days BETWEEN 15 AND 30 AND f = 1  THEN 'B7_MidNew'
      WHEN r_days BETWEEN 15 AND 30 AND f >= 5 THEN 'B8_MidActive'
      ELSE 'B9_Other'
    END AS rf_bucket
  FROM user_rfm
)
SELECT
  rf_bucket,
  COUNT(*) AS users,
  ROUND(100.0 * COUNT(*) / SUM(COUNT(*)) OVER (), 2) AS pct,
  ROUND(AVG(r_days), 1) AS avg_r,
  ROUND(AVG(f), 2) AS avg_f,
  ROUND(AVG(m), 0) AS avg_m,
  SUM(m) AS total_gmv,
  ROUND(100.0 * SUM(m) / SUM(SUM(m)) OVER (), 2) AS gmv_pct
FROM user_seg
GROUP BY rf_bucket
ORDER BY rf_bucket;

6 · Step 4:R×F × 主商家 交叉画像(Heatmap)

6.1 每桶内主类目分布(占比 %,每行加起来 100%)

综合电商Uncat旅游食品电子家居健康商务其他总数
B1 Champions89.0%0.3%5.1%3.5%0.6%0.1%0.4%0.4%0.5%328K
B2 Loyal84.2%1.2%8.2%1.9%1.7%0.2%0.9%0.8%0.9%373K
B3 NewBuyer71.1%3.2%12.2%2.5%4.1%0.8%1.9%2.0%2.2%116K
B4 AtRisk77.7%0.7%11.9%3.3%3.1%0.2%0.4%1.6%1.0%98K
B5 Hibernating79.5%1.4%10.0%2.0%3.2%0.3%0.7%1.7%1.1%333K
B6 Lost67.3%3.0%11.7%2.7%7.1%0.7%1.5%3.7%2.2%470K
B7 MidNew69.8%3.0%12.4%2.6%5.3%0.8%1.7%2.2%2.2%114K
B8 MidActive84.9%0.5%7.9%3.5%1.3%0.2%0.5%0.6%0.7%111K

6.2 三大交叉洞察

💡 洞察 1:Champions = "Amazon 综合电商忠粉"

B1 里 89% 都是综合电商用户(垂直类合计只有 11%)。这告诉我们高频复购的主力就是 Amazon 系电商。综合电商类目内 Amazon 是绝对权重 ── 205 万 SP 记录 / 33.6 万独立用户,占电商类 30% 用户。

营销含义:Champions 池不需要按类目做子分层,一套"跨店电商返现"素材可以覆盖 89% 用户。

⚠️ 洞察 2:垂直类目用户被 RFM 误判为"流失"

对比 B1 vs B6:

  • B1 里电子用户 0.6%,B6 里电子用户 7.1%(12 倍!)
  • B1 里商务用户 0.4%,B6 里商务用户 3.7%(9 倍)
  • B1 里健康用户 0.4%,B6 里健康用户 1.5%(4 倍)

解释:电子/商务/健康 用户天然低频(一年买 1-2 次相机、注册一次简历工具、买一次药)。他们出现在 B6 Lost 桶里不是真流失,只是"品类特性决定的低频"。

营销含义:不要按 RFM 对垂直类用户做"流失挽回"营销,浪费预算。应该按品类事件触发(黑五数码/药房折扣季)。

🎯 洞察 3:旅游用户在每桶均匀分布

Travel 在每个 R×F 桶都占 5-12%(B1 5.1% / B2 8.2% / B3 12.2% / ... / B6 11.7%),没有明显集中。

解释:旅游是"事件驱动"型 —— 用户不会每天订机票,暑假前订、圣诞前订,各桶都存在。

营销含义:旅游用户单独抽出来做一个"旅游需求型"桶,用季节触发(旺季前 push)而不是 RFM。

6.3 交叉画像 SQL

SELECT
  rf_bucket,
  SUM(CASE WHEN main_cat='1_Ecom' THEN 1 ELSE 0 END) AS ecom,
  SUM(CASE WHEN main_cat='2_Uncategorized' THEN 1 ELSE 0 END) AS uncat,
  SUM(CASE WHEN main_cat='3_Travel' THEN 1 ELSE 0 END) AS travel,
  SUM(CASE WHEN main_cat='4_Food' THEN 1 ELSE 0 END) AS food,
  SUM(CASE WHEN main_cat='5_Electronics' THEN 1 ELSE 0 END) AS elec,
  -- ... home / health / biz / other 类似
  COUNT(*) AS total
FROM user_seg s
JOIN user_main u ON u.guid = s.guid  -- 来自 Step 1
GROUP BY rf_bucket
ORDER BY rf_bucket;

7 · 最终 10 个营销分层桶

综合 R×F 8 桶 + 主商家类目 heatmap,输出 10 个可运营的营销分层桶。按 GMV 权重 × 可营销性 排序。

🏆 CORE
1 · Amazon 综合电商忠粉(保卫)
主类=Ecom ∩ R ≤ 14 ∩ F ≥ 5
用户量:~29.2 万 GMV 占比:~44% 人均 GMV:$1,745 核心画像:Amazon/eBay/Etsy 高频用户,每周下单
策略:VIP 挂件 + 跨店叠加返现 + Prime Day/黑五提前推送 + 佣金分成 CBR 稍微上调保住粘性 + 独占体验(Coupert Pro 特权)
⭐ STABLE
2 · 稳定电商回头客
主类=Ecom ∩ R ≤ 30 ∩ F = 2-4
用户量:~31.4 万 GMV 占比:~10% 人均 GMV:$383 核心画像:Amazon 每月 2-3 单的稳定用户
策略:培育向上 → 推荐新品类返现(诱导跨店)+ 促发第 5 单达成 Champion(升级挂件)+ 展示"再买 2 单可达 XX 佣金"
⚠️ RESCUE
3 · 快流失高频电商(救回优先池)
主类=Ecom ∩ R > 30 ∩ F ≥ 5
用户量:~7.6 万 GMV 占比:~7% 人均 GMV:$1,015 核心画像:曾是 Champions,最近 30+ 天没回来
策略最高优先救回 — 唤醒邮件 + 大额返现补贴(比常规 +2-3% 补一次) + "回来抢返现"push + 排查是否近期 Coupert 服务体验坏(AT 出站失败等)导致流失
🚀 GROW
4 · 中期活跃(准 Champion 候补池)
主类=Ecom ∩ R 15-30d ∩ F ≥ 5
用户量:~9.5 万 GMV 占比:~10% 人均 GMV:$1,200 核心画像:2-4 周前活跃的高频用户
策略:推动跃迁到 Champion → "本周再下 1 单升级挂件" + 频次奖励(每 5 单给一次额外返现)
💤 WAKE
5 · 休眠电商中频
主类=Ecom ∩ R > 30 ∩ F = 2-4
用户量:~26.5 万 GMV 占比:~7% 人均 GMV:$313 核心画像:曾稳定但最近 1 个月没回来
策略:温和唤醒 → 邮件推送新商家 + 单次小额优惠激励 + 展示"最后一次返现兑现进度"
✈️ SEASONAL
6 · 旅游需求型
主类 = Travel(Booking/Priceline/机票/门票)
用户量:~18.4 万 GMV 占比:~14% 人均 AOV:$500-$1,000(旅游天然高单价) 核心画像:非连续性下单,事件驱动
策略:季节触发 → 暑期前/圣诞前/黑五重点推 Booking/Airbnb/机票 + 大额佣金分成(旅游 CBR 天然高)+ 不用 R 分层,用旅行事件日历
🍔 LOYAL
7 · 食品高频复购
主类 = Food(DoorDash / Lieferando / 超市 / 酒)
用户量:~5.1 万 GMV 占比:~2% 人均 SP:6.67 次/90d(最高频类目) 核心画像:外卖每周点、超市每 2 周去
策略:忠诚度绑定 → DoorDash 类 Weekly 返现提醒 + 累计满 X 单赠额外返现 + 高频商家专属挂件(每次结账都出现)
📱 VERTICAL
8 · 垂直类目专家
主类 = Electronics / Health / Home / Business
用户量:~12.9 万 GMV 占比:~7% 人均 SP:2-3 次/90d(天然低频) 核心画像:需求驱动,一年 1-2 次大单
策略:品类事件触发(不用 RFM)→ 黑五数码周推电子券 + 药房打折季推 Health + 报税季推 Business 工具 + 高单价商品的比价功能推荐
🆕 NURTURE
9 · 新客培育池
R ≤ 14d ∩ F = 1(所有类目)
用户量:~11.6 万 GMV 占比:~2% 人均 GMV:$160 核心画像:装机 1-14 天刚下第一单
策略:装机 7 天引导邮件序列 → 首次返现兑现动画 + "第二单额外 XX% 返现" + 引导添加高频商家收藏(提高留存)
🌑 DEAD
10 · 一次性丢失池(不投)
R > 30 ∩ F = 1(所有类目)
用户量:~47 万 GMV 占比:~5.4% 人均 GMV:$133 核心画像:装机后只用过 1 次就再没回来
策略不做营销投入(业内一次性用户 90d 未回归的转化率 <2%,ROI 极差)+ 释放出的预算转给 B4 AtRisk 救回 + 可保留在死名单里做产品体验分析(他们为什么只用了一次?)

8 · 三大结论 + 后续建议

结论 A:GMV 幂律严重,17% 用户贡献 50% 收益

🏆 保卫 Champions > 救回 AtRisk > 培育新客

Coupert 商业价值的重心不在"用户数",在"33 万 Champions"上。任何 Amazon 服务体验波动(如近期 AT 出站失败)都会直接冲击这个池子。

行动优先级

  1. Champions 保卫(33 万 × $1,745 = $573M/90d)
  2. AtRisk 救回(7.6 万 × $1,015 = $100M/90d,可挽回)
  3. 新客培育(11.6 万 → 培育为 Loyal,未来 GMV 池)
  4. Loyal 向上跃迁(31 万 → 目标转 Champions)

结论 B:Amazon 是 Coupert 生命线

🎯 Amazon 用户 = 33% Coupert SP 用户
  • Amazon 系(8 个国家站)合计 39 万独立用户(20% 全体用户)
  • Amazon 系合计 230 万 SP 记录(24% 全体 SP)
  • Champions 桶里 89% 是综合电商,其中 Amazon 是最大权重
  • Amazon 系 AOV 相对小($60-$90),但频次极高,累计 GMV 大

建议:单独设立"Amazon 服务健康度"监控 —— 出站成功率、返现兑现率、AT 弹窗准确率。任何一项下滑立即触发告警。

结论 C:47 万 Lost 用户不要浪费预算

🌑 一次性丢失 = 死名单

数据事实

  • B6 Lost 池 47 万用户占总用户 24.19%
  • 但只贡献 GMV 的 5.41%(0.22× 平均权重)
  • 业内一次性用户 90d 未回归的召回率 < 2%
  • 如果按 CPM $10 / 邮件 $0.01 计算,营销 ROI 远为负

行动:从营销预算中彻底剔除 B6 用户群。省下预算全部转移给 B4 AtRisk 救回(同样的钱救 7.6 万高价值用户,比撒给 47 万死用户高 20x ROI)。

但保留 B6 名单做产品体验分析 —— 为什么他们只用了一次就不来了?是弹窗过度?返现兑现不到位?跳转失败?这是产品迭代的输入。

后续建议 · 下一步深挖方向

  1. 每桶 top 商家清单 — 每个营销桶输出 top 20 商家 domain,做营销素材选品用
  2. Amazon 用户深度画像 — 单独拆 Amazon 忠粉的 AOV/子品类/复购频次
  3. 服务偏好维度(svc%)— 加第 3 维:每桶用户对 Coupert CB / AT / PCP 弹窗的偏好差异,用来定弹窗策略
  4. 桶迁移路径分析 — 90d 前的用户现在在哪个桶?B4→B1 是否可能?B3→B6 转化率?
  5. Amazon 服务健康 dashboard — 监控 Amazon 出站成功率 / 返现兑现率 / AT 弹窗准确率

9 · 附录:字段释义 & 完整 SQL 集

9.1 用户级聚合字段释义

字段计算逻辑业务解读取值范围
avg_svc%AVG per guid of SUM(service_used) / COUNT(records)平均服务使用率。该用户在他所有 SP 记录里用到 Coupert 服务(CB/AT/PCP 弹窗曝出并被使用)的比例。0=完全不用;1=每次都用。判断"Coupert 依赖度"0.0 – 1.0
avg_f (F)AVG per guid of COUNT(DISTINCT sp_id)平均 SP 次数(频次 F)。90d 内该用户下了几次单1 – 数百
avg_ov (M)AVG per guid of SUM(order_value) capped $10k平均订单总额(美元 M)。SP 表里 order_value 已归一化 USD,capped 是过滤脏数据(>10k 或 ≤0)。用户 90d 累计 GMV$0 – $50k+
avg_domAVG per guid of COUNT(DISTINCT domain)平均独立 CPS 商家数(多样性)。90d 内他在几个不同商家域名下过单。1=专一;5+=杂食1 – 数百
avg_r (R)AVG per guid of DATEDIFF('2026-07-07', MAX(create_time))平均距今天数(新鲜度 R)。最近一次 SP 距今多少天。0=昨天刚下;90=90d 前那一单是唯一记录(要流失了)0 – 90
📌 avg_svc% 的分母是 SP records 数(该 user 的 SP 总数),不是每次弹窗曝光数。它反映"这个用户当时是通过 Coupert 帮助的场景占比",不代表 Coupert 覆盖率。

9.2 主要数据表说明

表名用途关键字段行数量级
soar_dw.dws_log_sp_user_shopping_journey_detail_diSP 用户下单明细宽表(本次分析主表)guid, sp_id, domain, order_value, cps_score, create_time, service_used, extra_session_first_page, extra_no_checkout~1000 万/90d
soar_dw.v_dwd_store_merchant_ai_audit_dfAI 判定的商家审核表(类目来源)domain, category, shopping_type, is_merchant, pt186K 独立 domain
soar_dw.dim_pub_normalmerchant_dfSimilarWeb 商家维表(备用类目源)domain, category_detail~180K

9.3 完整端到端 SQL(复制即可运行)

-- ═══════════════════════════════════════════════
-- Coupert SP 用户分层完整 SQL · 2026-07-09
-- ═══════════════════════════════════════════════

WITH audit_uniq AS (
  -- 每个 domain 最新审核结果
  SELECT domain, category FROM (
    SELECT domain, category,
           ROW_NUMBER() OVER (PARTITION BY domain ORDER BY pt DESC, id DESC) AS rn
    FROM soar_dw.v_dwd_store_merchant_ai_audit_df
    WHERE domain IS NOT NULL AND domain != ''
  ) t1 WHERE rn = 1
),

manual_map AS (
  -- 91 个 top domain 手工兜底
  SELECT * FROM (VALUES
    -- Ecom 综合电商 (38)
    ('amazon.com','1_Ecom'),('amazon.es','1_Ecom'),('amazon.it','1_Ecom'),
    ('amazon.com.br','1_Ecom'),('amazon.pl','1_Ecom'),('amazon.in','1_Ecom'),
    ('amazon.com.au','1_Ecom'),('amazon.com.be','1_Ecom'),
    ('ebay.com','1_Ecom'),('etsy.com','1_Ecom'),('target.com','1_Ecom'),
    ('macys.com','1_Ecom'),('kohls.com','1_Ecom'),('belk.com','1_Ecom'),
    ('bedbathandbeyond.com','1_Ecom'),('groupon.com','1_Ecom'),
    ('newlook.com','1_Ecom'),('kogan.com','1_Ecom'),('aliexpress.us','1_Ecom'),
    ('1688.com','1_Ecom'),('wilko.com','1_Ecom'),('barnesandnoble.com','1_Ecom'),
    ('jcrew.com','1_Ecom'),('boohoo.com','1_Ecom'),('desigual.com','1_Ecom'),
    ('placedestendances.com','1_Ecom'),('intimissimi.com','1_Ecom'),
    ('pandora.net','1_Ecom'),('laredoute.co.uk','1_Ecom'),('oakley.com','1_Ecom'),
    ('birkenstock.com','1_Ecom'),('bonds.com.au','1_Ecom'),('momox.de','1_Ecom'),
    ('rebuy.de','1_Ecom'),('avon.com','1_Ecom'),('eyebuydirect.com','1_Ecom'),
    ('carters.com','1_Ecom'),('centauro.com.br','1_Ecom'),

    -- Travel 旅游 (10)
    ('booking.com','3_Travel'),('priceline.com','3_Travel'),('transavia.com','3_Travel'),
    ('tripadvisor.com','3_Travel'),('etihad.com','3_Travel'),('ita-airways.com','3_Travel'),
    ('jettours.com','3_Travel'),('promosejours.com','3_Travel'),
    ('decolar.com','3_Travel'),('ticketmaster.fr','3_Travel'),

    -- Food 食品 (14)
    ('doordash.com','4_Food'),('lieferando.de','4_Food'),('lieferando.at','4_Food'),
    ('pyszne.pl','4_Food'),('dominos.co.uk','4_Food'),('just-eat.ch','4_Food'),
    ('takeaway.com','4_Food'),('foodlion.com','4_Food'),('e.leclerc','4_Food'),
    ('monoprix.fr','4_Food'),('carrefour.com.br','4_Food'),('woolworths.com.au','4_Food'),
    ('totalwine.com','4_Food'),('nescafe-dolcegusto.com.br','4_Food'),

    -- Electronics 电子 (9)
    ('mi.com','5_Electronics'),('notebooksbilliger.de','5_Electronics'),
    ('bestbuy.ca','5_Electronics'),('farnell.com','5_Electronics'),
    ('tineco.com','5_Electronics'),('waves.com','5_Electronics'),
    ('terabyteshop.com.br','5_Electronics'),('alza.hu','5_Electronics'),('alza.de','5_Electronics'),

    -- Home 家居 (3)
    ('leroymerlin.es','6_Home'),('bueroshop24.de','6_Home'),('yeti.com','6_Home'),

    -- Health 健康 (5)
    ('docmorris.de','7_Health'),('pharmacy2u.co.uk','7_Health'),
    ('drmax.cz','7_Health'),('drogal.com.br','7_Health'),('esn.com','7_Health'),

    -- Business 商务 (3)
    ('myperfectresume.com','8_Business'),('onfastspring.com','8_Business'),('lebara.co.uk','8_Business'),

    -- Other 其他 (17): 宠物+运动+汽配+工具
    ('chewy.com','9_Other'),('petsmart.com','9_Other'),('petsmart.ca','9_Other'),
    ('petco.com','9_Other'),('hoka.com','9_Other'),('dickssportinggoods.com','9_Other'),
    ('anacondastores.com','9_Other'),('decathlon.com.br','9_Other'),
    ('nike.com.br','9_Other'),('crocs.com','9_Other'),('jdsports.fr','9_Other'),
    ('topps.com','9_Other'),('motointegrator.de','9_Other'),('motointegrator.fr','9_Other'),
    ('oscaro.com','9_Other'),('acmetools.com','9_Other'),('zoro.com','9_Other')
  ) AS mm(domain, cat_manual)
),

sp AS (
  SELECT guid, sp_id, domain, order_value, create_time
  FROM soar_dw.dws_log_sp_user_shopping_journey_detail_di
  WHERE pt BETWEEN DATE '2026-04-09' AND DATE '2026-07-07'
    AND cps_score >= 40
    AND COALESCE(extra_session_first_page, '0') != '1'
    AND COALESCE(extra_no_checkout, '0') != '1'
),

tagged AS (
  SELECT s.guid, s.sp_id, s.order_value, s.create_time,
    COALESCE(
      m.cat_manual,
      CASE
        WHEN a.category = 'E-commerce & Shopping' THEN '1_Ecom'
        WHEN a.category IN ('Travel & Tourism','Tickets') THEN '3_Travel'
        WHEN a.category = 'Food & Drink' THEN '4_Food'
        WHEN a.category IN ('Computers Electronics & Technology',
                             'Computers, Electronics & Technology') THEN '5_Electronics'
        WHEN a.category = 'Home & Garden' THEN '6_Home'
        WHEN a.category IN ('Health','Health & Fitness') THEN '7_Health'
        WHEN a.category IN ('Business & Consumer Services','Finance',
                             'Science & Education','Legal Services & Government',
                             'Jobs & Career','Real Estate') THEN '8_Business'
        WHEN a.category IS NULL OR a.category = '' THEN '2_Uncategorized'
        ELSE '9_Other'
      END
    ) AS cat9
  FROM sp s
  LEFT JOIN audit_uniq a ON a.domain = s.domain
  LEFT JOIN manual_map m ON m.domain = s.domain
),

user_cat AS (
  SELECT guid, cat9, COUNT(*) AS c
  FROM tagged GROUP BY guid, cat9
),
user_cat_rn AS (
  SELECT guid, cat9,
         ROW_NUMBER() OVER (PARTITION BY guid ORDER BY c DESC, cat9) AS rn
  FROM user_cat
),
user_main AS (
  SELECT guid, cat9 AS main_cat FROM user_cat_rn WHERE rn = 1
),

user_rfm AS (
  SELECT guid,
    DATEDIFF(DATE '2026-07-07', CAST(MAX(create_time) AS DATE)) AS r_days,
    COUNT(DISTINCT sp_id) AS f,
    SUM(CASE WHEN order_value BETWEEN 0.01 AND 10000 THEN order_value ELSE 0 END) AS m
  FROM tagged GROUP BY guid
),

user_seg AS (
  SELECT r.guid, u.main_cat, r.r_days, r.f, r.m,
    CASE
      WHEN r.r_days <= 14 AND r.f >= 5              THEN 'B1_Champions'
      WHEN r.r_days <= 30 AND r.f BETWEEN 2 AND 4 THEN 'B2_Loyal'
      WHEN r.r_days <= 14 AND r.f = 1              THEN 'B3_NewBuyer'
      WHEN r.r_days > 30 AND r.f >= 5              THEN 'B4_AtRisk'
      WHEN r.r_days > 30 AND r.f BETWEEN 2 AND 4  THEN 'B5_Hibernating'
      WHEN r.r_days > 30 AND r.f = 1               THEN 'B6_Lost'
      WHEN r.r_days BETWEEN 15 AND 30 AND r.f = 1  THEN 'B7_MidNew'
      WHEN r.r_days BETWEEN 15 AND 30 AND r.f >= 5 THEN 'B8_MidActive'
      ELSE 'B9_Other'
    END AS rf_bucket
  FROM user_rfm r JOIN user_main u ON u.guid = r.guid
)

-- 最终查询:R×F × 主类目 交叉画像
SELECT
  rf_bucket, main_cat,
  COUNT(*) AS users,
  ROUND(AVG(r_days), 1) AS avg_r,
  ROUND(AVG(f), 2) AS avg_f,
  ROUND(AVG(m), 0) AS avg_m,
  SUM(m) AS total_gmv
FROM user_seg
GROUP BY rf_bucket, main_cat
ORDER BY rf_bucket, main_cat;