用途
该技能生成一份批量报告,列出最可能产生 WISMO(Where Is My Order,我的订单在哪)客服工单的订单,具体包括两类:已发货但物流跟踪在 N 天内未更新的订单,以及超过可配置 SLA 仍未发货的订单。资料称,行业研究显示 WISMO 约占所有客服请求的 18%,因此主动识别是一项直接的运营人力投入。该技能为只读操作,可替代逐单人工后台扫描或客服系统搜索。输出的 CSV 可用于在客户联系你之前主动联系客户。
前置条件
- 执行
shopify auth login --store <domain> - API 权限范围:
read_orders
参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| store | string | 是 | — | 店铺域名(例如 mystore.myshopify.com) |
| format | string | 否 | human | 输出格式:human 或 json |
| dry_run | bool | 否 | false | 预览操作而不执行变更 |
| unfulfilled_sla_days | integer | 否 | 3 | 标记超过此天数仍未发货的订单 |
| stale_tracking_days | integer | 否 | 5 | 标记最后一次履约创建时间超过此天数的已发货订单(作为物流跟踪停滞的代理指标) |
| limit | integer | 否 | 250 | 每页最大订单数 |
工作流程
-
操作:orders — 查询(未发货高风险)
- 输入:
first: <limit>,query: "fulfillment_status:unfulfilled created_at:<='<NOW minus unfulfilled_sla_days>'",按 CREATED_AT 升序排序 - 预期输出:超过 SLA 窗口仍未发货的订单,含 name、createdAt、customer、displayFulfillmentStatus;标记为 UNFULFILLED_OVERDUE
- 输入:
-
操作:orders — 查询(已发货但可能停滞)
- 输入:
first: <limit>,query: "fulfillment_status:shipped updated_at:<='<NOW minus stale_tracking_days>'",按 UPDATED_AT 升序排序 - 预期输出:近期未更新的已发货订单,含 name、createdAt、fulfillments.createdAt、fulfillments.trackingInfo;标记为 SHIPPED_STALE_TRACKING
- 输入:
GraphQL 操作
# orders:query — validated against api_version 2025-01
query WismoOrders($first: Int!, $after: String, $query: String) {
orders(first: $first, after: $after, query: $query, sortKey: CREATED_AT) {
edges {
node {
id
name
createdAt
updatedAt
displayFulfillmentStatus
displayFinancialStatus
customer {
id
firstName
lastName
defaultEmailAddress {
emailAddress
}
}
shippingAddress {
city
province
country
}
fulfillments {
createdAt
status
trackingInfo {
number
url
company
}
}
totalPriceSet {
shopMoney { amount currencyCode }
}
}
}
pageInfo {
hasNextPage
endCursor
}
}
}
会话跟踪
Claude 必须在每个阶段输出以下内容,这是强制要求。
开始时输出:
╔══════════════════════════════════════════════╗
║ SKILL: wismo-bulk-status-report ║
║ Store: <store domain> ║
║ Started: <YYYY-MM-DD HH:MM UTC> ║
╚══════════════════════════════════════════════╝
每步之后输出:
[N/TOTAL] <QUERY|MUTATION> <OperationName>
→ Params: <brief summary of key inputs>
→ Result: <count or outcome>
完成时输出:
format 为 human(默认)时:
══════════════════════════════════════════════
OUTCOME SUMMARY
Unfulfilled overdue orders: <n>
Shipped stale-tracking orders: <n>
Total at-risk orders: <n>
Errors: 0
Output: wismo-report-<YYYY-MM-DD>.csv
══════════════════════════════════════════════
format 为 json 时,输出:
{
"skill": "wismo-bulk-status-report",
"store": "<domain>",
"started_at": "<ISO8601>",
"completed_at": "<ISO8601>",
"dry_run": false,
"steps": [
{ "step": 1, "operation": "WismoOrders", "type": "query", "params_summary": "fulfillment_status:unfulfilled, sla_days: <n>, limit: <n>", "result_summary": "<n> orders", "skipped": false },
{ "step": 2, "operation": "WismoOrders", "type": "query", "params_summary": "fulfillment_status:shipped, stale_days: <n>, limit: <n>", "result_summary": "<n> orders", "skipped": false }
],
"outcome": {
"unfulfilled_overdue_count": 0,
"shipped_stale_count": 0,
"total_at_risk": 0,
"errors": 0,
"output_file": "wismo-report-<YYYY-MM-DD>.csv"
}
}
输出格式
CSV 文件 wismo-report-<YYYY-MM-DD>.csv,列包括:risk_type、order_name、customer_email、order_date、days_waiting、fulfillment_status、tracking_number、tracking_company、shipping_city、shipping_country。
CSV 分为两个部分(由 risk_type 列值区分):UNFULFILLED_OVERDUE 和 SHIPPED_STALE_TRACKING。human 格式下,还会在 CSV 路径之前显示一个汇总表。
错误处理
| 错误 | 原因 | 恢复方式 |
|---|---|---|
| 未返回订单 | 所有订单都在 SLA 内 / 近期有更新 | 好消息——未检测到 WISMO 风险 |
| 结果集非常大 | 订单量大或 SLA 窗口过宽 | 缩小日期范围或减小 unfulfilled_sla_days |
| customer 为 null | 访客结账订单 | 仍包含订单名和跟踪信息——email 列为空 |
| 速率限制(429) | 订单页数过多 | 将 limit 降至 100 |
最佳实践
- 在每日早晨运营审查时运行此报告,并与 fulfillment-status-digest 配合使用——两者共同覆盖运营队列和面向客户的风险。
- 将 CSV 按 days_waiting 降序排序,优先联系最超期的订单。
- 对于 UNFULFILLED_OVERDUE 订单,转交 fulfillment-status-digest 技能以了解未发货原因,必要时使用 order-hold-and-release。
- 对于 SHIPPED_STALE_TRACKING 订单,检查承运商跟踪 URL 是否显示有动态——如果确实停滞,主动触达可显著减少工单量。
- 使用 format: json 将输出接入 Slack 告警或 CRM 自动化,为支持团队创建跟进任务。