忠诚度工作流构建器¶
工作流是一条自动奖励客户的规则。每个工作流都从一个触发器("当某事发生时")开始,可以根据条件("仅当……")进行分支,并执行一个或多个操作("执行这个")。您在画布上以可视化方式构建工作流。
从忠诚度仪表板打开构建器:点击 Manage Workflows,然后点击 Create Workflow,再选择现成的配方或 Start from scratch。要编辑现有工作流,请点击列表中的工作流名称。

构建器分为三个区域:
- Toolbar(顶部)— 工作流名称、其计划和预算、状态以及操作按钮。参见 工具栏。
- Canvas(中间)— 触发器和各步骤的可视化流程。
- Config panel(右侧)— 所选步骤的设置。点击 Performance,此面板会改为显示该工作流的运行结果。
没有客户账户的订单
工作流会奖励客户,因此在访客结账时下的、未关联客户的订单不会运行任何工作流。
第 1 步 — 选择触发器¶
每个工作流都需要且只能有一个触发器。点击画布上的 Start when... 卡片,然后从菜单中选择一个触发器。要稍后更改,请选中该触发器并在配置面板中点击 Change——切换会清除该触发器的设置;如果您之前更改过设置,系统会先询问您。

| 触发器 | 触发时机…… |
|---|---|
| Order Complete | 订单已付款。可选择设置 Only orders with a subtotal of at least 金额(折扣后、运费和税费前的商品金额),或勾选 Skip orders paid entirely with discounts。 |
| Customer Signup | 创建了新的客户账户。可选勾选 Only if the email is verified at sign-up——之后才验证邮箱的客户不会被识别,因为 Shopify 不会发送第二个事件。 |
| Customer Birthday | 客户过生日,每天 UTC 时间 09:00 检查一次。选择 On the day 或 Days before(最多 30 天)。生日来自客户元字段(默认为 custom.birthday——打开 More options 可使用其他 namespace.key),或来自格式为 bday:MM-DD 的客户标签。 |
| Product Purchase | 购买了特定商品。选择商品、最低总数量(默认 1),以及这些商品合计金额需要落入的可选范围。 |
| Collection Purchase | 购买了所选系列中的商品。可选设置该系列商品合计金额需要落入的范围。 |
| Order Fulfilled | 订单已全部发货(默认)——或选择 Any shipment。 |
| Refund Created | 已发起退款。选择 Any refund、Full refund only 或 Partial refund only,以及可选的最低退款金额。 |
选择触发器后,其设置会在配置面板中打开。
选择单个变体
商品选择器会以变体形式显示商品。勾选所有变体即选中整个商品,之后添加的变体也会计入。只勾选部分变体则工作流仅限于这些变体——当一个商品同时包含礼品卡面值和其他商品时,这很有用。面板会分别统计,例如 "1 product, 9 variants"。
按金额设置奖励等级
Product Purchase 和 Collection Purchase 只有在所选商品(或系列商品)合计金额达到 From 某个值且 Under 另一个值时才会触发——例如从 $150 到 $200 以下。只计入符合条件的行项目,并按折扣后的价格计算,购物车中的其他商品不计入。下限包含在内,上限不包含,因此您可以为每个等级各建一个工作流($150–$200、$200–$250……以及最后一个从 $1,000 起且无上限的工作流),任何订单都只会触发其中一个。面板会回显您设置的范围("Matches from $150 to under $200"),无法匹配任何订单的范围会被标记。在消息中使用 {{ trigger.matched_amount }} 可显示计入的金额。若要在一个工作流中奖励整个阶梯,并将客户在一段时间内的购买计为一次,请改用 Reward Tiers。
全额或部分退款
当某次退款与该订单之前的退款合计退还整个订单总额时,该次退款计为全额——因此,如果您先退一部分、之后再退剩余部分,则第一次为部分退款,第二次为全额退款。在此之前的每次退款都是部分退款。在 Refund Created 下,Order contains product 等条件检查的是被退款的订单——例如,仅对包含您礼品卡商品的订单的退款运行工作流。工作流会对订单的每一次退款运行。
触发器决定可用的条件和操作
读取订单详情的条件(如 Order Amount)以及 Add Order Tag / Note 和 Reward Tiers 操作,只有在触发器提供订单数据时才会显示。例如,在 Customer Signup 或 Customer Birthday 下,这些内容会被隐藏,因为没有订单。如果您在添加了其中某个步骤后切换工作流的触发器,该步骤会被标记,并且在您把触发器改回或删除该步骤之前,工作流无法启用。
第 2 步 — 添加步骤¶
点击任一卡片下方的 + 按钮即可添加下一步。您可以添加条件或操作。要删除某个步骤,请点击其卡片上的 ✕。

