跳转到主要内容

使用 Liquid Templating 进行消息个性化

学习如何使用 Liquid 语法实现高级个性化和动态内容

作者:Ira

Liquid templating 让您能够使用高级逻辑创建个性化消息,例如根据客户位置显示不同内容,在数据缺失时使用备用文本,或动态格式化日期和价格。在电子邮件(Email)营销活动、短信(SMS)和推送通知中使用 Liquid。


开始之前

  • Liquid 模板适用于营销活动和自动化流程(Automation)– 电子邮件(Email)、短信(SMS)和推送通知均支持 Liquid 对象和筛选器。

  • 发送前测试个性化 – 测试电子邮件不包含真实的联系人数据。当使用默认过滤器时,将显示后备值。默认:使用过滤器。使用动态预览或测试联系人查看真实的联系人值。

  • 始终添加后备值 – 使用| default: 'text' 以避免缺少联系人数据时出现空白空间。

  • Omnisend 使用修改过的 Liquid 语法 – 替换 Shopify 的大括号{{ }} 用方括号替换[[ ]].

🔁 个性化新手? 在使用 Liquid 之前,先从 标准个性化 开始。Liquid 适用于高级用例。

概述:什么是 Liquid

Liquid 是 Shopify 创建的开源模板语言。它允许您使用三个元素将动态内容插入消息中:

  1. 对象 – 输出联系人或订单数据的变量([[ contact.first_name ]])

  2. 标签 – 逻辑和控制流 ([% if contact.country == 'France' %])

  3. 过滤器 – 修改输出([[ contact.first_name | capitalize ]])

Omnisend 使用修改版的 Liquid:

  • 对象: 使用[[ ]] 替代{{ }} – 示例:[[ contact.first_name ]]

  • 标签: 使用[% %] 替代{% %} – 示例:[% if contact.country == 'France' %]

📝 了解更多关于 Shopify 文档中的 Liquid,并记得在 Omnisend 中将花括号替换为方括号。

对象

对象是从联系人档案、订单或您的帐户设置中输出动态内容的变量。对象始终用双方括号括起来。

[[ contact.first_name ]]

可用对象组:

  • 联系人属性: [[ contact.variable ]](姓名、电子邮件、位置、自定义属性)

  • 帐户属性: [[ account.variable ]](商店名称、网站、货币)

  • 订单属性: [[ order.variable ]](订单 ID、总额、项目) – 仅限自动化工作流

  • 购物车属性: [[ cart.variable ]](放弃的购物车 URL) – 仅限自动化工作流

  • 日期属性: [[ current_date ]](当前日期、月份、年份)

查看下面的完整 对象参考表

过滤器

过滤器更改 Liquid 对象的输出。过滤器由管道 | 符号分隔。


示例:

[[ 'mywebsite.com/orders/' | append: order.order_id ]]

常见过滤器:

  • 默认 – 当数据缺失时添加后备文本:[[ contact.first_name | default: 'there' ]]

  • 大写 – 将首字母大写:[[ contact.city | capitalize ]]

  • 大写 – 转换为大写:[[ contact.country | upcase ]]

  • 附加 – 在末尾添加文本:[[ account.website | append: '/sale' ]]

  • 日期 – 格式化日期:[[ current_date | date:'%B %d, %Y' ]] → "2026年5月13日"

  • 呼格 – 在支持的语言中将名称调整为呼格形式:[[ contact.first_name | vocative ]]

了解更多关于 Shopify 文档中的 Liquid 过滤器 – 记得使用 Omnisend 的 [[ ]] 语法。

标签(仅限自动化)

标签在消息中创建逻辑和控制流程。标签被包含在 [% %] 大括号中,并且不会产生可见文本。

示例:

[% if contact.first_name %] Hi [[ contact.first_name ]] [% endif %]

⚠️ 标签仅在自动化中有效 – 不适用于活动。了解有关 Shopify 文档中的 Liquid 标签 的更多信息。

常见用例

这里有几个有用的 Liquid 语法常见用例:

个性化

Hi [[ contact.first_name ]], welcome to Omnisend!

输出: "嗨,Sarah,欢迎来到Omnisend!"

4a1 提示:此过滤器会自动将名称调整为支持语言中的呼格形式,使您的消息听起来更自然和个性化。这可以通过使用呼格个性化:[[ contact.first_name | vocative ]]

带后备的个性化

Hi [[ contact.first_name | default: 'there' ]], welcome to Omnisend!

输出(如果缺少名字): "嗨,你好,欢迎来到Omnisend!"

f4a1 为什么使用后备?
如果联系人的资料缺少数据(例如,没有名字),个性化标签将显示空白。后备可以防止这种情况:

  • 带后备值: 嗨 [[ contact.first_name | default: 'there' ]] → "嗨那里"

  • 不带后备值: 嗨 [[ contact.first_name ]] → "嗨 "

