如何限制脚本对每个客户执行一次?脚本编辑器和 Shopify
How Do I Limit A Script To Execute Once Per Customer? Script Editor and Shopify
我想要的:
- 我在脚本编辑器中创建了一个脚本,使您的第一个
购物车中的订单项免费。我希望此脚本对每个客户执行一次。
我的问题:
- 限制脚本对每个客户执行一次的语法是什么
通过使用脚本编辑器应用程序?
业务用例:
- 如果不将此功能添加到我的脚本中,客户可以
结账时免费赠送 1 件商品...但随后他们可以再次开始购物
并使用新购物车结帐,第一行商品再次免费......
意味着他们可以从 10 个不同的结账处获得 10 个免费物品。
感谢您的时间和想法!
P.S。脚本在 Ruby 中。此外,设置折扣代码不适用于我的用例。
更新
感谢您的回复。我将在本周尝试这些建议的更新,很快就会 post 我的结果。
更新 2
所以除了一个细节之外,下面的建议和标记的答案都是正确的。即使下面描述的语法正确,脚本编辑器仍会 运行 出现某种类型的错误。另一个 建议使用 '&'。
所以我最终做了这样的事情:
customer = Input.cart.customer
if customer&.tags&.include?("gift_received")
...
end
这对我有用。再次感谢您的所有回答!
嗯。您总是可以为客户分配一个小标签。例如,如果他们收到了这个免费商品,请在他们的第一笔订单中给他们贴上标签。现在,如果他们再尝试欺骗您九次,请检查该标签。如果他们有,请从结帐处删除该项目。繁荣。问题已解决。
任何类型的解决方案只有在需要帐户时才有效
否则您无法追踪订单历史。
有两种可能的解决方案
- 您创建一个流程,在客户收到礼物时为其分配标签。您检查标签:
Input.cart.customer.tags.include?('gift_received')
并且不应用折扣。
- 如果您的情况只是 'Gift on the first order',您只需检查
Input.cart.customer.orders_count > 0
即可。
I have created a script in the Script Editor that makes your first line item in a cart free. I want this script to execute once per customer.
最好的方法是使用标签标记客户。您可以使用 Shopify 流程向包含免费礼品的订单添加标签,以将客户标记为已收到免费礼品的客户。这比检查 Input.cart.customer.orders_count > 0
更好,因为它会让您在订单和客户面板中获得更多可见性。
@Fabio Filippi 提到的方法是最好的,但需要加以保护:
You create a flow that assigns a tag to a customer when they receive a gift. You check for the tag : Input.cart.customer.tags.include?('gift_received') and don't apply the discount.
Business use case:
Without adding this functionality to my script, a customer could checkout with 1 item free... but then they could begin shopping again and checkout with a new cart with the first line item free again... that means they could get 10 free items from 10 different checkouts.
Nothing prevents the user from creating a new account so you need to consider some verification logic that will be assigning the gift_received tag after the customer is validated.
如果您想避免欺诈,我会考虑同时使用(请注意,在这种情况下,我们正在检查客户过去是否已经购买过东西)Input.cart.customer.orders_count > 1
和 Input.cart.customer.tags.include?('gift_received')
或 Input.cart.customer.tags.include?('gift_received')
和 Input.cart.customer.total_spent > Money.new(cents: 1000)
。这样你就可以拥有“有资格获得礼物”的逻辑。有很多方法可以解决它。
我想要的:
- 我在脚本编辑器中创建了一个脚本,使您的第一个 购物车中的订单项免费。我希望此脚本对每个客户执行一次。
我的问题:
- 限制脚本对每个客户执行一次的语法是什么 通过使用脚本编辑器应用程序?
业务用例:
- 如果不将此功能添加到我的脚本中,客户可以 结账时免费赠送 1 件商品...但随后他们可以再次开始购物 并使用新购物车结帐,第一行商品再次免费...... 意味着他们可以从 10 个不同的结账处获得 10 个免费物品。
感谢您的时间和想法!
P.S。脚本在 Ruby 中。此外,设置折扣代码不适用于我的用例。
更新
感谢您的回复。我将在本周尝试这些建议的更新,很快就会 post 我的结果。
更新 2
所以除了一个细节之外,下面的建议和标记的答案都是正确的。即使下面描述的语法正确,脚本编辑器仍会 运行 出现某种类型的错误。另一个
所以我最终做了这样的事情:
customer = Input.cart.customer
if customer&.tags&.include?("gift_received")
...
end
这对我有用。再次感谢您的所有回答!
嗯。您总是可以为客户分配一个小标签。例如,如果他们收到了这个免费商品,请在他们的第一笔订单中给他们贴上标签。现在,如果他们再尝试欺骗您九次,请检查该标签。如果他们有,请从结帐处删除该项目。繁荣。问题已解决。
任何类型的解决方案只有在需要帐户时才有效 否则您无法追踪订单历史。
有两种可能的解决方案
- 您创建一个流程,在客户收到礼物时为其分配标签。您检查标签:
Input.cart.customer.tags.include?('gift_received')
并且不应用折扣。 - 如果您的情况只是 'Gift on the first order',您只需检查
Input.cart.customer.orders_count > 0
即可。
I have created a script in the Script Editor that makes your first line item in a cart free. I want this script to execute once per customer.
最好的方法是使用标签标记客户。您可以使用 Shopify 流程向包含免费礼品的订单添加标签,以将客户标记为已收到免费礼品的客户。这比检查 Input.cart.customer.orders_count > 0
更好,因为它会让您在订单和客户面板中获得更多可见性。
@Fabio Filippi 提到的方法是最好的,但需要加以保护:
You create a flow that assigns a tag to a customer when they receive a gift. You check for the tag : Input.cart.customer.tags.include?('gift_received') and don't apply the discount.
Business use case:
Without adding this functionality to my script, a customer could checkout with 1 item free... but then they could begin shopping again and checkout with a new cart with the first line item free again... that means they could get 10 free items from 10 different checkouts. Nothing prevents the user from creating a new account so you need to consider some verification logic that will be assigning the gift_received tag after the customer is validated.
如果您想避免欺诈,我会考虑同时使用(请注意,在这种情况下,我们正在检查客户过去是否已经购买过东西)Input.cart.customer.orders_count > 1
和 Input.cart.customer.tags.include?('gift_received')
或 Input.cart.customer.tags.include?('gift_received')
和 Input.cart.customer.total_spent > Money.new(cents: 1000)
。这样你就可以拥有“有资格获得礼物”的逻辑。有很多方法可以解决它。