変数と液体
このアプリ内の動的な要素はすべてLiquidで記述されています。これは、Shopifyのテーマで使用されているのと同じテンプレート言語です。プレースホルダーを記述すると、送信時にアプリがその内容を自動的に埋め込みます。
名前空間
| 名前空間 | 価値はどこから生まれるのか | 以下の言語でご利用いただけます |
|---|---|---|
{{ variables.key }} |
「Shopify Flow」アクションの「**変数(JSON)」**フィールド | メールの件名と本文、HTTP URL、ヘッダーと本文 |
{{ secrets.key }} |
「**秘密」**のページ | 上記に加え、SMTPのユーザー名とパスワードも必要です |
{{ shop.name }}, {{ shop.domain }}, {{ shop.email }} |
お客様のストア | 電子メールおよびHTTPアクション |
{{ language }} |
Shopify Flowステップが送信した言語、それ以外の場合はレイアウトの主要言語 | メールの件名、プレビューテキスト、本文については、お客様の言語でメールを送信してください をご覧ください。 |
{{ unsubscribe_link }}, {{ unsubscribe_url }} |
受信者向けの配信停止リンク(マーケティング用レイアウトのみ) | メール本文:トランザクション用レイアウトでは空になります - 下記をご参照ください |
{{ flow.key }} |
Shopify Flowの生のペイロード | HTTPリクエストのみ |
エディタ内の「システム変数」カードには、ショップの値とその現在の内容が一覧表示されており、いずれかをクリックするとその値がコピーされます。
Shopify Flow からの変数の受け渡し
「Shopify Flow」アクションの「**変数(JSON)」**フィールドに、JSONオブジェクトを入力してください:
{
"firstName": "{{ customer.firstName }}",
"orderNumber": "{{ order.name }}",
"total": "{{ order.totalPriceSet.shopMoney.amount }}"
}
その後、レイアウト内の任意の場所でそれらを参照してください:
Hi {{ variables.firstName }}, your order {{ variables.orderNumber }} is on its way.
キーはご自身でお選びいただけます。左側に指定した名前が、variables. の後に使用されるものとなります。スペルや大文字・小文字の区別まで完全に一致する必要があります。
このJSONを手作業で記述する必要はありません。すべてのレイアウトには、**「Shopify Flow」カード内に、コピー可能な正しいJSONが記載された「Use」**セクションがあります。詳しくは、Shopify Flow からのデータの受け渡し をご覧ください。
フィルター
標準の液体フィルターは機能します。中でも最も役立つのは、default です。これは、空の値から保護してくれます:
Hi {{ variables.firstName | default: "there" }}
その他のものは、予想通り動作します:
{{ variables.productTitle | upcase }}
{{ variables.total | round: 2 }}
{{ variables.note | truncate: 100 }}
変数が空白で表示される場合
参照されている変数をすべて「nothing」としてレンダリングするライブ送信では、履歴に「**空の変数」**バッジが表示されます。そのエントリを開くと、変数に名前が付けられ、2つの異なる問題が区別されます:
- Shopify Flow から送信されましたが、内容が空です。JSON にはキーが含まれていましたが、Shopify Flow では値が生成されませんでした。通常、プロパティのパスが間違っているか、そのレコードにおいてそのフィールドが実際に空である場合です(ゲストチェックアウトの場合、顧客の名字はありません)。
- Shopify Flow から送信されたものではありません。JSON からそのキーが完全に欠落しています。
| default:のフォールバックを追加すると、その空白が意図的なものであると認識され、アプリはその件に関する警告を表示しなくなります。
条件分岐とループ
条件分岐には、HTML/コードブロックをご利用ください:
{% if variables.isVip %}
<p>As a VIP you get free shipping on this order.</p>
{% else %}
<p>Spend a little more to unlock free shipping.</p>
{% endif %}
「ループ」ブロックを使用すると、配列(例えば、注文のラインアイテムなど)に対して繰り返し処理を行うことができます:
{% for item in variables.items %}
<tr>
<td>{{ item.title }}</td>
<td>{{ item.quantity }}</td>
<td>{{ item.price }}</td>
</tr>
{% endfor %}
Shopify Flowから配列をJSON形式で渡します:
{
"items": [
{ "title": "Classic White T-Shirt", "quantity": 2, "price": "29.00" },
{ "title": "Eco Water Bottle", "quantity": 1, "price": "19.00" }
]
}
ビルダーでループをプレビューするには、「**変数のテスト」**タブの値として、同じJSON配列を入力してください。
オブジェクトは、電子メールとHTTPでは異なる挙動を示します
知っておくべき鋭いエッジは、これだけです。
- HTTPリクエストにおいて、オブジェクトや配列を補間すると、それらは自動的にJSONにシリアライズされます。
{{ variables.records }}は、リクエスト本文内で適切なJSON配列となります。明示的に指定したい場合は、jsonフィルターも利用可能です。 - 電子メールでは、そのような変換は行われません。オブジェクト全体を補間すると、リテラルテキスト「
[object Object]」としてレンダリングされます。
ですから、メールでは、件名をそのまま表示するのではなく、常に件名の中身を活用するようにしてください:
Wrong: {{ variables.customer }}
Right: {{ variables.customer.firstName }} {{ variables.customer.lastName }}
あるいは、配列を丸ごと出力するのではなく、ループ処理を行うこともできます。
テンプレートに隠された秘密
保存されたシークレットも同様の方法で参照します:
Authorization: Bearer {{ secrets.airtableAccessToken }}
{{ secrets.keyName }} という正確な構文を使用してください。以下の記述は機能しません:
{{ secret.keyName }}- 単数形{{ secrets['keyName'] }}- 括弧構文
キー名は大文字と小文字が区別されます。秘密 をご覧ください。
HTTPリクエストに対するボディのオーバーライド
HTTPアクションの「変数」フィールドには、もう1つのモードがあります。「body」というキーを指定すると、保存されているリクエスト本文が完全に置き換えられます:
{
"body": { "anything": "you like", "shaped": ["however"] }
}
これは、ペイロードの形状が前のShopify Flowステップによって決定されている場合に役立ちます。ただし、1つ例外があります。保存されたボディ自体が{{ variables.body }}を参照している場合、それは通常の変数として扱われます。
ご記入いただいた内容をテストしています
ページ上のプレビューではLiquidは評価されず、タグが記述されたまま表示されます。解決された値を確認するには:
- メールについては、レイアウトエディタから「**テストメールを送信」**をご利用ください。
- HTTPリクエストの場合は、「テスト」ボタンを使用してください。これにより、レスポンスとともに「解決済みURL」と「**解決済みボディ」**が表示されます。
マーケティング用レイアウト内の配信停止リンク
**「メール」タイプが「****マーケティング」**に設定されているレイアウトには、さらに2つの変数が追加されます。マーケティングメールの各受信者には個別の配信停止リンクが割り当てられ、これらは以下の場所に配置されます:
{{ unsubscribe_link }}「設定」にある「購読解除」というリンクテキスト(またはレイアウト固有のテキスト)を含むリンクを表示します。{{ unsubscribe_url }}ボタンやアンカーなど、ご自身でスタイルを設定する要素に対して、アドレスそのものを表示します。
<p>No longer interested? <a href="{{ unsubscribe_url }}">Unsubscribe here</a>.</p>
これらを使用する必要はありません。いずれにせよ、すべてのマーケティングメールには、フッターに配信停止リンクが追加されます。レンダリングされた本文にすでにリンクが含まれている場合、フッターには配信停止に関する文言は表示されず、会社の詳細情報のみが追加されます。件名およびプレビューテキストでは、これらの変数は何も表示されず、トランザクションメールのレイアウトでは常に空欄となります。詳細は マーケティングメールと配信停止 をご覧ください。
関連情報
- Shopify Flow からのデータの受け渡し - 「変数(JSON)」フィールドの詳細について。
- メールのレイアウトを作成する - これらの変数がどこに配置されるか。
- マーケティングメールと配信停止 - マーケティング用レイアウト、配信停止用のフッター、および配信停止リストです。
- 秘密 - 認証情報を安全に保管すること。
- Shopify Flow から HTTP リクエストを送信してください。 - 実際のリクエストに含まれる変数。