始终添加后备选项以避免尴尬的空白空间。

消息中的变量插入

插入 Liquid 变量到:

  • 电子邮件主题行:别忘了你的购物车,[[ contact.first_name ]]!

  • 电子邮件正文文本:您的订单总额:[[ order.total_price ]] [[ order.currency ]]

  • 短信消息:嗨 [[ contact.first_name ]],您的订单 #[[ order.order_number ]] 已发货!

  • 推送通知:[[ contact.first_name ]],20%折扣今天结束

  • 按钮链接:[[ account.website ]]/orders/[[ order.order_id ]]

条件逻辑(仅限自动化)

使用条件语句根据联系数据显示不同的内容。

语言本地化

[% if contact.custom_properties.language == 'Spanish' %] Hola [[ contact.first_name ]]! [% elsif contact.custom_properties.language == 'French' %] Bonjour [[ contact.first_name ]]! [% else %] Hi [[ contact.first_name ]]! [% endif %]

基于位置的内容

[% if contact.country == 'UK' or contact.country == 'Ireland' %] Have you visited our newest flagship store in London? [% endif %]

格式化

首字母大写

Hi [[ contact.first_name | capitalize ]]

输出: "嗨,sarah" 9c2 "嗨,Sarah"

附加自定义文本

[% assign campaign_destination = '/landing_page.html' %]  [[ account.website | append: campaign_destination ]]

格式化日期

Omnisend © [[ current_date | date:'%Y' ]]

输出: "Omnisend © 2026"

