変数と液体

このアプリ内の動的な要素はすべて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>

これらを使用する必要はありません。いずれにせよ、すべてのマーケティングメールには、フッターに配信停止リンクが追加されます。レンダリングされた本文にすでにリンクが含まれている場合、フッターには配信停止に関する文言は表示されず、会社の詳細情報のみが追加されます。件名およびプレビューテキストでは、これらの変数は何も表示されず、トランザクションメールのレイアウトでは常に空欄となります。詳細は マーケティングメールと配信停止 をご覧ください。

関連情報