Skip to content

サポートされているパーソナライズタグ

このリファレンス記事では、サポートされている Liquid パーソナライゼーションタグの完全なリストを紹介します。

サポートされているタグの概要

便宜上、サポートされているパーソナライゼーションタグの概要を以下に示します。各タイプのタグとベストプラクティスの詳細については、引き続きお読みください。

サポートされている属性

キャンペーン、カード、キャンバスの各属性は、対応するメッセージングテンプレートでのみサポートされます(例えば、dispatch_id はアプリ内メッセージキャンペーンでは利用できません)。

Braze のソース間におけるこれらの属性の違いについて詳しくは、こちらのヘルプ記事を参照してください。

キャンバスとキャンペーンのタグの違い

以下のタグはキャンバスとキャンペーンで動作が異なります。

  • dispatch_id の動作は、Braze がキャンバスのステップ(スケジュール可能なエントリステップを除く)を、「スケジュール済み」の場合でもトリガーイベントとして扱うため、キャンバスとキャンペーンで異なります。詳細については、ディスパッチ ID の動作を参照してください。
  • キャンバスで {{campaign.${name}}} タグを使用すると、キャンバスコンポーネント名が表示されます。このタグをキャンペーンで使用すると、キャンペーン名が表示されます。

最近使用されたデバイス情報

すべてのプラットフォームで、ユーザーの最新デバイスの以下の属性をテンプレート化できます。ユーザーがアプリケーションを使用していない場合(REST API 経由でユーザーをインポートした場合など)、これらの値はすべて null になります。

デバイスキャリア、モデル名、およびオペレーティングシステムにはさまざまな種類があるため、これらの値のいずれかに条件付きで依存する Liquid を徹底的にテストすることをお勧めします。特定のデバイスでこれらの値が利用できない場合、値は null になります。

対象アプリの情報

アプリ内メッセージでは、Liquid 内で以下のアプリ属性を使用できます。この値は、アプリがメッセージングをリクエストするために使用する SDK API キーに基づきます。

例えば、以下の Liquid コードは、リクエストするアプリがリスト内の 2 つの API キーのいずれでもない場合にメッセージを中止します。

1
2
3
4
5
6
{% assign allowed_api_keys = 'sdk_api_key_1,sdk_api_key_2' | split: ',' %}
{% if allowed_api_keys contains {{app.${api_id}}} %}
User is in list of apps
{% else %}
{% abort_message("User not in list of apps") %}
{% endif %}

ターゲットデバイス情報

プッシュ通知、アプリ内メッセージ、バナーについては、メッセージを受信するデバイス向けに以下の属性をテンプレート化できます。プッシュ通知、アプリ内メッセージ、またはバナーには、ユーザーがメッセージを読むデバイスの属性を含めることができます。これらの属性はコンテンツカードやメールでは機能しません。メールの場合、メッセージは送信前にレンダリングされるため、ユーザーがメールを開封するデバイスはその時点では不明です。

デバイスキャリア、モデル名、およびオペレーティングシステムにはさまざまな種類があるため、これらの値のいずれかに条件付きで依存するロジックを徹底的にテストすることをお勧めします。特定のデバイスでこれらの値が利用できない場合、値は null になります。

さらに、プッシュ通知では、プッシュトークンが API を介してインポートされた場合など、特定の状況下で Braze がプッシュ通知に紐づくデバイスを判別できないことがあります。その結果、これらのメッセージの値は null になります。

プッシュメッセージで名の変数を使用する際にデフォルト値「there」を使用する例。

デフォルト値の代わりに条件付きロジックを使用する

状況によっては、デフォルト値を設定する代わりに条件付きロジックを使用することもできます。条件付きロジックでは、カスタム属性の値によって異なるメッセージを送信できます。さらに、条件付きロジックを使用して、null または空白の属性値を持つ顧客へのメッセージを中止できます。

ユースケース