日期格式选项:

  • %d – 日期(13)

  • %A – 星期几名称(星期三)

  • %m – 月份数字(05)

  • %B – 月份名称(五月)

  • %Y – 年(2026

对象参考表

联系人属性

下拉标题

标签

值类型

描述

电子邮件

[[ contact.email ]]

字符串

联系人的电子邮件

姓名

[[ contact.first_name ]]

字符串

联系人的名字

姓氏

[[ contact.last_name ]]

字符串

联系人的姓氏

城市

[[ contact.city ]]

字符串

联系人的城市

国家

[[ contact.country ]]

字符串

联系人的国家

[[ contact.state ]]

字符串

联系人的状态

邮政编码

[[ contact.postal_code ]]

字符串

联系人的邮政编码

取消订阅链接

[[ unsubscribe_link ]]

联系人的取消订阅链接

偏好中心链接

[[ preference_link ]]

联系人的偏好链接

自定义属性

[[ contact.custom_properties.customPropertyName ]]

对象

联系人的自定义属性

电话号码

[[ contact.phone_number ]]

字符串

联系人的电话号码

账户属性

下拉标题

标签

值类型

描述

姓名

[[ account.name ]]

字符串

账户名称

地址

[[ account.address ]]

字符串

账户地址

城市

[[ account.city ]]

字符串

账户城市

邮政编码

[[ account.zipCode ]]

字符串

账户的邮政编码

国家

[[ account.country ]]

字符串

账户的国家

网站 URL

[[ account.website ]]

字符串

账户的网站 URL

时区

[[ account.timezone ]]

字符串

账户的时区

货币

[[ account.currency ]]

字符串

账户的货币

日期属性

下拉标题

标签

值类型

描述

当前日期

[[ current_date | date:'%d' ]]

-

执行操作的日期

当前星期几

[[ current_date | date:'%A' ]]

-

执行操作的日期

当前月份

[[ current_date | date:'%m' ]]

-

执行操作的月份

当前月份名称

[[ current_date | date:'%B' ]]

-

执行操作的月份名称

当前年份

[[ current_date | date:'%Y' ]]

-

执行操作的当前年份

订单属性(仅限自动化)

下拉标题

标签

值类型

描述

订单ID

[[ order.order_id ]]

字符串

订单的ID

订单号

[[ order.order_number ]]

int64

订单的号码

订单名称

[[ order.order_name ]]

字符串

订单的名称

订单日期

[[ order.order_date ]]

日期

订单创建日期

货币

[[ order.currency ]]

字符串

订单的货币

总价格

[[ order.total_price ]]

int64

订单的总金额

小计价格

[[ order.subtotal_price ]]

int64

小计订单金额

折扣

[[ order.discount ]]

int64

订单的折扣

运费

[[ order.shipping_price ]]

int64

订单的运费

订单状态页面URL

[[ order.order_url ]]

字符串

获取确切订单信息的 URL

订单备注

[[ order.note ]]

字符串

附加订单备注

账单地址(仅限自动化)

下拉标题

标签

值类型

描述

[[ order.billing_address.first_name ]]

字符串

账单地址中提供的联系人的名

姓氏

[[ order.billing_address.last_name ]]

字符串

账单地址中提供的联系人的姓

国家

[[ order.billing_address.country ]]

字符串

账单地址中提供的联系人的国家

国家代码

[[ order.billing_address.country_code ]]

字符串

账单地址中提供的联系人的国家代码

[[ order.billing_address.state ]]

字符串

账单地址中提供的联系人的州

州代码

[[ order.billing_address.state_code ]]

字符串

账单地址中提供的联系人的州代码

城市

[[ order.billing_address.city ]]

字符串

账单地址中提供的联系人的城市

地址 1

[[ order.billing_address.address1 ]]

字符串

账单地址中提供的联系人的地址(第一行)

地址 2

[[ order.billing_address.address2 ]]

字符串

账单地址中提供的联系人的地址(第二行)

邮政编码

[[ order.billing_address.zip ]]

字符串

账单地址中提供的联系人的邮政编码

公司

[[ order.billing_address.company ]]

字符串

账单地址中提供的联系人的公司名称

电话

[[ order.billing_address.phone ]]

字符串

账单地址中提供的联系人的电话号码

运输地址(仅限自动化)

下拉标题

标签

值类型

描述

名字

[[ order.shipping_address.first_name ]]

字符串

在送货地址中提供的联系人的名字

姓氏

[[ order.shipping_address.last_name ]]

字符串

在送货地址中提供的联系人的姓氏

国家

[[ order.shipping_address.country ]]

字符串

联系人的国家在运输地址中提供

国家代码

[[ order.shipping_address.country_code ]]

字符串

联系人的国家代码在运输地址中提供

[[ order.shipping_address.state ]]

字符串

联系人的州在运输地址中提供

州代码

[[ order.shipping_address.state_code ]]

字符串

联系人的州代码在运输地址中提供

城市

[[ order.shipping_address.city ]]

字符串

联系人的城市在运输地址中提供

地址 1

[[ order.shipping_address.address1 ]]

字符串

联系人的地址(第一行)在运输地址中提供

地址 2

[[ order.shipping_address.address2 ]]

字符串

联系人的地址(第二行)在运输地址中提供

邮政编码

[[ order.shipping_address.zip ]]

字符串

联系人的邮政编码在运输地址中提供

公司

[[ order.shipping_address.company ]]

字符串

联系人的公司名称在运输地址中提供

电话

[[ order.shipping_address.phone ]]

字符串

联系人的电话号码在运输地址中提供

购物车属性(仅限自动化)

下拉标题

标签

值类型

描述

放弃的购物车 URL

[[ abandoned_cart.recover_url ]]

字符串

用于访问/恢复放弃的购物车的 URL

故障排除

个性化在电子邮件中显示原始代码

原因: 您正在查看测试电子邮件,而不是实时电子邮件。

解决方案: 测试电子邮件总是显示原始 Liquid 标签([[ contact.first_name ]]).测试个性化:

  • 在编辑器中使用 测试和预览 并选择一个真实的联系人。

  • 或者将活动/自动化发送到您自己的电子邮件(确保您的联系人资料有数据)。

个性化在实时电子邮件中不会转换

原因: 如果部分编辑,Liquid 标签可能会失去完整性。

解决方案: 删除整个个性化标签并使用个性化标签 图标在工具栏中,或输入@ 在文本块中。这确保标签格式正确。

回退文本无效

原因: 语法不正确或缺少引号。

解决方案: 确保回退值用引号括起来:

  • [[ contact.first_name | default: 'there' ]]

  • [[ contact.first_name | default: there ]]

条件逻辑在活动中无效

原因: 标签和条件语句仅在自动化工作流中有效。

解决方案: 在自动化中使用条件逻辑 – 而不是活动。

常见问题

我可以在 SMS 和推送通知中使用 Liquid 吗?

是的。 Liquid 对象和过滤器在电子邮件、SMS 和推送通知中有效。条件逻辑仅在自动化中有效。

{{ }}》和《[[ ]]》之间有什么区别?

Shopify 使用《{{ }}》来表示 Liquid 对象。Omnisend 使用《[[ ]]》。如果您从 Shopify 文档中复制 Liquid 代码,请将花括号替换为方括号。

我需要添加后备值吗?

是的。始终添加后备值,以避免在缺少联系数据时出现空白:
[[ contact.first_name | default: 'there' ]]

我可以组合多个过滤器吗?

是的。使用 | 符号链接过滤器:
[[ contact.first_name | capitalize | default: 'there' ]]

我在哪里可以找到更多 Liquid 示例?

Shopify 的 Liquid 文档 中了解更多 – 记得在 Omnisend 中将《{{ }}》替换为《[[ ]]》以及《{% %}》替换为《[% %]》。


欢迎通过应用内聊天或 [email protected] 联系我们获奖的支持团队以获得任何额外帮助。

这是否解答了您的问题?