注文メールをコレクション別に出し分けしたい

Topic summary

ユーザーは注文完了メールを商品のコレクション別に出し分けたいと質問しています。

状況:

  • 商品AとBがそれぞれコレクション1と2に分類されている(1:1の関係)
  • 顧客は両方の商品を購入する可能性がある
  • 商品A用メールと商品B用メール、計2通の送信を想定

提案された解決策:
フルバランスの渡邉氏がLiquidコードを使った分岐処理を提案:

  • subtotal_line_itemsをループして商品タイトルで判定
  • has_item_ahas_item_bの変数で商品の有無を管理
  • 条件分岐で3パターンに対応:
    • 両方含まれる場合
    • 商品Aのみの場合
    • 商品Bのみの場合

参考リンクとして、Shopifyの注文通知メールで使用可能なLiquid変数のドキュメントも提示されています。

Summarized with AI on November 20. AI used: claude-sonnet-4-5-20250929.

現在、注文完了メールをデフォルトの機能を利用して送信しています。

これを、商品によって送る内容を変えたいです。

商品は2パターンあり、それぞれのコレクションに追加しています。

商品A コレクション1

商品B コレクション2

というように、コレクションと商品は1:1の関係です。

顧客は、商品AとBを購入する可能性もありますが、その場合は、

商品A用のメールとB用のメールの2通が送信される仕様を想定しています。

liquidは初心者ですが、頑張って実装したいと思っています。

ご教示いただけましたら幸いです…!

@track さま、以前は大変わかりやすくご教示いただきましてありがとうございました。
よろしければまたお力添えいただけますと幸いです。

Yuka_mさま

はじめまして、フルバランスの渡邉です。

ご質問を確認いたしました。

通知メールのカスタマイズって、コードとか少しややこしい部分がありますよね。

一例ですが、以下のように分岐させるのはいかがでしょうか?

{% assign has_item_a = false %}
{% assign has_item_b = false %}
              
 {% for line in subtotal_line_items %}
   {% if line.title contains '商品Aのタイトル' %}
    {% assign has_item_a = true %}
   {% endif %}
 {% if line.title contains '商品Bのタイトル' %}
    {% assign has_item_b = true %}
  {% endif %}
 {% endfor %}
              
{% if has_item_a and has_item_b %}
  

商品Aと商品Bの両方が含まれている場合に表示するテキスト

{% elsif has_item_a %}
  

商品Aが含まれている場合に表示するテキスト

{% elsif has_item_b %}
  

商品Bが含まれている場合に表示するテキスト

{% else %}
  

{{ email_body }}

{% endif %}

仕組みとしては、for line in subtotal_line_itemsで注文に含まれる全商品を取得し、

商品Aが入ってたらhas_item_aという変数をtrueに、商品Bが入ってたらhas_item_bをtrueにします。

そのあとはhas_item_aとhas_item_b両方がtrueだったらこのテキスト、どちらかがtrueだったら別のテキスト、AもBも含まれない場合はデフォルトの{{ email_body }}で指定したテキストを表示します。

参考:

通知メールで使用可能なliquid変数

https://help.shopify.com/ja/manual/orders/notifications/email-variables#part-037871c9c4b5cc05

ご参考になりましたら幸いです。

私たちの励みにもなりますので、
お役に立てていればBest Answerボタンを押して頂ければ嬉しいです。

分からない点があれば、またいつでもご連絡ください。

フルバランス 渡邉

1 Like