例えば、顧客に報酬残高通知を送信するとします。デフォルト値を使用して、残高が少ない顧客や null の顧客に適切に対応する方法はありません。

この場合、デフォルト値を設定するよりも効果的なオプションが 2 つあります。

  1. 残高が少ない、null、および空白の顧客に対するメッセージを中止します。

    1
    2
    3
    4
    5
    
    {% if {{custom_attribute.${balance}}} > 0 %}
    Your rewards balance is {{custom_attribute.${balance}}}
    {% else %}
    {% abort_message() %}
    {% endif %}
    
  2. このような顧客にはまったく別のメッセージを送信します。

    1
    2
    3
    4
    5
    
    {% if ${first_name} != blank and ${first_name} != null %}
    Hello {{${first_name} | default: 'there'}}, thanks for downloading!
    {% else %}
    Thanks for downloading!
    {% endif %}
    

このユースケースでは、名が空白または null のユーザーは「Thanks for downloading!」というメッセージを受け取ります。名にはデフォルト値を含めて、間違いがあった場合に顧客に Liquid が表示されないようにする必要があります。

変数タグ

メッセージ作成画面で、assign タグを使用して変数を作成できます。変数には一意の名前を使用することをお勧めします。サポートされているパーソナライゼーションタグ(language など)と同じ名前の変数を作成すると、メッセージングロジックに影響する可能性があります。

変数を作成したら、メッセージングロジックやメッセージの中でその変数を参照できます。このタグは、コネクテッドコンテンツ機能から返されたコンテンツを再フォーマットしたいときに便利です。詳しくは、Shopify の変数タグに関するドキュメントを参照してください。

ユースケース

例えば、顧客が 100 ポイントの報酬ポイントを獲得した後に、報酬ポイントを賞品に交換できるようにするとします。つまり、追加購入をした場合にポイント残高が 100 以上になる顧客だけにメッセージを送りたいとします。

1
2
3
4
5
6
{% assign new_points_balance = {{custom_attribute.${current_rewards_balance} | plus: 50}} %}
{% if new_points_balance >= 100 %}
Make a purchase to bring your rewards points to {{new_points_balance}} and cash in today!
{% else %}
{% abort_message('not enough points') %}
{% endif %}

反復タグ

反復タグは、コードのブロックを繰り返し実行するために使用できます。以下のユースケースでは、for タグを使用しています。

ユースケース

例えば、Nike のスニーカーのセールを開催し、Nike に興味を示した顧客にメッセージを送信するとします。各顧客のプロファイルには、閲覧した製品ブランドの配列があります。この配列には最大 25 の製品ブランドが含まれている可能性がありますが、最新の製品ビュー 5 つのうちの 1 つとして Nike 製品を閲覧した顧客にのみメッセージを送信したいとします。

1
2
3
4
5
6
7
8
9
10
{% for items in {{custom_attribute.${Brands Viewed}}} limit:5 %}
{% if {{items}} contains 'Converse' %}
{% assign converse_viewer = true %}
{% endif %}
{% endfor %}
{% if converse_viewer == true %}
Sale on Converse!
{% else %}
{% abort_message() %}
{% endif %}

このユースケースでは、閲覧されたスニーカーブランドの配列の最初の 5 項目をチェックします。これらの項目のいずれかが Converse であれば、converse_viewer 変数を作成し、true に設定します。

そして、converse_viewer が true のときにセールメッセージを送信します。それ以外の場合は、メッセージを中止します。

これは、Braze メッセージ作成画面での反復タグの使い方の簡単な例です。詳細については、Shopify の反復タグに関するドキュメントを参照してください。

構文タグ

構文タグを使用して、Liquid のレンダリング方法を制御できます。echo タグを使用して式を返すことができます。これは中括弧を使って式をラップするのと同じですが、Liquid タグの中でこのタグを使用できます。また、liquid タグを使用して、各タグに区切り文字を使用せずに Liquid のブロックを記述することもできます。liquid タグを使用する場合、各タグは個別の行に配置する必要があります。詳細な情報と例については、Shopify の構文タグに関するドキュメントを参照してください。