条件¶
条件是一道闸门。位于其 YES 分支上的步骤仅在检查通过时运行;位于 NO 分支上的步骤则在检查失败时运行。
在菜单中选择 Add condition,然后在配置面板的 Condition type 下拉框中选择要检查的内容。面板会以一句话显示,例如 "Go to YES when all of these are true",并且每项检查都提供通俗易懂的比较方式:
| 条件 | 检查内容 | 选项 |
|---|---|---|
| Order Amount | 订单的 Subtotal (before tax/shipping)(税费和运费前的小计)、Total (after tax/shipping)(税费和运费后的总计)或 Discount amount(折扣金额) | is at least, is more than, is at most, is less than, is exactly |
| Customer Tag | Shopify 中客户的标签 | has any of, has all of, has none of |
| First Order | 这是否为该客户的首笔订单 | is the first order, is a repeat order |
| Tier Level | 客户当前的忠诚度等级,按等级高低比较 | is, is not, is at least, is at most |
| Order contains product | 订单中是否包含特定商品(或变体),以及最低数量 | contains, does not contain |
| Product in Collection | 所订购的商品是否属于某些系列 | has a product from, has only products from, has no products from |
| Order Item Count | 商品数量,按 Total quantity(总数量)或 Unique items(不同商品数)计 | 与 Order Amount 相同的五种比较 |
| Customer Total Spent | 客户的累计消费金额,不含本笔订单 | 与 Order Amount 相同的五种比较 |
| Tier Reward Earned | 前面的 Reward Tiers 步骤是否为本笔订单发放了等级奖励补充。工作流有 Reward Tiers 步骤后才会提供 | earned a tier reward top-up, earned no top-up |
| Tier Reward Reduced | 退款是否降低了等级奖励——参见 Refunds and Reward Tiers。工作流有 Reward Tiers Refund 步骤后才会提供 | reduced the tier reward, left the tier reward as it was |
要同时满足多项检查,请在面板中点击 + Add condition——每一行都必须通过,订单才会进入 YES 分支;否则订单进入 NO。点击某一行可打开它,点击垃圾桶图标可将其删除。

