You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GraphiQL按referralCode或utmParameters过滤Shopify订单?

Shopify订单过滤:仅获取我方引流订单的问题

我正在开发一款Shopify应用,需从后端查询Shopify店铺的订单,以检测由我方站点引流产生的订单。我在引导用户进入的初始页面使用了utm参数,该参数已正确传递至订单完成环节,可在订单的customerJourney中获取这些utm参数。

目前的难题是,我仅希望获取与我方相关的订单,因为获取店铺全部订单会引发数据泄露问题。请问能否通过GraphiQL的过滤功能实现这一需求?若不能,有哪些替代方案可以实现该目标?

我尝试了如下查询,但似乎无法正常过滤。除utm参数外,我也可使用referralCode,但过滤问题仍存在……

{
  orders(
    first: 100
    query: "created_at:>='2024-02-21' AND customerJourney.moments.utmParameters.source:test_keyword"
    reverse: true
  ) {
    edges {
      node {
        name
        id
        createdAt
        channelInformation {
          id
        }
        currentTotalPriceSet {
          presentmentMoney {
            amount
          }
        }
        customer {
          id
        }
        customerJourneySummary {
          firstVisit {
            landingPage
          }
          lastVisit {
            landingPage
          }
        }
        customerJourney {
          moments {
            ... on CustomerVisit {
              utmParameters {
                source
                campaign
                content
                medium
                term
              }
            }
          }
        }
      }
    }
  }
}

解决方案

1. 当前查询无效的原因

Shopify Orders API的查询语法不支持对customerJourney.moments.utmParameters这类深层嵌套字段直接过滤,你写的查询条件不符合API规则,所以无法生效。

2. 可行的替代方案

方案一:用referral_code直接过滤(优先选择)

如果你的引流链路能设置referral_code,直接用这个字段过滤是最高效的方式,因为Shopify支持对订单的referral_code做索引查询:

{
  orders(
    first: 100
    query: "created_at:>='2024-02-21' AND referral_code:'YOUR_UNIQUE_REFERRAL_CODE'"
    reverse: true
  ) {
    name
    id
    createdAt
    # 保留你需要的其他字段
  }
}

这种方式只会返回匹配的订单,不会泄露无关数据,性能最优。

方案二:批量拉取后本地过滤

如果无法使用referral_code,只能先拉取指定时间范围内的订单(尽量缩小时间窗口,比如按天拉取),然后在你的应用后端对订单的customerJourney.moments.utmParameters进行本地校验:

  • 每次拉取控制在100条以内,避免触发API限流
  • 只留存包含目标utm参数的订单,直接丢弃其他数据

方案三:用Webhooks实时捕获目标订单

配置Shopify的订单创建/更新Webhook,当有新订单生成时,Shopify会主动把订单数据推送到你的应用接口。你可以在接收逻辑里直接检查utm参数或referral_code,只保留符合条件的订单:

  • 这是最安全高效的方案,完全避免了主动查询所有订单的需求
  • 注意配置Webhook时要开启签名验证,确保数据来源可靠,防止伪造请求

内容的提问来源于stack exchange,提问作者Doug

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 04:15:11