ホワイトスペースコントロールを使用すると、タグの周りのホワイトスペースを削除でき、Liquid 出力の外観をさらに制御できます。

HTTP ステータスコード

コネクテッドコンテンツの呼び出しから HTTP ステータスを使用するには、まず HTTP ステータスをローカル変数として保存してから、__http_status_code__ キーを使用します。以下に例を示します。

1
2
3
4
{% connected_content https://example.com/api/endpoint :save connected %}
{% if connected.__http_status_code__ != 200 %}
{% abort_message('Connected Content returned a non-200 status code') %}
{% endif %}

言語、最新のロケール、タイムゾーンに基づいてメッセージを送信する

状況によっては、特定のロケールに固有のメッセージを送信したい場合があります。例えば、ブラジルのポルトガル語は一般的にヨーロッパのポルトガル語とは異なります。

ユースケース: 最新のロケールに基づいてローカライズする

ここでは、最新のロケールを使用して、国際化されたメッセージをさらにローカライズするユースケースを紹介します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{% if ${language} == 'en' %}
Message in English
{% elsif  ${language} == 'fr' %}
Message in French
{% elsif  ${language} == 'ja' %}
Message in Japanese
{% elsif  ${language} == 'ko' %}
Message in Korean
{% elsif  ${language} == 'ru' %}
Message in Russian
{% elsif ${most_recent_locale} == 'pt_BR' %}
Message in Brazilian Portuguese
{% elsif ${most_recent_locale} == 'pt_PT' %}
Message in European Portuguese
{% elsif  ${language} == 'pt' %}
Message in default Portuguese
{% else %}
Message in default language
{% endif %}

このユースケースでは、直近のロケールが pt_BR の顧客にはブラジルポルトガル語のメッセージが、直近のロケールが pt_PT の顧客にはヨーロッパポルトガル語のメッセージが表示されます。最初の 2 つの条件を満たさないが、言語をポルトガル語に設定している顧客は、デフォルトに設定したポルトガル語のタイプでメッセージを受け取ります。

ユースケース: タイムゾーン別にユーザーをターゲットする

タイムゾーンでユーザーをターゲットすることもできます。例えば、EST のユーザーにはあるメッセージ、PST のユーザーには別のメッセージを送信します。そのためには、現在時刻を UTC で保存し、if/else 文でユーザーの現在時刻と比較して、適切なタイムゾーンに適切なメッセージを送信します。ユーザーのローカルタイムゾーンでキャンペーンを送信するように設定し、適切な時間にキャンペーンを届ける必要があります。

午後 2 時から 3 時の間に送信され、各タイムゾーンに固有のメッセージを作成する方法については、以下のユースケースを参照してください。

1
2
3
4
5
6
7
8
{% assign hour_in_utc = 'now' | date: '%H' | plus:0 %}
{% if hour_in_utc >= 19 && hour_in_utc < 20 %}
It is between 2:00:00 pm and 2:59:59 pm ET!
{% elsif hour_in_utc >= 22 && hour_in_utc < 23 %}
It is between 2:00:00 pm and 2:59:59 pm PT!
{% else %}
{% abort_message %}
{% endif %}

ランダムな数値でメッセージを送信する

{% random %} タグはランダムな数値を返します。A/B テスト風のロジック、サンプリング、メッセージコンテンツのバリエーションに使用できます。

ユースケース: ユーザーにランダムなバリアントを送信する

1
2
3
4
5
6
7
{% capture roll_str %}{% random %}{% endcapture %}
{% assign roll = roll_str | plus: 0 %}
{% if roll < 0.5 %}
Show variant A
{% else %}
Show variant B
{% endif %}
New Stuff!