客户细分指的是在 SHOPLINE Admin 筛选出的满足指定条件客户的分组,客户细分条件即这些条件的集合。例如:商家可以将所有订阅电子邮件营销的客户保存为一个客户细分。
你可以使用 Admin GraphQL API 中的 segmentCreate API 创建客户细分,本文主要介绍客户细分条件的组成以及如何创建 segmentCreate API 中的 query
参数。
客户细分条件组成
客户细分条件由多个条件组组成,条件组之间可以是且、或、除关系。例如,邮箱订阅状态等于已订阅 且 客户状态等于已注册 是一个条件组。
每个条件组由多个条件或条件组组成,条件之间可以是且、或关系。例如,邮箱订阅状态等于已订阅 是一个条件。
条件
SHOPLINE Admin 提供了丰富的条件供商家创建客户细分。
条件组
条件组由多个条件或条件组组成。下图中的 1、2、3 都是条件组。
组合条件
组合条件是包含固定条件和条件关系的条件组。
例如下图中的 购买过指定商品 条件,它的含义是在指定时间段内购买过指定商品的客户,它由 购买过指定商品 和 下单时间 两个条件组成,这两个条件之间是且关系,这种条件我们称为组合条件。
在 组合条件字段详细说明 里列举了所有的组合条件。组合条件的组成规则是固定的,不能自定义组合。
创建客户细分条件
你可以使用 Admin GraphQL API 中的 segmentCreate API 创建客户细分,该 API 中 query
参数可以通过以下方式创建。
条件
数据结构
通过以下 JSON 对象可以创建一个 客户状态 等于 已注册 条件。
{
"type": 0,
"metafield": false,
"mfType": null,
"key": "status",
"value": [
3
],
"operator": "IN",
"extInfo": "{\"operatorType\":\"EQ\",\"componentType\":\"ENUM\"}",
}
字段说明
字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
type | Number | 是 | 固定为 0 ,表示这是一个条件 |
metafield | Boolean | 否 | 是否为 元字段 条件,true 表示是元字段条件 |
mfType | EnumMFType | 否 | 元字段类型,metafield 为 true 时必填 |
key | String | 是 | 条件唯一标识,可参考 条件字段详细说明 |
value | Array | 是 | 条件值,可参考 条件字段详细说明 |
operator | EnumOperator | 是 | 条件查询时的操作符 |
extInfo | ExtInfo | 是 | 用于控制在 SHOPLINE Admin 页面上展示客户细分的交互 |
extInfo
extInfo
是一个 JSON 字符串,他的作用是让 SHOPLINE Admin 页面根据不同的条件类型展示不同的交互。
例如:邮箱订阅状态 和 上次购买时间 将展示不同的交互效果:
{
"key": "emailSubscribeStatus",
"type": 0,
"operator": "IN",
"value": [
1,
2
],
"extInfo": "{\"operatorType\":\"EQ\",\"componentType\":\"ENUM\"}"
}
{
"key": "lastOrderTime",
"type": 0,
"operator": "BETWEEN",
"value": [
1
],
"extInfo": "{\"componentType\":\"DATE\",\"dateType\":\"LAST_7_DAY\"}"
}
每个条件详细的 extInfo
取值可参考 条件字段详细说明。
EnumOperator
每个条件可选的 operator
值可参考 条件字段详细说明。
EnumMFType
value | 说明 |
---|---|
date | 日期&单值 |
date_time | 时间&单值 |
number_integer | 整数&单值 |
number_decimal | 小数&单值 |
single_line_text_field | 单行文本&单值 |
multi_line_text_field | 多行文本 |
color | 颜色&单值 |
boolean | 布尔值 |
list.date | 日期&多值 |
list.date_time | 时间&多值 |
list.number_integer | 整数&多值 |
list.number_decimal | 小数&多值 |
list.single_line_text_field | 单行文本&多值 |
list.color | 颜色&多值 |
条件组
数据结构
通过以下 JSON 对象可以创建一个条件组。
{
"type": 1,
"blockType": 0,
"relation": "and",
"children": [
{
"type": 0,
"blockType": 0,
"key": "emailDomain",
"value": [
"@gmail.com"
],
"operator": "IN",
"extInfo": "{\"operatorType\":\"EQ\",\"componentType\":\"LIST_PAGE\",\"listSource\":\"emailDomain\",\"label\":[\"@gmail.com\"]}"
},
{
"type": 0,
"blockType": 0,
"key": "language",
"value": [
"en"
],
"operator": "IN",
"extInfo": "{\"operatorType\":\"EQ\",\"componentType\":\"LIST\",\"listSource\":\"language\",\"label\":[\"English\"]}"
}
]
}
字段说明
字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
type | Number | 是 | 固定为 1 ,表示这是一个条件组 |
blockType | Number | 是 | 需要展示为 组合条件 时传 1 ,否则传 0 |
key | String | 否 | blockType 为 1 时必填,取值请参考 组合条件 |
relation | String | 是 | children 之间的逻辑关系,可选 and 或 or 。and 表示 children 之间是且关系,or 表示 children 之间是或关系 |
children | Array | 是 | 条件或条件组数据集合 |
条件组合逻辑
客户细分条件由满足的条件和不满足的条件两部分组成。
满足的条件
满足的条件由多个条件组组成。对应下图中蓝框部分,在 query
参数中对应 conditions
字段。
示例:
{
"conditions": {
"type": 1,
"relation": "and",
"blockType": 0,
"children": [
{
"type": 1,
"blockType": 0,
"relation": "and",
"children": [
{
"type": 0,
"blockType": 0,
"key": "emailDomain",
"value": [
"@gmail.com"
],
"operator": "IN",
"extInfo": "{\"operatorType\":\"EQ\",\"componentType\":\"LIST_PAGE\",\"listSource\":\"emailDomain\",\"label\":[\"@gmail.com\"]}",
},
{
"type": 0,
"blockType": 0,
"key": "language",
"value": [
"en"
],
"operator": "IN",
"extInfo": "{\"operatorType\":\"EQ\",\"componentType\":\"LIST\",\"listSource\":\"language\",\"label\":[\"English\"]}",
}
]
},
{
"type": 1,
"blockType": 0,
"relation": "and",
"children": [
{
"type": 0,
"blockType": 0,
"key": "userSource",
"value": [
"1",
"2"
],
"operator": "IN",
"extInfo": "{\"operatorType\":\"EQ\",\"componentType\":\"ENUM\"}",
},
{
"type": 0,
"blockType": 0,
"key": "status",
"value": [
3
],
"operator": "IN",
"extInfo": "{\"operatorType\":\"EQ\",\"componentType\":\"ENUM\"}",
}
]
}
]
}
}
不满足的条件
不满足的条件也是一个条件组,但它内部只能添加一个条件组。对应下图中蓝框部分,在 query
参数中对应 not
字段。
示例:
{
"not": {
"type": 1,
"relation": "and",
"blockType": 0,
"children": [
{
"type": 1,
"blockType": 0,
"relation": "and",
"children": [
{
"type": 0,
"blockType": 0,
"key": "status",
"value": [
0
],
"operator": "IN",
"relation": null,
"extInfo": "{\"operatorType\":\"EQ\",\"componentType\":\"ENUM\"}",
},
{
"type": 0,
"blockType": 0,
"key": "ageLevel",
"value": [
4
],
"operator": "IN",
"extInfo": "{\"operatorType\":\"EQ\",\"componentType\":\"ENUM\"}",
}
]
}
]
}
}
完整示例
以下是 segmentCreate API 中 query
参数的完整示例,注意需要将它转换为 JSON string 传入 API。
{
"conditions": {
"type": 1,
"relation": "and",
"blockType": 0,
"children": [
{
"type": 1,
"blockType": 0,
"relation": "and",
"children": [
{
"type": 0,
"blockType": 0,
"key": "emailDomain",
"value": [
"@gmail.com"
],
"operator": "IN",
"extInfo": "{\"operatorType\":\"EQ\",\"componentType\":\"LIST_PAGE\",\"listSource\":\"emailDomain\",\"label\":[\"@gmail.com\"]}",
},
{
"type": 0,
"blockType": 0,
"key": "language",
"value": [
"en"
],
"operator": "IN",
"extInfo": "{\"operatorType\":\"EQ\",\"componentType\":\"LIST\",\"listSource\":\"language\",\"label\":[\"English\"]}",
}
]
},
{
"type": 1,
"blockType": 0,
"relation": "and",
"children": [
{
"type": 0,
"blockType": 0,
"key": "userSource",
"value": [
"1",
"2"
],
"operator": "IN",
"extInfo": "{\"operatorType\":\"EQ\",\"componentType\":\"ENUM\"}",
},
{
"type": 0,
"blockType": 0,
"key": "status",
"value": [
3
],
"operator": "IN",
"extInfo": "{\"operatorType\":\"EQ\",\"componentType\":\"ENUM\"}",
}
]
}
]
},
"not": {
"type": 1,
"relation": "and",
"blockType": 0,
"children": [
{
"type": 1,
"blockType": 0,
"relation": "and",
"children": [
{
"type": 0,
"blockType": 0,
"key": "status",
"value": [
0
],
"operator": "IN",
"relation": null,
"extInfo": "{\"operatorType\":\"EQ\",\"componentType\":\"ENUM\"}",
},
{
"type": 0,
"blockType": 0,
"key": "ageLevel",
"value": [
4
],
"operator": "IN",
"extInfo": "{\"operatorType\":\"EQ\",\"componentType\":\"ENUM\"}",
}
]
}
]
}
}
Admin GraphQL 示例
mutation {
segmentCreate(name: "Demo1", query: "{\"conditions\":{\"type\":1,\"relation\":\"and\",\"blockType\":0,\"children\":[{\"type\":1,\"blockType\":0,\"relation\":\"and\",\"children\":[{\"type\":0,\"blockType\":0,\"key\":\"emailDomain\",\"value\":[\"@gmail.com\"],\"operator\":\"IN\",\"extInfo\":\"{\\\"operatorType\\\":\\\"EQ\\\",\\\"componentType\\\":\\\"LIST_PAGE\\\",\\\"listSource\\\":\\\"emailDomain\\\",\\\"label\\\":[\\\"@gmail.com\\\"]}\"},{\"type\":0,\"blockType\":0,\"key\":\"language\",\"value\":[\"en\"],\"operator\":\"IN\",\"extInfo\":\"{\\\"operatorType\\\":\\\"EQ\\\",\\\"componentType\\\":\\\"LIST\\\",\\\"listSource\\\":\\\"language\\\",\\\"label\\\":[\\\"English\\\"]}\"}]},{\"type\":1,\"blockType\":0,\"relation\":\"and\",\"children\":[{\"type\":0,\"blockType\":0,\"key\":\"userSource\",\"value\":[\"1\",\"2\"],\"operator\":\"IN\",\"extInfo\":\"{\\\"operatorType\\\":\\\"EQ\\\",\\\"componentType\\\":\\\"ENUM\\\"}\"},{\"type\":0,\"blockType\":0,\"key\":\"status\",\"value\":[3],\"operator\":\"IN\",\"extInfo\":\"{\\\"operatorType\\\":\\\"EQ\\\",\\\"componentType\\\":\\\"ENUM\\\"}\"}]}]},\"not\":{\"type\":1,\"relation\":\"and\",\"blockType\":0,\"children\":[{\"type\":1,\"blockType\":0,\"relation\":\"and\",\"children\":[{\"type\":0,\"blockType\":0,\"key\":\"status\",\"value\":[0],\"operator\":\"IN\",\"relation\":null,\"extInfo\":\"{\\\"operatorType\\\":\\\"EQ\\\",\\\"componentType\\\":\\\"ENUM\\\"}\"},{\"type\":0,\"blockType\":0,\"key\":\"ageLevel\",\"value\":[4],\"operator\":\"IN\",\"extInfo\":\"{\\\"operatorType\\\":\\\"EQ\\\",\\\"componentType\\\":\\\"ENUM\\\"}\"}]}]}}") {
segment {
id
name
query
creationDate
lastEditDate
}
userErrors {
code
field
message
}
}
}
字段详细说明
条件字段详细说明
以下将按照不同的条件类型(例如:日期、列表选择、金额输入等),说明每个字段的传值方式:
日期
传入预设区间或者自定义日期区间。
value
自定义日期区间传时间戳数组,例如:[1701705600000, 1702051199999]
;
预设区间传入枚举,例如 [1]
。
预设枚举 | 说明 |
---|---|
0 | 今天 |
1 | 过去7天 |
2 | 过去30天 |
3 | 过去90天 |
4 | 过去12个月 |
operator
自定义日期区间传 BETWEEN
;预设区间传 EQ
。
extInfo
key | value |
---|---|
componentType | 固定传 DATE |
dateType | 自定义区间:CUSTOME ,今天:TODAY ,过去7天:LAST_7_DAY ,过去30天:LAST_30_DAY ,过去90天:LAST_90_DAY ,过去12个月:LAST_12_MONTH |
key
以下条件是日期类型:
条件key | 名称 | 说明 |
---|---|---|
createTime | 客户加入日期 | 店铺首次获得客户信息的日期 |
singleOrderAmountTime | 下单时间 | 在 组合条件 中和 singleOrderAmount 一起使用 |
firstOrderTime | 首单时间 | 客户首次成单的时间 |
lastOrderTime | 上次购买时间 | 客户上次成单的时间 |
lastAbandonedCreateTime | 最近一次弃单时间 | 客户最近一次发生弃单的时间 |
lastLoginTime | 最近一次登录时间 | 客户最近一次登录网店的时间 |
loginChannelTime | 访问时间 | 在 组合条件 中和 loginChannel 一起使用 |
lastCartCreateTime | 最近一次加购时间 | 客户最近一次将商品添加到购物车的时间 |
purchasedItemTime | 下单时间 | 在 组合条件 中和 purchasedItem 一起使用 |
purchasedCateTime | 下单时间 | 在 组合条件 中和 purchasedCate 一起使用 |
示例
{
"key": "lastLoginTime",
"type": 0,
"operator": "EQ",
"value": [
2
],
"extInfo": "{\"componentType\":\"DATE\",\"dateType\":\"LAST_30_DAY\"}"
}
整数
传入一个整数范围。
value
operator 为 BETWEEN
时传入两个整数组成的数组,例如:[2, 10]
;
其他情况传入一个整数组成的数组,例如:[10]
。
operator
value | 说明 |
---|---|
EQ | 等于 |
NE | 不等于 |
GT | 大于 |
LT | 小于 |
BETWEEN | 区间 |
extInfo
key | value |
---|---|
componentType | 固定传 NUMBER |
key
以下条件是整数类型:
条件key | 名称 | 说明 |
---|---|---|
payOrderCnt | 订单数量 | 历史累计成单的订单数量 |
loginCount | 访问次数 | 客户90天内访问网店的次数 |
示例
{
"key": "loginCount",
"type": 0,
"operator": "EQ",
"value": [
2
],
"extInfo": "{\"componentType\":\"NUMBER\"}"
}
小数
传入一个小数范围。
value
operator 为 BETWEEN
时传入两个小数组成的数组,例如:[2.3, 10.9]
;
其他情况传入一个小数组成的数组,例如:[2.3]
。
operator
value | 说明 |
---|---|
EQ | 等于 |
NE | 不等于 |
GT | 大于 |
LT | 小于 |
BETWEEN | 区间 |
extInfo
key | value |
---|---|
componentType | 固定传 FLOAT |
key
目前只有 元字段条件 有小数类型。
示例
{
"key": "my_fields.float",
"type": 0,
"operator": "EQ",
"value": [
1.33
],
"metafield": true,
"mfType": "list.number_decimal",
"extInfo": "{\"componentType\":\"FLOAT\",\"mfName\":\"小数\"}"
}
金额
传入一个金额范围,以分为单位,例如:¥20 对应 2000。
value
operator 为 BETWEEN
是传入两个金额组成的数组,例如:[2000, 10000]
;
其他情况传入一个金额组成的数组,例如:[10000]
。
operator
value | 说明 |
---|---|
EQ | 等于 |
NE | 不等于 |
GT | 大于 |
LT | 小于 |
BETWEEN | 区间 |
extInfo
key | value |
---|---|
componentType | 固定传 PRICE |
key
以下条件是金额类型:
条件key | 名称 | 说明 |
---|---|---|
totalAmount | 消费金额 | 历史累计的消费金额 |
singleOrderAmount | 单次消费金额 | 历次成单的订单金额 |
unitPrice | 客单价 | 客户平均每笔订单的消费金额 |
preferPrice | 价格偏好 | 根据客户的购买记录计算出的客户偏好的商品价格 |
preferDiscount | 优惠敏感度 | 根据客户的购买记录计算出的客户偏好的每笔订单中的优惠金额 |
示例
{
"key": "totalAmount",
"type": 0,
"operator": "EQ",
"value": [
20000
],
"extInfo": "{\"componentType\":\"PRICE\"}"
}
布尔
传入布尔值。
value
true
或 false
。
operator
value | 说明 |
---|---|
EQ | 等于 |
NE | 不等于 |
extInfo
key | value |
---|---|
componentType | 固定传 BOOLEAN |
key
目前只有 元字段条件 有布尔类型。
示例
{
"key": "my_fields.vip",
"type": 0,
"operator": "EQ",
"value": false,
"metafield": true,
"mfType": "boolean",
"extInfo": "{\"componentType\":\"BOOLEAN\",\"mfName\":\"重要客户\"}"
}
地址
传入一个地址对象。
value
key | 类型 | 是否必填 | 说明 |
---|---|---|---|
country | String | 是 | 国家或地区 |
countryCode | String | 是 | 国家的 ISO 代码,采用 ISO 3166-1 (alpha 2) 格式 |
province | String | 是 | 省份 |
provinceCode | String | 是 | 省份编码 |
city | String | 是 | 城市 |
cityCode | String | 是 | 城市编码 |
district | String | 是 | 地区 |
districtCode | String | 是 | 地区编码 |
operator
value | 说明 |
---|---|
EQ | 等于 |
NE | 不等于 |
extInfo
key | value |
---|---|
componentType | 固定传 ADDRESS |
key
以下条件是地址类型:
条件key | 名称 | 说明 |
---|---|---|
address | 地址 | 客户所在的国家、省份、城市 |
示例
{
"key": "address",
"type": 0,
"operator": "EQ",
"value": {
"countryCode": "US",
"country": "United States",
"provinceCode": "4200001",
"province": "Alabama",
"cityCode": "",
"city": "",
"districtCode": "",
"district": ""
},
"extInfo": "{\"componentType\":\"ADDRESS\"}"
}
标签
SHOPLINE 预设了一些推荐标签,通过这些标签条件可以快速筛选出指定的客户人群。
operator
固定传 EQ
。表示属于此标签人群。
value
固定传 1
。表示属于此标签人群。
extInfo
key | value |
---|---|
componentType | 固定传 TAG |
subGroup | 标签分类,参考下方表格 |
key
以下条件是标签类型:
条件key | 名称 | 说明 | subGroup |
---|---|---|---|
isLoginNotPay | 访问未下单客户 | 访问过店铺但未成单的客户 | attractNew |
isAddCartNotPayIn30 | 近30天加购未下单客户 | 近30天订阅邮件并且有过加购,但是没有下单的客户 | attractNew |
isAbandonedIn30 | 近30天弃单客户 | 近30天内订阅邮件并且有过弃单的客户 | attractNew |
isNotOrderIn30 | 订阅邮件30天内未下单客户 | 近30天内订阅邮件并且未下单的客户 | attractNew |
isFirstOrder | 订阅邮件的首单客户 | 订阅邮件并且只购买过一次的客户 | oldRepurch |
isRecentHighConsume | 最近高消费金额客户 | 近90天有过高消费金额的客户 | oldRepurch |
isRecentHighOrder | 最近高下单数量客户 | 近90天有过高下单次数的客户 | oldRepurch |
isRecentConsumed | 近期消费过的客户 | 近90天消费过的客户 | lossRecovery |
isOnceActived | 曾经活跃的客户 | 过去有过高消费但是最近12个月没有消费的客户 | lossRecovery |
isRecentAbandoned | 近期弃单的客户 | 最近30天有过弃单的客户 | lossRecovery |
isHighValue | 高价值客户 | 根据RFM计算出的高价值客户 | keyPperations |
isBirthdayInNextMonth | 下月生日客户 | 下个月过生日的客户 | keyPperations |
isRecentActived | 近期活跃客户 | 30天内有过登录的客户 | keyPperations |
isRepurchased | 复购人群 | 客户生命周期为复购阶段的客户 | keyPperations |
示例
{
"key": "isNotOrderIn30",
"type": 0,
"operator": "EQ",
"value": 1,
"extInfo": "{\"subGroup\":\"attractNew\",\"componentType\":\"TAG\",}"
}
枚举列表
传入一个枚举数据集合。例如 客户状态 的可选值是 黑名单、待邀请、已邀请、已注册,它们不会因商家的客户数据不同而变化。
key
以下条件是枚举列表类型:
条件key | 名称 | 说明 |
---|---|---|
userSource | 客户加入渠道 | 店铺首次获得客户的来源渠道 |
platform | 客户加入平台 | 店铺首次获得客户的平台销售渠道 |
status | 客户状态 | 客户状态 |
emailSubscribeStatus | 邮箱订阅状态 | 客户的电子邮件订阅状态 |
gender | 性别 | 客户性别 |
ageLevel | 年龄 | 客户年龄阶段 |
birthdayMonth | 生日所在月 | 客户生日所在的月份 |
smsSubscribeStatus | 短信订阅状态 | 客户的短信订阅状态 |
preferActivity | 活动类型偏好 | 根据客户的购买记录计算出的客户偏好的活动类型 |
rfm | RFM价值 | 根据客户的消费金额、消费次数、最近消费时间综合计算得到的客户价值 |
customerCycle | 客户生命周期 | 按生命周期分布的客户数量,分为潜客、首单、复购、流失客户 |
value
key
对应以下枚举值的集合,例如:[1, 2]
userSource
value | 说明 |
---|---|
1 | 后台导入 |
2 | 网店注册 |
3 | 线下门店 |
4 | 店铺搬迁 |
5 | POS注册 |
6 | Multipass联合登录 |
7 | Storefront |
8 | 手动创建 |
16 | 社交媒体 |
17 | API创建 |
18 | 网站订阅 |
19 | 未登录下单 |
20 | |
23 | TikTok |
24 | Shop App |
25 | Marketplace |
26 | Apple |
platform
value | 说明 |
---|---|
1 | shopify |
2 | bigcommerce |
3 | woocommerce |
4 | lightspeed |
5 | shoplazza |
6 | etsy |
7 | zalora |
8 | kogan |
9 | amazon |
10 | ebay |
status
value | 说明 |
---|---|
0 | 黑名单 |
1 | 待邀请 |
2 | 已邀请 |
3 | 已注册 |
emailSubscribeStatus
value | 说明 |
---|---|
0 | 已取消订阅 |
1 | 已订阅 |
2 | 未订阅 |
3 | 订阅确认中 |
5 | 无效 |
gender
value | 说明 |
---|---|
0 | 未知 |
1 | 男 |
2 | 女 |
3 | 不透露 |
ageLevel
value | 说明 |
---|---|
0 | 0 - 20 |
1 | 21 - 30 |
2 | 31 - 40 |
3 | 41 - 50 |
4 | 51 - 60 |
5 | 61 - 70 |
6 | 71 - 100 |
birthdayMonth
value | 说明 |
---|---|
1 | 1月 |
2 | 2月 |
3 | 3月 |
4 | 4月 |
5 | 5月 |
6 | 6月 |
7 | 7月 |
8 | 8月 |
9 | 9月 |
10 | 10月 |
11 | 11月 |
12 | 12月 |
smsSubscribeStatus
value | 说明 |
---|---|
0 | 已取消订阅 |
1 | 已订阅 |
2 | 未订阅 |
preferActivity
value | 说明 |
---|---|
0 | 折扣活动 |
1 | 限时活动 |
2 | 捆绑活动 |
4 | 组合套餐 |
5 | 赠品活动 |
6 | 预售活动 |
rfm
value | 说明 |
---|---|
0 | 重要价值客户 |
1 | 一般价值客户 |
2 | 重要发展客户 |
3 | 一般发展客户 |
4 | 重要保持客户 |
5 | 一般保持客户 |
6 | 重要挽留客户 |
7 | 一般挽留客户 |
customerCycle
value | 说明 |
---|---|
0 | 潜客 |
1 | 首单 |
2 | 复购 |
3 | 流失 |
extInfo
key | value |
---|---|
componentType | 固定传 ENUM |
operatorType | 固定传 EQ |
operator
value | 说明 |
---|---|
IN | 包含 |
NOT_IN | 不包含 |
示例
{
"key": "status",
"type": 0,
"operator": "IN",
"value": [
3,
0
],
"extInfo": "{\"operatorType\":\"EQ\",\"componentType\":\"ENUM\"}"
}
动态数据列表
传入一个动态数据值集合。例如 购买过指定商品 的可选值会根据商家的商品数据不同而变化。
value
动态数据值集合,例如:数据源是商品,则传入商品id集合,['productId111', 'productId222']
。
extInfo
key | 类型 | value | 说明 |
---|---|---|---|
componentType | string | LIST 、LIST_PAGE 。按照下方表格中和条件key的对应关系传入 | 影响查询数据源的方式。LIST 表示调用接口一次性查出并显示所有可选值;LIST_PAGE 表示分页调用接口并展示可选值; |
operatorType | string | EQ 、IN 。按照下方表格中和条件key的对应关系传入 | 影响页面上的操作符显示文案。EQ 显示为 等于 和 不等于,IN 显示为 包含 和 不包含,具体效果参考下方截图 |
listSource | string | 按照下方表格中和条件key的对应关系传入 | 数据源 |
label | Array[string] | 例如 value 传入的是商品id集合,label 就传入商品名称集合 | value 对应的显示文本 |
key
以下条件是动态数据列表类型:
条件key | 名称 | 说明 | componentType | operatorType | listSource |
---|---|---|---|---|---|
language | 客户语言 | 客户访问店铺使用的语言 | LIST | EQ | language |
lastLoginChannel | 最近一次访问渠道 | 客户最近一次访问网店时的来源渠道 | LIST | EQ | loginChannel |
loginChannel | 访问过的渠道 | 客户90天内访问网店时的来源渠道 | LIST | EQ | loginChannel |
purchasedCate | 购买过指定分类 | 购买过指定分类的商品 | LIST | IN | categoryList |
preferCate | 商品分类偏好 | 根据客户的购买记录计算出的客户偏好的商品分类 | LIST | IN | categoryList |
emailDomain | 邮箱域名 | 客户的邮箱域名 | LIST_PAGE | EQ | emailDomain |
purchasedItem | 购买过指定商品 | 购买过指定的商品 | LIST_PAGE | IN | productList |
preferItemTag | 商品标签偏好 | 根据客户的购买记录计算出的客户偏好的商品标签 | LIST_PAGE | IN | productLabelList |
customerTag | 客户标签 | 客户列表中人工为客户添加的标签 | LIST_PAGE | IN | customerLabelList |
operator
value | 说明 |
---|---|
IN | 包含 |
NOT_IN | 不包含 |
示例
{
"key": "purchasedCate",
"type": 0,
"operator": "IN",
"value": [
"12257647834446320149372682",
"12257647834482223391662682"
],
"extInfo": "{\"operatorType\":\"IN\",\"componentType\":\"LIST\",\"listSource\":\"categoryList\",\"label\":[\"fashion shirt\",\"summer vacation\"]}"
}
元字段
所有属于客户模块下的元字段都可以作为条件。了解 元字段 更多信息。
key
{metafield.namespace}.{metafield.key}
,例如:my_fields.date。
value/operator/extInfo
这些参数按照对应的条件类型传入。元字段类型和条件类型映射关系:
元字段类型 | 条件类型 | 说明 |
---|---|---|
date | 日期 | - |
date_time | ||
list.date | ||
list.date_time | ||
boolean | 布尔 | - |
single_line_text_field | 动态数据列表 | extInfo.componentType 传 LIST_PAGE_FRONT |
list.single_line_text_field | ||
multi_line_text_field | ||
color | ||
list.color | ||
number_decimal | 小数 | - |
list.number_decimal | ||
number_integer | 整数 | - |
list.number_integer |
extInfo
除了各类型条件需要的参数之外,还需要传入以下参数:
key | 类型 | 是否必填 | 说明 |
---|---|---|---|
mfName | string | 是 | 元字段名称 |
示例
{
"key": "my_fields.date",
"type": 0,
"operator": "EQ",
"value": [
3
],
"metafield": true,
"mfType": "list.date",
"extInfo": "{\"componentType\":\"DATE\",\"mfName\":\"日期\",\"dateType\":\"LAST_90_DAY\"}"
}
组合条件字段详细说明
relation
组合条件内的条件之间是且关系,固定传 and
。
key
以下条件是组合条件:
条件key | 名称 | 包含的基础条件 |
---|---|---|
singleOrderAmount | 单次消费金额 | singleOrderAmount 和 singleOrderAmountTime |
loginChannel | 访问过的渠道 | loginChannel 和 loginChannelTime |
purchasedItem | 购买过指定商品 | purchasedItem 和 purchasedItemTime |
purchasedCate | 购买过指定分类 | purchasedCate 和 purchasedCateTime |
购买过指定商品 示例
{
"key": "purchasedItem",
"type": 1,
"relation": "and",
"blockType": 1,
"children": [
{
"key": "purchasedItem",
"type": 0,
"operator": "IN",
"value": [
"16054924754902568180002744"
],
"extInfo": "{\"operatorType\":\"IN\",\"componentType\":\"LIST_PAGE\",\"listSource\":\"productList\",\"label\":[\"Halloween Pumpkin Print T-shirt\"]}"
},
{
"key": "purchasedItemTime",
"type": 0,
"operator": "EQ",
"value": [
2
],
"extInfo": "{\"componentType\":\"DATE\",\"dateType\":\"LAST_30_DAY\"}"
}
],
}