First Order、Customer Total Spent 与 Tier Level 如何识别您的客户
Gift Card Hero 会自行统计每位客户的订单数和累计消费金额,从该客户首次获得奖励时开始计算——也就是其奖励余额创建的时间。在此之前的订单不计入。因此,对于尚未获得奖励的任何客户,First Order 都为真,即使他们以前在您的店里购物过;Customer Total Spent 则从零开始。两者都检查的是当前订单之前的客户情况。没有等级的客户永远无法通过 Tier Level 检查——即使是 "is not" 也不行。关于消费如何统计,请参见等级。
操作¶
操作是工作流实际执行的内容。
| 操作 | 作用 |
|---|---|
| Issue Credit | 向客户的奖励余额添加店铺余额。选择 Fixed amount 或 % of order,以及是否 Boost by customer tier。在 More options 下:maximum credit cap(最高余额上限)、余额过期时间以及备注。 |
| Issue Cashback | 将订单的一定百分比以店铺余额形式返还。设置 percentage 和可选的最高金额。计算从折扣后的商品金额开始,您可以加上运费和税费。在 More options 下:最低订单金额和备注。 |
| Send Message | 通过 email、SMS 或 Klaviyo event 向客户发送消息。对于邮件,请从模板开始——Credit earned、Tier changed、Credit expiring、Birthday reward、您保存过的模板,或空白模板——然后自由编辑。参见下方的发送消息。 |
| Add Customer Tag | 在 Shopify 中为客户添加一个或多个标签。 |
| Remove Customer Tag | 从客户身上移除一个或多个标签。 |
| Add Order Tag / Note | 在 Shopify 中为订单添加标签,并在其备注中添加一行,以便员工查询订单时能看到工作流执行了什么。仅适用于订单触发器。参见下方的为订单添加标记。 |
| Reward Tiers | 汇总客户在某个时间段内的购买,并计算其所达到等级的奖励——用一张表代替每个等级一个工作流。不发放店铺余额。参见下方的等级奖励。 |
| Reward Tiers Refund | 在 Refund Created 下:计算退款对被退款订单的 Reward Tiers 奖励产生的影响——退款前的奖励、退款后的奖励以及扣减的金额。参见下方的退款与 Reward Tiers。 |
| Update Tier | Up one tier、Set to a specific tier 或 Recalculate from spend。参见等级。 |
| Wait / Delay | 在后续步骤运行前,将工作流暂停若干分钟、小时或天。参见使用 Wait / Delay 延迟奖励。 |
要将已选中的操作换成另一个操作,请点击配置面板顶部的 Change。与触发器一样,切换会清除该步骤的设置。
每个操作一个渠道
邮件、短信和 Klaviyo 事件各自是独立的操作——要同时通过邮件和短信联系客户,请添加两个 Send Message 操作。渠道、变量和测试详见发送消息。
Issue Credit 与 Issue Cashback 如何计算金额¶
- 基数。 Issue Credit 选择 Fixed amount 时,每笔订单发放该固定金额。选择 % of order 时——以及对于 Issue Cashback——基数为订单小计:折扣后、运费前的商品金额。Issue Cashback 允许您在基数上增加内容:点击 "Based on" 旁边的 Change,然后勾选 + shipping 和/或 + tax。如果价格含税,则不勾选 + tax 会将税费部分从基数中扣除。
- 等级加成。 开启 Boost by customer tier(默认开启)时,金额会乘以客户的等级倍数。没有等级的客户不享受加成。
- 上限。 最高余额(或返现金额)在加成之后应用,两种模式均如此——因此 2 倍等级的客户获得的金额永远不会超过上限。
- 取整。 结果四舍五入到分。金额为零则不发放任何内容。
Issue Cashback 在 More options 下的 Only for orders of at least 会按相同的基数进行检查,因此在基数中加入运费或税费也会计入最低金额。
计算加成所用的等级,是本笔订单计入之前客户所处的等级。使客户晋升到更高等级的订单,按旧等级获得奖励;下一笔订单才会按新等级计算。
Credit expires(Issue Credit,位于 More options 下)提供 Store default 和 After N days 两个选项。目前,Store default 表示余额不会过期——店铺没有全局过期设置。选择 After N days 可为余额设置过期日期。Issue Cashback 没有过期选项,因此返现不会过期。关于过期的运作方式,请参见 Money FAQ。
奖励计入客户的余额
店铺余额和返现会计入客户唯一的奖励余额,客户可使用其奖励代码进行消费。参见客户如何兑换奖励。
使用 Wait / Delay 延迟奖励¶
Wait / Delay 操作会将其后的步骤暂停,直到设定的时间过去。输入数字并选择 Minutes、Hours 或 Days;新步骤默认为一天。
它适合用于将奖励推迟到退款期限之后。例如:Order Complete → Wait / Delay 14 days → Issue Cashback。
等待结束时会发生以下情况:
- 步骤按照下单时的订单状态继续执行。 奖励根据开始时的订单计算——等待期间的部分退款不会减少奖励,而且从未发放的余额无法追回。
- 全额退款会使奖励作废。 如果到时订单已全额退款,剩余步骤将不再运行——不发放余额,也不发送消息。
- 已删除的工作流,或您取消的待处理订单,不会继续执行。
- 关闭工作流不会停止等待中的订单。 已暂停的运行会继续完成,即使工作流现已停用,除非您取消它——参见在有进行中的订单时关闭工作流。发放余额时仍然适用消费限额。
- 如果 Gift Card Hero 此时无法向 Shopify 核实订单,步骤会继续执行,而不会丢弃奖励。
恢复运行按计划进行,因此步骤可能会在时间到达后稍晚开始。无论有多少个等待步骤,工作流都只计为一次运行。在 Test workflow 中,Wait / Delay 步骤不会真正等待;测试会显示它将暂停多久,然后继续。
关于退款与回收如何相互作用,请参见 Money FAQ。
使用 Add Order Tag / Note 为订单添加标记¶
Add Order Tag / Note 会写入启动该工作流的订单,因此无论谁在 Shopify 中打开它,或在收银台查询它,都能看到发生了什么。填写以下任一项或两项:
- Tags to add——例如
wine-reward-70。订单已有的标签会保留。Shopify 允许每个标签最多 40 个字符;超过的部分会被截断到 40 个字符。 - Note line——例如
Wine reward $70 - NOT REDEEMED ({{ order.name }})。它会作为新行添加到订单现有备注的下方;订单上已有的备注永远不会被替换。
两个字段都可以使用与消息相同的变量——{{ order.name }} 最常用。点击 Insert variable 即可将变量添加到备注行中。
需要注意以下几点:
- 每行只添加一次。 如果订单备注中已经有完全相同的一行——因为同一订单被再次处理,或其他工作流写入了相同文字——则不会重复添加。
- 退款会标记原订单。 在 Refund Created 下,该步骤会为被退款的订单添加标签和备注。例如,一个设置为 Full refund only 的 Refund Created 工作流,加上针对您奖励商品的 Order contains product 条件,可以添加
wine-reward-void标签以及Wine reward VOID ({{ order.name }})这一行;另一个设置为 Partial refund only 的工作流可以添加wine-reward-check,以便员工手动核对奖励。 - 在等待之后和分支内同样有效。 位于 Wait / Delay 之后的步骤,或位于条件的 YES 或 NO 分支上的步骤,仍会标记同一订单。
- Test workflow 会显示它将写入的标签和备注行(示例订单号为
#1001),而不会修改任何订单。
使用 Reward Tiers 设置等级奖励¶
Reward Tiers 根据客户的消费金额支付奖励,并将客户在一个时间窗口内的购买计为一次,因此将一笔 $600 的购买拆分为四笔 $150 的订单,获得的奖励与一笔 $600 的订单相同,而不是四倍的 $150 奖励。

在步骤中进行设置:
- Count——每笔订单计入的内容:The trigger's products(在 Product Purchase 或 Collection Purchase 下,即触发器匹配的行项目)、Chosen products(所选商品)、Products from collections(系列中的商品)或 The whole order(订单小计)。行项目按折扣后的价格计算。
- Add up within——时间窗口,以小时为单位(默认 24,最多 720)。
- Tiers——包含 From 和 Reward 的行:从每个金额起(含),窗口内的购买可获得该奖励。例如:从 $150 → $40,从 $200 → $50,从 $300 → $65 …… 从 $1,000 → $300。点击 Add tier 添加一行(最多 50 行)。各行按金额排序;金额和奖励必须大于零,两行不能从同一金额开始,且较高等级的奖励不能低于较低等级。
- Add up purchases of——客户账户(默认),或订单上的邮箱地址。
时间窗口的运作方式:客户的第一笔符合条件的订单会开启窗口,此后直到窗口长度过去之前的每笔订单都会加入该窗口。之后的订单会开启新的窗口。每笔订单获得的是窗口已达到的等级奖励,减去该窗口中更早的订单已获得的部分:
| 订单 | 窗口总额 | 等级奖励 | 本笔订单获得 |
|---|---|---|---|
| $150 | $150 | $40 | $40 |
| $150 | $300 | $65 | $25 |
| $150 | $450 | $80 | $15 |
| $150 | $600 | $125 | $45 |
合计 $125——与一笔 $600 的订单相同。
在此步骤之后,可在消息或订单备注中使用以下变量:{{ reward.delta }}(本笔订单获得的金额)、{{ reward.amount }}(窗口已达到的等级奖励)以及 {{ reward.window_total }}(窗口内的购买总额)。将消息和订单标记放在 Tier Reward Earned 条件的 YES 分支上,这样不增加任何新奖励的订单就不会发送邮件:
- 触发器:Product Purchase — Gift Card - Dollar Value
- Reward Tiers——计入触发器的商品,时间窗口 24 小时,使用您的表
- 条件:Tier Reward Earned——YES:Send Message("Your wine reward: {{ reward.delta }}")以及 Add Order Tag / Note(
Wine reward +{{ reward.delta }} ({{ order.name }}))
需要注意以下几点:
- 不发放店铺余额。 此步骤只计算金额;如何交付奖励由后续步骤决定。
- 重复处理订单不会产生任何变化。 重试或重复的事件会发现订单已计入,并给出相同结果;奖励不会重复获得,消息也不会重复发送。
- 退款会降低奖励。 当计入的商品被退款时,退款金额会从窗口总额中扣除,并根据剩余金额重新计算奖励——参见退款与 Reward Tiers。
- 每个工作流只能有一个 Reward Tiers 步骤。 它需要订单,因此在 Customer Signup、Customer Birthday 或 Refund Created 下不提供(这些情况请使用 Reward Tiers Refund)。
- Test workflow 会显示订单将计入的内容、窗口总额、等级和补充金额——对于现有客户,包括其当前窗口内的真实订单——但不记录任何内容。
退款与 Reward Tiers¶
奖励取决于窗口内购买所达到的等级,因此降低购买金额的退款也会降低奖励。这会针对每一笔退款自动发生——您无需构建任何内容:
- 部分退款会将奖励降至剩余金额对应的等级。 一笔 $300 的订单获得了 $65;退款 $150,窗口中剩余 $150——即 $40 等级——因此扣减 $25 的奖励。
- 窗口中唯一订单的全额退款会扣除全部奖励($65 → $0)。
- 对多笔订单中某一笔的退款会重新计算整个窗口。 两笔 $150 的订单分别获得 $40 和 $25;退款第二笔后,窗口回到 $150——$40——因此扣减其 $25。
- 窗口中的下一笔订单从较低的奖励开始计算。 退款一笔 $300 订单中的 $150,然后在窗口内再购买 $150:窗口总额又回到 $300,该订单获得 $25。
- 只有计入的行项目才有影响。 退款的未计入商品(葡萄酒、其他商品)、运费,或没有行项目的款项,都不会产生任何变化。
- 退款只应用一次。 如果 Shopify 重复发送同一笔退款,第二次不会有任何变化。
- 窗口保持其起始时间:退款其第一笔订单不会移动窗口。
要通知客户或员工,请添加一个带有 Reward Tiers Refund 步骤的 Refund Created 工作流。它会读取退款产生的影响:
- Reward Tiers workflow——其 Reward Tiers 步骤计入了该订单的工作流。如果您的店铺只有一个,系统会自动选择;如果有多个,则需要选择其中一个——在您选择之前,该工作流无法启用。
- 此步骤之后可使用:
{{ reward.previous_amount }}(退款前窗口的奖励)、{{ reward.amount }}(退款后的奖励)、{{ reward.reversed }}(被扣减的金额)和{{ reward.window_total }}(窗口中剩余的购买金额),以及它们的_value版本(纯数字)。 - 将订单标记——以及消息(如需要)——放在 Tier Reward Reduced 的 YES 分支上。如果退款后窗口仍处于同一等级,则不扣减任何金额,并走 NO 分支。
例如:
- 触发器:Refund Created — Any refund
- Reward Tiers Refund — Gift for Gifting
- 条件:Tier Reward Reduced——YES:Add Order Tag / Note(
wine-reward-reduced,Wine reward {{ reward.previous_amount }} → {{ reward.amount }} ({{ order.name }}))
Test workflow 会模拟退款,就像 Reward Tiers 工作流已单独计入了样本订单一样:全额退款,或在 Partial refund only 下退一半。请将 Reward Tiers 步骤计入的商品及其价格添加到样本中。
已发放的奖励不会被追回
Gift Card Hero 无法得知奖励是否已经发放——例如,葡萄酒是否已在收银台领取。新奖励反映的是这些购买现在的价值;如果旧奖励已被兑换,请在收银台根据订单备注进行处理。此外,如果在此类退款后,客户在同一窗口内再次购买,新订单会从较低的奖励开始获得补充金额——因此客户获得的可能会多于其实际领取的金额。对于 24 小时的窗口,这种情况很少见,但值得注意。
发送消息¶
Send Message 操作会通过一次一种渠道向客户发送消息:email、SMS 或 Klaviyo event。选择渠道,编写(或选择)消息即可,之后工作流的其余部分会继续运行,无论消息发生什么——消息只是附带效果,而不是闸门。

不支持应用内消息
没有应用内通知渠道。早期版本中设置为 In-app notification 的遗留步骤从未发送过任何内容;编辑器会将此类步骤显示为 Email。请选择一个渠道以实际发送。
选择渠道¶
| 渠道 | 所需内容 |
|---|---|
| 默认从 Gift Card Hero email 发送,或在您将其选为 Send from 后,从您自己的邮件服务器发送——参见下方的投递。使用 Gift Card Hero 邮件无需连接任何额外内容。 | |
| SMS | 需要在 Settings → Integrations 下连接短信服务商(目前为 Onfon Media)。 |
| Klaviyo event | 需要在 Settings → Integrations 下连接 Klaviyo。Gift Card Hero 发送事件;您在 Klaviyo 中构建的 Flow 负责发送实际消息。 |
要连接以上任一渠道,请参见集成。
渠道未就绪时工作流无法启用
当 Send Message 步骤本身使用未连接服务商的 SMS、未连接 Klaviyo 的 Klaviyo 事件,或未设置邮件服务器的邮件时,Activate 会被拒绝。保存为 Draft 始终允许,因此您可以先构建工作流的其余部分。选择未连接的渠道后,面板会显示一条警告,并附带一个按钮,点击后会在新标签页中打开 Settings → Integrations。
编写消息¶
- Email——从模板开始,然后自由编辑主题、消息和按钮。参见下方的邮件:模板与编辑。
- SMS——一个 Text message 字段,首次切换到 SMS 时会预填一段简短的内置文本。
- Klaviyo event——一个 Klaviyo event name 字段(可选;参见下文),以及该事件携带的属性的只读列表。这里无需编写消息正文——客户看到的内容由您的 Klaviyo Flow 编写。
在 Email 和 SMS 中,点击 Insert variable 即可在光标处插入变量,而无需手动输入。下方的实时 Preview 会显示渲染后的消息——邮件为主题、正文和按钮,短信为文本及其分段数,Klaviyo 为事件名称及其属性——在您停止输入后片刻更新。
邮件:模板与编辑¶
无论从哪种模板开始,每个字段都可以自由编辑——一旦您输入了任何内容,就不存在只读的"内置"状态。

Template 下拉框列出四个内置模板——Credit earned、Tier changed、Credit expiring、Birthday reward——然后是 Your templates(您之前保存过的模板),最后是 Blank。Manage templates 会在新标签页中打开忠诚度邮件。
内置名称只是起始文本,不是触发器
只有当您的触发器和步骤使其发送时,工作流才会发送 Tier changed 或 Credit expiring 的文案——没有任何触发器会在等级变化或余额即将过期时触发。例如,要宣布新等级,请在 Update Tier 步骤之后紧接着放置一个 Send Message。Gift Card Hero 还会在余额过期前发送其自身的提醒——参见 Money FAQ。
- 当 Subject 和 Message 尚未修改时选择模板,会立即填入这些内容。
- 如果您已经写好了自己的文字,然后再选择模板,Gift Card Hero 会先进行确认:"Replace your subject and message with the [template] template?"(用 [template] 模板替换您的主题和消息?)——Replace 会填充这些字段,Cancel 则保留您的文字不变。
您对内置模板的主题、消息或按钮进行的第一次编辑,会将该模板的文本复制到此步骤中——输入操作从不修改内置模板本身,也不影响使用它的其他步骤。此后,Started from [name] · edited 会出现在 Template 下拉框下方,表示此步骤现在保存的是自己的副本。如果它所基于的已保存模板已被删除,则会显示 Started from a deleted template。
点击 + Add a button 可在消息下方添加一个按钮:Button label(例如 "Shop now")和 Button link,后者必须是完整的 https:// 地址——Liquid 在此同样有效,因此 https://{{ shop.domain }} 会将客户引导至您的店面。标签留空则不显示按钮。四个内置模板已带有指向您店面的 Shop now 按钮。
点击 View email 可查看客户实际收到的消息:页面顶部为您的店铺名称,然后是消息内容、按钮(如有),以及包含您店铺名称和邮箱的页脚。

Save as template 会将此步骤当前的主题、消息和按钮(及其翻译)以您选择的名称保存,以便下一个工作流可以从中开始,而不必从空白页面开始——请在忠诚度邮件中管理已保存的模板。从已保存模板开始的步骤会保留自己的副本:之后编辑或删除已保存的模板,永远不会更改工作流中已有的邮件。
语言¶
如果您的店铺在 Shopify 中发布了多种语言,邮件或短信步骤会在文本上方显示 Language 下拉框。第一项是您店铺的主语言,标注为 (default);其他每种已发布的语言都会显示其翻译进度——translated、incomplete 或 uses default。

选择一种语言即可编写其主题、消息和按钮标签(或其短信文本)。空字段会以灰色显示默认文本,并附带 Falls back to English。按钮的链接在所有语言中都相同。
发送消息时,Gift Card Hero 会使用 Shopify 中记录的客户语言。它先查找完全匹配(pt-BR),再查找仅语言部分(pt),否则发送默认语言。邮件绝不会只有部分翻译:只有当翻译同时包含主题和消息时才会使用,否则整封邮件都以默认语言发送。编辑器会在字段下方对此进行说明。Klaviyo 事件没有翻译——语言由您的 Flow 处理。
变量¶
| 变量 | 内容 | 示例 |
|---|---|---|
customer.first_name |
客户的名字 | Jane |
customer.last_name |
客户的姓氏 | Doe |
customer.name |
用于问候的名称:名字;未知时为 "there" | Jane |
customer.email |
客户的邮箱地址 | jane.doe@example.com |
customer.phone |
客户的电话号码,采用国际格式 | +254712345678 |
customer.locale |
Shopify 报告的客户语言;未知时为空 | fr |
reward.amount |
本次运行中此工作流先前发放的店铺余额,按您的货币格式显示;若无则为空。在 Reward Tiers 步骤之后:购买所达到的等级奖励。在 Reward Tiers Refund 步骤之后:退款后剩余的奖励 | $10.00 |
reward.amount_value |
同一金额,以纯数字显示 | 10 |
reward.delta |
Reward Tiers:本笔订单获得的金额——等级奖励减去窗口中更早的订单已获得的部分(仅限 Reward Tiers 工作流) | $10.00 |
reward.delta_value |
同上,以纯数字显示(仅限 Reward Tiers 工作流) | 10 |
reward.window_total |
Reward Tiers:客户在窗口内的购买合计,包括本笔订单;退款后则为剩余金额(仅限 Reward Tiers 工作流) | $150.00 |
reward.window_total_value |
同一总额,以纯数字显示(仅限 Reward Tiers 工作流) | 150 |
reward.previous_amount |
Reward Tiers Refund:退款前窗口的奖励(仅限包含 Reward Tiers Refund 步骤的退款工作流) | $25.00 |
reward.previous_amount_value |
同上,以纯数字显示(仅限 Reward Tiers Refund) | 25 |
reward.reversed |
Reward Tiers Refund:退款扣减的奖励金额——退款前的奖励减去退款后的奖励(仅限 Reward Tiers Refund) | $15.00 |
reward.reversed_value |
同上,以纯数字显示(仅限 Reward Tiers Refund) | 15 |
wallet.balance |
客户的店铺余额,按您的货币格式显示 | $25.00 |
wallet.balance_value |
以纯数字显示的余额 | 25 |
wallet.currency |
余额的货币 | USD |
tier.name |
客户的忠诚度等级;没有等级时为空 | Silver |
tier.next_name |
下一个更高的等级;处于最高等级或没有等级时为空 | Gold |
tier.spend_to_next |
客户要达到下一等级还需消费的金额,按您的货币格式显示 | $150.00 |
tier.spend_to_next_value |
同上,以纯数字显示 | 150 |
order.name |
订单号(仅限订单触发器) | #1001 |
order.total |
订单总额,按您的货币格式显示(仅限订单触发器) | $120.00 |
order.total_value |
以纯数字显示的订单总额(仅限订单触发器) | 120 |
trigger.matched_amount |
触发器匹配的商品或系列商品在折扣后的合计金额,按您的货币格式显示(仅限 Product / Collection Purchase 触发器) | $100.00 |
trigger.matched_amount_value |
同一金额,以纯数字显示(仅限 Product / Collection Purchase 触发器) | 100 |
workflow.name |
此工作流的名称 | Your workflow |
shop.name |
您的店铺名称 | Your Store |
shop.domain |
您的店面域名 | your-store.com |
shop.email |
您店铺的联系邮箱 | hello@your-store.com |
在这些变量出现之前使用的四个 Liquid 变量,在您尚未重写的任何消息中仍然有效:{{amount}}、{{balance}}、{{customer_name}} 和 {{store_name}}——其值与 reward.amount、wallet.balance、customer.name 和 shop.name 相同。新消息请使用上表中的变量。
Liquid 基础知识¶
消息是一个小型 Liquid 模板。以下两点几乎涵盖了商家所需的全部内容:
- 输出变量:使用双花括号,例如
Hi {{ customer.first_name }}, your balance is {{ wallet.balance }}. - 仅在某些情况下显示内容:使用
{% if %}…{% endif %}:
{% if reward.amount_value > 0 %}You also earned a reward on this order!{% endif %}
当条件为假时,标签之间的内容都不会显示——不会留下空行,也不会残留多余的标点。
包含 Liquid 错误的消息无法保存:构建器会指出对应字段,并说明问题所在。
短信长度与分段¶
短信按分段计费:普通文字消息每段可容纳 160 个字符,之后每段为 153 个字符。只要有一个字符超出基本拉丁字母表——表情符号、弯引号、许多带重音的字母——整条消息就会切换到每段仅能容纳 70 个字符(第一段之后为 67 个)的模式,因此一个多余的字符就可能使消息成本翻倍。Text message 字段下方的计数是您输入内容的长度,上限为 1,000 个字符。消息占用的分段数显示在预览中:它计算的是渲染后的文本——变量已用示例值填充,而不是 {{ }} 标签本身——因此较长的客户姓名或金额仍可能增加一个分段。
投递¶
每个渠道在面板底部都以 Delivery 分组结尾——说明消息如何发出,以及谁有权接收。

Send from(仅限邮件)是邮件发出所经过的通道:
| 选项 | 发件人显示为 |
|---|---|
| Gift Card Hero email | <Your store name> <giftcardhero@syncube.email>,回复将发送至您店铺的邮箱。始终可用。 |
| Your mail server (SMTP) | 在 Settings → Integrations 中为其设置的地址。在那里连接邮件服务器之前,显示为 "— not set up" 且不可选。 |
Manage senders 会在新标签页中打开 Settings → Integrations。在此选项出现之前保存的步骤,会继续沿用您店铺全局的邮件设置(参见集成),直到您在此为其选择发件人。
如果步骤设置使用的邮件服务器停止工作,邮件仍会发出——改为通过 Gift Card Hero email 发送——并且该步骤的结果会说明这一点。通过损坏的邮件服务器发送的 Send test 会直接失败而不会回退,并提示 "Your mail server isn't set up",以便您在客户发现问题之前得知。当邮件步骤所选的邮件服务器未设置时,工作流无法被启用——参见上方的警告。
对于短信和 Klaviyo,此分组显示的是连接状态,而不是 Send from——即网关或 Klaviyo 是否已连接。
每个渠道在此处还有各自的同意复选框:短信为 "Only send to customers subscribed to SMS marketing",邮件和 Klaviyo 为 "Only send to customers subscribed to email marketing"。它会按照 Shopify 为该渠道记录的客户营销同意情况进行判断。
同意复选框对短信默认开启,对邮件和 Klaviyo 默认关闭——切换渠道会将其重置为该默认值,即使您之前更改过。只有在您确定每位收件人都同意接收短信时,才为短信关闭此项;无论如何,奖励类的事务性消息仍会占用一个分段的费用。
Klaviyo 事件与构建 Flow¶
Klaviyo 步骤发送的是一个事件(指标),而不是消息——您的 Klaviyo 账户会将该事件转换为您 Flow 所发送的任何内容。事件名称默认为 Loyalty: <workflow name>;您可以输入自己的名称(最多 128 个字符),以定位特定的 Flow。当您的账户中有多个 Send Message 步骤都会输入 Klaviyo 时,这很有用。
事件会将上表中的每个变量(不包括四个旧变量)作为属性携带,另外还有 workflow_id、step_id 和 is_test。它通过邮箱关联到客户资料——没有邮箱记录的客户无法接收 Klaviyo 事件。
请以与提醒或兑换通知相同的方式,在 Klaviyo 中构建由此指标触发的 Flow——没有 Flow 支撑的事件会到达 Klaviyo,然后什么也不做。
发送测试¶
有两种不同的测试方式,用途各不相同:
- 工具栏中的 Test workflow 会以模拟运行的方式运行整个工作流。对于 Send Message 步骤,它会显示渲染后的主题和文本(或 Klaviyo 事件及其属性),以及脱敏后的收件人——并且不会联系任何邮件、短信或 Klaviyo 服务商。
- Send Message 操作自身编辑器中的 Send test,会发送一条真实消息——使用示例客户、奖励和余额数值——发送到您输入的邮箱或电话号码;对于邮件,默认填入您店铺自己的邮箱地址。短信测试是真实的、会计费的消息。邮件测试始终通过该步骤自己的发件人发出,绝不会回退到其他发件人;如果该发件人未设置,测试会直接失败,并提示 "Your mail server isn't set up",而成功的测试会同时确认所用的地址和发件人。Klaviyo 测试会向您输入的邮箱发送一个真实事件,并带有
is_test: true,以便您针对它完成 Flow 的构建。在所测试的渠道连接之前,Send test 处于禁用状态。如果该步骤有翻译,测试会以当前选中的语言发送。
消息未发送的情况¶
Send Message 步骤绝不会中断工作流的其余部分——无论消息发生什么,后续步骤仍会运行。此外,每个步骤对每笔订单或每个事件最多只发送一次:重试的任务或 Shopify 重复发送的 webhook 永远不会导致同一条消息被发送两次。
当消息未能发出时,Test workflow 会直接在该步骤上说明原因。对于实际运行,同样的原因会记录在该步骤上,但管理后台不会列出每一次实际运行——请对同一客户使用 Test workflow 来重现问题。
| 提示内容 | 发生了什么 |
|---|---|
| no email address is known for this customer | 渠道为邮件或 Klaviyo,且该客户没有邮箱记录。 |
| no usable phone number is known for this customer | 渠道为 SMS,且无法为该客户找到可用的电话号码。 |
| the customer is not subscribed to SMS marketing / email marketing | 投递 中的同意复选框在此步骤上已勾选,且 Shopify 未将该客户标记为已订阅该渠道。 |
| no SMS gateway is connected (Settings → Integrations) | 短信服务商未连接——或在此步骤启用后被断开。 |
| Klaviyo is not connected (Settings → Integrations) | 同上,适用于 Klaviyo 步骤。 |
| the message shows the reward amount, but this run issued no store credit | 消息中某处输出了 {{ reward.amount }}(或旧版 {{amount}},或 reward.delta / reward.window_total / reward.previous_amount / reward.reversed),但此次运行没有发放任何店铺余额——因此客户绝不会被告知他们获得了 "$0.00"。在 {% if %} 中测试 reward.amount_value 而不输出金额(如 Liquid 基础知识 示例中所示),可以避免此问题。在 Reward Tiers 步骤之后,此情况永远不会适用——请改为根据 Tier Reward Earned 分支;在 Reward Tiers Refund 步骤之后,则根据 Tier Reward Reduced 分支。 |
| already sent for this event by an earlier attempt | 重试或重复的 webhook 再次尝试发送同一步骤的消息。 |
消息也可能失败——服务商拒绝了它,或模板未能渲染——此时步骤的结果会显示 Gift Card Hero 收到的错误信息。
分支示例¶
一种常见模式是为更大的订单提供更丰厚的奖励:
- 触发器:Order Complete
- 添加条件:Order Amount is more than
100 - 在 YES 分支上添加 Issue Cashback,比例为
10% - 在 NO 分支上添加 Issue Cashback,比例为
5%
当您将条件插入现有链条的中间时,位于其后的步骤会自动移到 YES 分支上。
验证与保存¶
在工作流有效之前,Save 按钮保持禁用——它需要名称、触发器以及至少一个步骤。
保存时,Gift Card Hero 还会检查每个步骤的设置。如果缺少必填字段,或数字超出范围(例如,百分比必须在 0.1 到 100 之间),构建器会显示错误横幅,并高亮需要修正的具体字段。请更正后再次保存。以下情况同样如此:触发器金额范围的上限不大于下限(因为没有订单能与之匹配);Reward Tiers 表中存在空白、零、重复或递减的行;以及结束时间早于开始时间的计划。
首次保存新工作流时,它会成为Draft。对已Active工作流的更改会在保存后立即生效。
工具栏¶

左侧是:工作流名称,然后是 Schedule、Budget、Advertise,以及状态徽章(若有未保存的更改,还会显示 Unsaved)。
- Schedule: Always on——可选择将工作流限制在某个时间段内。选择开始和结束的日期与时间(或预设,如 Next 30 days);留空结束时间表示没有结束时间;点击 Always on 可清除。工作流只会奖励发生在该时间段内的事件——因此,在结束日期之前下的订单即使处理稍晚,仍会获得奖励。结束时间必须晚于开始时间。在时间段之外,徽章会显示 Scheduled(尚未开始)或 Ended(已结束)。
- Budget: No cap——此工作流的 Monthly budget cap(月度预算上限)。一旦它在日历月(UTC)内发放的余额将超过上限,工作流就会停止发放余额并被暂停。留空表示没有上限。全店范围的上限和每位客户的上限在忠诚度的 Settings 页面中设置——参见 Money FAQ。
- Advertise——创建或关联店面促销;参见为工作流的奖励做广告。在保存工作流之前,该按钮处于禁用状态。
在右侧,工作流保存一次之后会显示:
- Results on canvas——在画布的每个步骤上显示运行次数。
- Test workflow——参见测试工作流(模拟运行)。
- Performance——参见绩效。
- Delete(垃圾桶图标)——参见删除。
- Activate / Deactivate——参见启用、停用与状态。
- Save——始终显示。
测试工作流(模拟运行)¶
在启用之前,或每次更改已上线的工作流之后,请先进行模拟。不会发放任何余额,也不会发送任何消息——包括邮件、短信或 Klaviyo。测试会按照画布当前的状态运行,包括您尚未保存的编辑。Test workflow 会在工作流首次保存后出现。
- 点击工具栏中的 Test workflow。
- 选择以谁的身份进行测试。New customer 为默认值:一位首次购物、没有标签、没有等级、也没有消费的顾客。选择 Existing customer 后输入 Email;Gift Card Hero 会查找该客户,显示带有其姓名、等级和订单数的绿色徽章,并填入其真实的标签、等级和消费金额。
- 填写订单。对话框只显示您的工作流实际读取的字段——顶部有一行 "This workflow checks…" 列出这些字段。订单触发器始终显示 Subtotal;其他字段(Customer tags、Tier、Lifetime spent、Treat as this customer's first order、Order total、Discount、Products)在某个条件需要时才会出现。其他所有内容都位于 More options 下。当触发器或 Reward Tiers 步骤涉及商品金额时,还需为每个示例商品设置 Price。
- 点击对话框标题栏中的 Run test。

结果会列出工作流所做的检查(以及每项检查走的是 YES 还是 NO 分支),然后列出每个操作将执行的内容。Send Message 步骤会显示它将发送的内容以及发送给谁(已脱敏)——关于消息未能发出时的措辞,参见消息未发送的情况。底部的绿色框会显示客户将获得的余额;如果没有,则显示 No credit would be issued 及原因。如果触发器自身的过滤条件不匹配(例如订单低于您设置的最低金额),测试会显示 Workflow would not run 及原因。
模拟“假设”客户
更改 Tier、Treat as this customer's first order 或 Lifetime spent 字段,即可模拟客户处于某个等级、是首笔订单或达到某个消费水平的情况——无需真实的客户即可满足条件。
测试也会遵守您的消费限额:如果某个上限会阻止奖励,测试会显示它已被阻止。
启用、停用与状态¶
工作流有三种您可以选择的状态,以徽章形式显示:
- Draft——新建且尚未运行。
- Active——正在实时事件上运行。
- Inactive——已保存但已暂停。
另外两个标签是根据计划和限额计算得出的:Scheduled 和 Ended(参见工具栏),以及当预算上限使工作流停止时,工作流列表中显示的 Paused by guardrail。在构建器中,因护栏而暂停的工作流显示为 Inactive,并带有 Paused by guardrail 横幅,横幅会说明达到了哪个上限,并附有 Reactivate 按钮;重新启用不会提高上限,因此工作流可能会再次暂停。
点击 Activate 可开启工作流,或点击 Deactivate 暂停它。请先保存更改——Activate 作用于已保存的工作流。启用和停用可能需要一些时间,因为 Gift Card Hero 会在后台连接(或断开)相应的 Shopify 事件。
在以下情况下,Activate 会被拒绝,并在相关步骤上显示问题:
- 某个步骤需要触发器无法提供的数据(例如在 Customer Signup 下使用 Add Order Tag / Note);
- Reward Tiers Refund 步骤没有可读取的 Reward Tiers 工作流,或有多个工作流但未选择;
- Send Message 步骤使用了未连接的渠道或发件人(参见发送消息)。
在有进行中的订单时关闭工作流¶
订单可能仍在工作流中运行——正在排队等待处理,或在 Wait / Delay 步骤中等待。当您点击 Deactivate 且存在待处理订单时,Gift Card Hero 会列出它们(订单、客户以及 "waiting N min" 或 "continues in 3 days")并询问:
- Turn off, finish these——默认选项。列出的订单仍会获得此工作流的奖励。
- Turn off and cancel these——这些订单将永远不会获得此工作流的奖励。此操作无法撤销。

如果您选择完成这些订单,Inactive 工作流在仍有剩余订单时会持续显示一个横幅,其中包含 Cancel them(确认后)和 Refresh 按钮。无论选择哪种方式,已处理的订单都不会受影响。
绩效¶
Performance 会将配置面板替换为该工作流运行情况的摘要。可在 7d、30d、90d 和 All 之间切换。它会显示 Runs(以及其中有多少次执行了操作)、Customers rewarded、Net credit(已发放的余额,减去退款收回的余额,再减去已过期的余额)、Orders rewarded,以及两项估算——Credit spent(客户已使用的已发放余额比例)和使用该余额的订单所产生的 Revenue——另外还有一张每日运行次数图表。如果消费限额阻止了奖励,横幅会说明这一点,并附带详情和订单链接。

Results on canvas 会将计数添加到步骤本身上。如需查看所有工作流的数字,请参见忠诚度分析。
删除¶
点击垃圾桶图标,确认后即可永久删除工作流。如果工作流处于启用状态,会先断开其底层的 Shopify 事件。仍在处理中的订单会被取消——确认对话框会告诉您数量。与该工作流关联的促销会变为草稿并停止显示,但会保留在您的促销列表中。此操作无法撤销。您也可以在 Loyalty Workflows 列表中选择多个工作流,然后使用 Delete workflows。
为工作流的奖励做广告¶
构建工作流不会自动告知任何人。在工具栏中点击 Advertise(工作流保存且没有未保存的更改之后),即可创建或关联一个促销——店面上显示的弹出式提示卡片和/或横幅,其中的奖励数字实时取自工作流。只有发放余额或返现的工作流才能进行广告。参见促销挂件。