SuperAPI AI 工具集

shopify-admin-referral-source-attribution

数据与分析

查看项目

更新于 10-15 09:35

技能介绍

用途

该技能按订单的首次触达流量来源聚合订单数据,来源信息从每个订单的 landingPageUrl、referrerUrl 以及落地 URL 中嵌入的 UTM 参数提取。它生成归因表,展示每个来源的订单数、收入和 AOV(客单价),让商家可以看到哪些渠道真正在转化。只读——不执行任何变更。当 Shopify 原生分析看板不够细致,或需要导出原始归因数据用于外部模型时使用。

前置条件

已认证的 Shopify CLI 会话:shopify store auth --store <domain> --scopes read_orders

API 权限范围:read_orders

参数

参数 | 类型 | 必填 | 默认值 | 说明

store | string | 是 | — | 店铺域名(例如 mystore.myshopify.com)

format | string | 否 | human | 输出格式:human 或 json

days_back | integer | 否 | 30 | 回溯窗口,单位为天

min_orders | integer | 否 | 1 | 人类可读摘要中每个来源至少包含的订单数

group_by | string | 否 | category | 分组层级:category(direct/organic/paid/social/email/referral)、domain(原始 referrer 主机)或 utm_source(UTM 参数值)

include_utm | bool | 否 | true | 为 true 时,从 landingPageUrl 查询字符串中解析 utm_source、utm_medium、utm_campaign

安全性

ℹ️ 只读技能——不执行任何变更。任何时候运行都安全。

工作流步骤

操作:orders — 查询 输入:query: "created_at:>='<NOW - days_back days>'", first: 250, 选取 id、name、createdAt、landingPageUrl、referrerUrl、customerJourneySummary { firstVisit { landingPage referrerUrl source sourceType utmParameters { source medium campaign term content } } }、totalPriceSet、customer { numberOfOrders }、分页游标 预期输出:带落地页/referrer/UTM 数据的订单;持续分页直到 hasNextPage: false

对每个订单推导规范化来源:

如果 customerJourneySummary.firstVisit.utmParameters.source 已设置 → 使用它(最强信号)

否则当 include_utm: true 时从 landingPageUrl 查询字符串解析 UTM 参数

否则从 referrerUrl 提取主机并映射到类别:

空/无 → direct

google.com / bing.com / duckduckgo.com → organic-search

googleads/doubleclick → paid-search

facebook.com / instagram.com / tiktok.com / x.com / twitter.com / pinterest.com / youtube.com → social-<host>

mail/gmail/outlook 主机 → email

任何其他主机 → referral-<host>

按所选 group_by 维度聚合:

订单数

收入 = Σ totalPriceSet.shopMoney.amount

AOV = 收入 / 订单数

新客占比 %(customer.numberOfOrders == 1 的订单数除以该来源订单总数)

GraphQL 操作

orders:query — 已针对 api_version 2025-01 验证

query OrdersForAttribution($query: String!, $after: String) { orders(first: 250, after: $after, query: $query) { edges { node { id name createdAt landingPageUrl referrerUrl totalPriceSet { shopMoney { amount currencyCode } } customer { id numberOfOrders } customerJourneySummary { firstVisit { landingPage referrerUrl source sourceType utmParameters { source medium campaign term content } } momentsCount { count } } } } pageInfo { hasNextPage endCursor } } }

会话跟踪

Claude 必须在每个阶段输出以下内容。这是强制要求。

开始时输出:

╔══════════════════════════════════════════════╗ ║ SKILL: Referral Source Attribution ║ ║ Store: <store domain> ║ ║ Started: <YYYY-MM-DD HH:MM UTC> ║ ╚══════════════════════════════════════════════╝

每个步骤后输出:

[N/TOTAL] <QUERY|MUTATION> <OperationName> → Params: <关键输入的简要摘要> → Result: <数量或结果>

完成时输出:

format: human(默认)时:

══════════════════════════════════════════════ ATTRIBUTION REPORT (<days_back> days, group: <group_by>) Orders analyzed: <n> Total revenue: $<amount> Sources detected: <n>

Top sources by revenue ───────────────────────────────────────── <source> Orders: <n> Revenue: $<n> AOV: $<n> New cust: <pct>% <source> Orders: <n> Revenue: $<n> AOV: $<n> New cust: <pct>% ...

Output: attribution_<date>.csv ══════════════════════════════════════════════

format: json 时,输出:

{ "skill": "referral-source-attribution", "store": "<domain>", "period_days": 30, "group_by": "category", "totals": { "orders": 0, "revenue": 0, "currency": "USD" }, "sources": [ { "source": "<name>", "orders": 0, "revenue": 0, "aov": 0, "new_customer_pct": 0 } ], "output_file": "attribution_<date>.csv" }

输出格式

CSV 文件 attribution_<YYYY-MM-DD>.csv,包含列: order_id, order_name, created_at, source, source_category, referrer_url, landing_page_url, utm_source, utm_medium, utm_campaign, revenue, is_new_customer

错误处理

错误 | 原因 | 恢复方式

THROTTLED | 超出 API 速率限制 | 等待 2 秒,最多重试 3 次

landingPageUrl 和 referrerUrl 为空 | POS、草稿或导入订单 | 归类为 unattributed

UTM 参数格式错误 | 落地 URL 中存在未编码字符 | 跳过 UTM 解析,回退到 referrer 主机

customerJourneySummary 不可用 | 较旧订单或应用创建的订单 | 回退到顶层 landingPageUrl/referrerUrl

最佳实践

在运行具有一致 UTM 标记的结构化广告活动时,使用 group_by: utm_source——这是保真度最高的归因信号。

使用 group_by: category 做董事会级摘要;商家想先知道“有多少来自社交”,而不是“有多少来自 instagram.com/p/abc”。

与 discount-roi-calculator 交叉参考——把“哪个来源带来订单”与“订单使用了哪个折扣”结合起来,可以揭示付费获客真正在哪里产生回报。

警惕“direct”虚高——许多邮件应用和社交应用点击会丢失 referrer,被归为 direct。对出站链接使用 UTM 标记可以找回该信号。

对低销量店铺,在多月周期上运行(days_back: 90),这样百分比明细不会被少数订单主导。