Skip to content

Liquid use case library

Looking for inspiration to craft the perfect personalization using Liquid? Take a look through our collection of Liquid use cases, outlined by category below.

Use the search bar or the checkboxes below to find the use cases that fit your need.

記念日と祝日

ユーザーの記念年に基づいてメッセージをパーソナライズする

このユースケースは、ユーザーの最初のサインアップ日に基づいてアプリの記念日を計算し、何周年を祝うかによって異なるメッセージを表示する方法を示している。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{% assign this_month = 'now' | date: "%B" %} 
{% assign this_day = 'now' | date: "%d" %}
{% assign anniversary_month = custom_attribute.${registration_date}}} | date: "%B" %}
{% assign anniversary_day = custom_attribute.${registration_date}}} | date: "%d" %}
{% assign anniversary_year = custom_attribute.${registration_date}}} | date: "%Y" %}

{% if this_month == anniversary_month %} 
{% if this_day == anniversary_day %} 
{% if anniversary_year == '2021' %}
Exactly one year ago today we met for the first time!

{% elsif anniversary_year == '2020' %}
Exactly two years ago today we met for the first time!

{% elsif anniversary_year == '2019' %}
Exactly three years ago today we met for the first time!

{% else %}
{% abort_message("Not same year") %}
{% endif %}

{% else %} 
{% abort_message("Not same day") %} 
{% endif %}

{% else %}
{% abort_message("Not same month") %}
{% endif %}

Explanation:ここでは、予約変数nowISO 8601ISO形式で現在の日付と時刻をテンプレート化する。フィルター%B (”5月 “のような月)と%d (”18 “のような日)は、現在の月と日をフォーマットする。次に、signup_date の値に同じ日付と時間のフィルターを使い、条件タグとロジックを使って2つの値を比較できるようにする。

そして、さらに3つの変数ステートメントを繰り返し、%B%dsignup_date 、さらに%Y (”2021 “のような年)を追加する。これにより、signup_date の日付と時刻が年号だけになる。日と月が分かれば、そのユーザーの記念日が今日かどうか確認できるし、年が分かれば、何年経ったかが分かる!

ユーザーの誕生週に基づいてメッセージをパーソナライズする。

このユースケースは、ユーザーの誕生日を見つけ、現在の日付と比較し、誕生日の週の前、中、後に特別な誕生日メッセージを表示する方法を示している。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{% assign this_week = 'now' | date: '%W' %}
{% assign birthday_week = ${date_of_birth}  | date: '%W' %}
{% assign last_week = {{this_week}} | minus: 1 %}
{% assign next_week = {{this_week}} | plus: 1 %}
{% assign birthday_week_conversion = {{birthday_week}} | plus: 0 %}
{% if {{last_week}} == {{birthday_week_conversion}} %}
Happy birthday for last week!
{% elsif {{birthday_week}} == {{this_week}} %}
Happy birthday for this week!
{% elsif {{next_week}} == {{birthday_week_conversion}} %}
Happy birthday for next week!
{% else %}
No birthday for you!
{% endif %}

Explanation:記念日の使用例と同様に、ここでは予約変数now%W フィルター(1年52週のうち12週目など)を使って、ユーザーの誕生日が属する年の週数を取得する。ユーザーの誕生週が現在の週と一致すれば、お祝いのメッセージを送る!

また、last_weeknext_week 、メッセージをさらにパーソナライズするためのステートメントも用意している。

ユーザーの誕生月にキャンペーンを送る

このユースケースは、ユーザーの誕生月を計算し、誕生月が当月かどうかをチェックし、当月であれば特別なメッセージを送信する方法を示している。

1
2
3
4
5
6
7
{% assign this_month = 'now' | date: "%B" %}
{% assign birth_month = {{${date_of_birth}}} | date: "%B" %}
{% if {{this_month}} == {{birth_month}} %}
Message body 
{% else %} 
{% abort_message("Not their birthday month") %}
{% endif %}

Explanation:バースデーウィークのユースケースと似ているが、ここでは、%B (”5月 “のような月)フィルターを使って、今月誕生日のユーザーを計算する。毎月のEメールに誕生日のユーザーを登場させるといった応用が考えられる。

大型連休にメッセージを送るのは避ける

このユースケースは、エンゲージメントが低くなりがちな大型連休の日を避けつつ、連休中にメッセージを送る方法を示している。

1
2
3
4
5
6
{% assign today = 'now' | date: '%Y-%m-%d' %}
{% if today == "2023-12-24" or today == "2023-12-25" or today == "2023-12-26" %}
{% abort_message %}
{% else %}
Message if today isn't one of the provided holidays.
{% endif %}

Explanation:ここでは、%Y (”2023 “のような年)、%m (”12 “のような月)、%d (”25 “のような日)というフィルターを使って日付をフォーマットし、予約変数now (現在の日付と時刻)に用語today を代入している。次に条件文を実行し、変数today が選択した休日と一致したら、メッセージを中止する。

この例では、クリスマス・イブ、クリスマス・デー、ボクシング・デー(クリスマスの翌日)を使用している。

アプリの使い方

ユーザーがセッションを記録していない場合、そのユーザーの言語でメッセージを送信する。

このユースケースは、ユーザがセッションを記録したかどうかをチェックし、もし記録していなければ、カスタム属性を介して手動で収集した言語に基づいてメッセージを表示するロジックを含む。アカウントに言語情報がない場合は、デフォルトの言語でメッセージが表示される。もしユーザーがセッションを記録していれば、そのユーザーに結びついた言語情報を引き出し、適切なメッセージを表示する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{% if {{${last_used_app_date}}} == nil %}
{% if {{custom_attribute.${user_language}}} == 'en' %}
Message in English based on custom attribute
{% elsif {{custom_attribute.${user_language}}} == 'fr' %}
Message in French based on custom attribute
{% else %}
Does not have language - Default language
{% endif %}
{% else %}
{% if ${language} == 'en' %}
Message in English based on Language
{% elsif ${language} == 'fr' %}
Message in French based on Language
{% else %}
Has language - Default language
{% endif %}
{% endif %}

Explanation:ここでは、2つのグループ化されたif ステートメントを入れ子にして使っている。最初のif ステートメントは、last_used_app_datenil かどうかをチェックすることによって、ユーザーがセッションを開始したかどうかを確認する。これは、ユーザーがセッションをログに記録する際、{{${language}}} がSDKによって自動収集されるためである。そのため、言語関連のカスタム属性が保存されているかどうかをチェックし、その情報に基づいて、可能であればその言語でメッセージを表示する。

2番目のif ステートメントでは、標準(デフォルト)属性をチェックするだけである。なぜなら、ユーザーはlast_used_app_date に対してnil を持っていないからである。

ユーザーが最後にアプリを開いた日に基づいてメッセージをパーソナライズする。

このユースケースは、ユーザーが最後にアプリを開いた時間を計算し、時間の長さに応じて異なるパーソナライズされたメッセージを表示する。

1
2
3
4
5
6
7
8
{% assign last_used_date = {{${last_used_app_date}} | date: "%s" %}
{% assign now = 'now' | date: "%s" %}
{% assign difference_in_days = {{now}} | minus: {{last_used_date}} | divided_by: 86400 %}
{% if {{difference_in_days}} < 3 %}
Happy to see you again!
{% else %}
It's been a while; here are some of our latest updates.
{% endif %}

ユーザーが最後にアプリを使用したのが3日以内の場合、別のメッセージを表示する。

このユースケースは、ユーザーがどれくらい前にアプリを使用したかを計算し、時間の長さに応じて、異なるパーソナライズされたメッセージを表示する。

1
2
3
4
5
6
7
8
{% assign last_used_date = {{${last_used_app_date}} | date: "%s" %}
{% assign now = 'now' | date: "%s" %}
{% assign difference_in_days = {{now}} | minus: {{last_used_date}} | divided_by: 86400 %}
{% if {{difference_in_days}} < 3 %}
Message for a recently active user
{% else %}
Message for a less active user
{% endif %}

カウントダウン

今日の日付にx日を加える

このユースケースは、現在の日付に特定の日数を追加して参照し、メッセージに追加する。例えば、週の半ばに週末のイベントを紹介するメッセージを送りたい場合がある。

1
Here are the movies we're showing on {{ "now" | date:'%s' | plus:259200 | date:"%F" }}!

plus 、値は常に秒単位になるので、フィルタの最後に%F 、秒を日に換算する。

設定した時間からカウントダウンを計算する

このユースケースは、特定の日付と現在の日付の日数の差を計算する。この違いを利用して、ユーザーにカウントダウンを表示することができる。

1
2
3
4
5
{% assign event_date = '2023-12-31' | date: "%s" %}
{% assign today = 'now' | date: "%s" %}
{% assign difference = event_date | minus: today %}
{% assign difference_days = difference | divided_by: 86400 %}
you have {{ difference_days }} days left!

特定の出荷日と優先順位のカウントダウンを作成する

この使用例では、さまざまな配送オプションを取得し、受け取りにかかる時間を計算し、特定の日付までに荷物を受け取れるよう、ユーザーに購入を促すメッセージを表示する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{% assign standard_shipping_start = "2023-12-10T00:00-05:00" | date: "%s" %}
{% assign standard_shipping_end = "2023-12-20T13:00-05:00" | date: "%s" %}
{% assign express_shipping_end = "2023-12-22T24:00-05:00" | date: "%s" %}
{% assign overnight_shipping_end = "2023-12-23T24:00-05:00" | date: "%s" %}
{% assign today = 'now' | date: "%s" %}

{% assign difference_s = standard_shipping_end | minus: today %}
{% assign difference_s_days = difference_s | divided_by: 86400.00 | round %}
{% assign difference_e = express_shipping_end | minus: today %}
{% assign difference_e_days = difference_e | divided_by: 86400.00 | round %}
{% assign difference_o = overnight_shipping_end | minus: today %}
{% assign difference_o_days = difference | divided_by: 86400.00 | round %}

{% if today >= standard_shipping_start and today <= standard_shipping_end %}
{% if difference_s_days == 0 %}
This is the last day to order with standard shipping, so your order gets here on time for Christmas Eve!
{% elsif difference_s_days == 1 %}
There is {{difference_s_days}} day left to order with standard shipping, so your order gets here on time for Christmas Eve!

{% else %}
There are {{difference_s_days}} days left to order with standard shipping so your order gets here on time for Christmas Eve!
{% endif %}
{% elsif today > standard_shipping_end and today < express_shipping_end %}
{% if difference_e_days == 1 %}
There is {{difference_e_days}} day left to order with express shipping, so your order gets here on time for Christmas Eve!
{% else %}
There are {{difference_e_days}} days left to order with express shipping so your order gets here on time for Christmas Eve!
{% endif %}
{% elsif today >= express_shipping_end and today < overnight_shipping_end %}
This is the last day for overnight shipping so your order gets here on time for Christmas Eve!
{% else %}
{% abort_message("Unable to order and ship in time") %}
{% endif %}

日単位でカウントダウンを作成する

このユースケースは、特定のイベントから現在の日付までの残り時間を計算し、イベントまであと何日かを表示する。

1
2
3
4
5
{% assign event_date = {{custom_attribute.${last_selected_event_date}}} | date: "%s" %}
{% assign today =  'now' | date: "%s"  %}
{% assign difference =  event_date | minus: today %}
{% assign difference_days = difference | divided_by: 86400 %}
Your order will arrive in {{ difference_days }} days!

日、時間、分のカウントダウンを作成する

このユースケースは、特定のイベントから現在の日付までの残り時間を計算する。イベントまでの残り時間に応じて、時間値(日、時間、分)が変更され、パーソナライズされたさまざまなメッセージが表示される。

例えば、顧客の注文が届くまで2日ある場合、”注文は2日後に届きます “と言うかもしれない。一方、1日未満であれば、”ご注文は17時間後に到着します “と変更することができる。

1
2
3
4
5
6
7
8
9
10
11
12
13
{% assign today =  'now' | date: "%s"  %}
{% assign scheme_finish = "2017-10-13T10:30:30" | date: "%s" %}
{% assign difference_seconds =  scheme_finish | minus: today %}
{% assign difference_minutes = difference_seconds | divided_by: 60 %}
{% assign difference_hours = difference_seconds | divided_by: 3600 %}
{% assign difference_days = difference_seconds | divided_by: 86400 %}
{% if {{difference_minutes}} > 59 and {{difference_minutes}} < 1440 %}
You have {{difference_hours}} hours left till your order arrives!
{% elsif {{difference_minutes}} < 59 %}
You have {{difference_minutes}} minutes left till your order arrives!
{% else %}
You have {{difference_days}} days left till your order arrives!
{% endif %}

特定の日付までの残り日数を表示する

このユースケースは、現在の日付と将来のイベントの日付の差を計算し、イベントまであと何日かを示すメッセージを表示する。

1
2
3
4
5
{% assign event_date = '2024-01-15' | date: "%s" %}
{% assign today = 'now' | date: "%s" %}
{% assign difference = event_date | minus: today %}
{% assign difference_days = difference | divided_by: 86400 %}
There are {{difference_days}} days until your birthday!

カスタム日付属性が到着するまでの残り日数を表示する

このユースケースは、現在の日付と将来の日付の日数の差を計算し、その差が設定された数値と一致した場合にメッセージを表示する。

この例では、ユーザーはカスタム日付属性から2日以内にメッセージを受け取る。そうでなければ、メッセージは送信されない。

1
2
3
4
5
6
7
8
9
{% assign today = 'now' | date: '%j' | plus: 0 %}
{% assign surgery_date = {{custom_attribute.${surgery_date}}} | date: '%j' | plus: 0 %}

{% assign difference_days = {{surgery_date}} | minus: {{today}} %}
{% if difference_days == 2 %}
Your surgery is in 2 days on {{custom_attribute.${surgery_date}}}
{% else %}
{% abort_message %}
{% endif %}

残り時間を表示し、残り時間がx時間しかない場合はメッセージを中断する。

このユースケースは、ある日付までの時間を計算し、その長さに応じて(日付が近すぎる場合はメッセージをスキップする)、パーソナライズされたさまざまなメッセージを表示する。

例えば、”ロンドン行きの航空券を買うのにあと○時間残っています “といったメッセージだが、ロンドン行きのフライト時間まで2時間以内であれば送信しない。

1
2
3
4
5
6
7
8
9
10
{% assign today =  'now' | date: "%s"  %}
{% assign dep_time = {{event_properties.${outboundDate}}} | date: "%s" %}
{% assign time_to_dep = dep_time | minus: today %}
{% if {{time_to_dep}} < 7200 %}
{% abort_message("OutboundDate less than 2 hours") %}
{% elsif {{time_to_dep}} > 7200 and {{time_to_dep}} < 86400 %}
Don't forget to buy your ticket to {{event_properties.${toStation}}} within next 24 hours!
{% else %}
Still traveling to {{event_properties.${toStation}}} in more than 24 hours? Book now!
{% endif %}

メンバーシップが終了するx日前に送信するアプリ内メッセージ

このユースケースは、メンバーシップの有効期限を取得し、有効期限までの期間を計算し、有効期限までの期間に応じて異なるメッセージを表示する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{% assign membership_expiry = {{custom_attribute.${membership_expiry_date}}} | date: "%s" %}
{% assign today = 'now' | date: "%s" %}
{% assign difference = membership_expiry | minus: today %}
{% assign difference_days = difference | divided_by: 86400 %}

{% if difference_days > 4 and difference_days <= 7 %}
You have {{difference_days}} days left in your trial, make sure you upgrade!

{% elsif difference_days > 2 and difference_days <= 4 %}
HURRY! You have {{difference_days}} days left in your trial, make sure you upgrade!

{% elsif difference_days == 2 %}
LAST CHANCE! You have {{difference_days}} days left in your trial. Make sure you upgrade!

{% else %}
You have few days left in your trial. Make sure to upgrade!
{% endif %}

ユーザーの日付と言語に基づいてアプリ内メッセージをパーソナライズする

このユースケースは、イベントまでのカウントダウンを計算し、ユーザーの言語設定に基づいて、その言語でカウントダウンを表示する。

例えば、月に一度、4回のアプリ内メッセージでオファーの有効期限を知らせるアップセルメッセージをユーザーに送ることができる:

  • 初回
  • 残り2日
  • 残り1日
  • 最終日
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
{% assign today = 'now' | date: "%s" %}
{% assign end_date = "2021-04-16T23:59:59" | date: "%s" %}
{% assign difference = end_date | minus: today %}
{% assign difference_days = difference | divided_by: 86400 %}
{% if {{difference_days}} >= 3 %}
{% if ${language} == 'de' %}

Hallo, das Angebot gilt bis zum 16.04.

{% elsif ${language} == 'ch' %}
Grüezi, das Angebot gilt bis zum 16.04.

{% elsif ${language} == 'en' %}
The offer is valid until 16.04.

{% else %}
The offer is valid until 16.04.

{% endif %}
{% elsif {{difference_days}} == 2 %}
{% if ${language} == 'de' %}
INSERT MESSAGE

{% elsif ${language} == 'ch' %}
INSERT MESSAGE

{% elsif ${language} == 'en' %}
INSERT MESSAGE

{% else %}
INSERT MESSAGE
{% endif %}

{% elsif {{difference_days}} == 1 %}
{% if ${language} == 'de' %}
INSERT MESSAGE

{% elsif ${language} == 'ch' %}
INSERT MESSAGE

{% elsif ${language} == 'en' %}
INSERT MESSAGE

{% else %}
INSERT MESSAGE
{% endif %}

{% elsif {{difference_days}} == 0 %}
{% if ${language} == 'de' %}
Hallo, das Angebot gilt noch heute.

{% elsif ${language} == 'ch' %}
Hallo, das Angebot gilt noch heute.

{% elsif ${language} == 'en' %}
Grüezi, das Angebot gilt noch heute.

{% else %}
Hi, the offer is only valid today.
{% endif %}

{% else %}
{% abort_message("Calculation failed") %}
{% endif %}

今から30日後の日付を月と日の形式でテンプレート化する。

このユースケースは、メッセージングで使用する30日後の日付を表示する。

1
2
{% assign today = 'now' | date: "%s" %}
{% assign thirty_days = today | plus: 2592000 | date: "%B %d" %}

カスタム属性

一致するカスタム属性に基づいてメッセージをパーソナライズする

このユースケースは、ユーザーが特定のカスタム属性を持っているかどうかをチェックし、もし持っていれば、異なるパーソナライズされたメッセージを表示する。

1
2
3
4
5
6
7
8
9
10
11
{% if custom_attribute.${hasShovel} == true and custom_attribute.${VisitToGroundTooTough} > 0 %}
The ground is very hard. The dirt road goes East.
{% elsif custom_attribute.${hasShovel} == true %}
The dirt road goes East.
{% elsif custom_attribute.${VisitToStart} > 0 %}
The dirt road goes East.
The shovel here.
{% else %}
You are at a dead-end of a dirt road. The road goes to the east. In the distance, you can see that it will eventually fork off. The trees here are very tall royal palms, and they are spaced equidistant from each other.
There is a shovel here.
{% endif %}

2つのカスタム属性を引いて、その差を金額で表示する

このユースケースは、2つの金銭的なカスタム属性をキャプチャし、その差額を計算して表示することで、ユーザーにゴールまでの道のりを知らせる。

1
2
3
4
{% assign event_goal = {{custom_attribute.${last_selected_event_personal_goal}}} %}
{% assign current_raised =  {{custom_attribute.${last_selected_event_personal_amount_raised}}} %}
{% assign difference =  event_goal | minus: current_raised %}
You only have ${{ difference | round: 0 | number_with_delimiter }} left to raise!

フルネームがfirst_nameフィールドに格納されている場合、ユーザーのファーストネームを参照する。

このユースケースは、ユーザーのファーストネームをキャプチャし(ファーストネームとラストネームの両方が単一のフィールドに格納されている場合)、ウェルカムメッセージを表示するためにこのファーストネームを使用する。

1
2
3
{{${first_name} | truncatewords: 1, "" | default: 'hi'}}
{% assign name = {{${first_name}}} | split: ' ' %}
Hi {{name[0]}}, here's your message!

Explanation:split フィルタは、{{${first_name}}} に保持されている文字列を配列に変換する。{{name[0]}} を使うことで、配列の最初の項目(ユーザーのファーストネーム)のみを参照することができる。

カスタムイベント

カスタムイベントが現在から2時間以内の場合、プッシュ通知を中止する

このユースケースは、イベントまでの時間を計算し、残り時間に応じて、パーソナライズされたさまざまなメッセージを表示する。

例えば、あるカスタムイベント・プロパティが今後2時間以内に通過する場合、プッシュが発信されないようにしたい場合がある。この例では、電車の切符を買うためのカートが捨てられているというシナリオを使っている。

1
2
3
4
5
6
7
8
9
10
{% assign today =  'now' | date: "%s"  %}
{% assign dep_time = {{event_properties.${outboundDate_Time}}} | date: "%s" %}
{% assign time_to_dep = dep_time | minus: today %}
{% if {{time_to_dep}} <= 7200 %}
{% abort_message("OutboundDate less than 2 hours") %}
{% elsif {{time_to_dep}} > 7200 and {{time_to_dep}} < 86400 %}
Don't forget to buy your ticket to {{event_properties.${toStation}}} within next 24 hours
{% else %}
Still traveling to {{event_properties.${toStation}}} in more than 24 hours? Book now
{% endif %}

ユーザーがカスタムイベントを3回実行するたびにキャンペーンを送信する

このユースケースは、ユーザーがカスタムイベントを3回実行したかどうかをチェックし、実行した場合はメッセージを表示するか、キャンペーンを送信する。

1
2
3
4
5
6
7
{% assign cadence = custom_attribute.${example} | minus: 1 | modulo: 3 %}
{% if custom_attribute.${example} == blank %}
{% abort_message("Error calculating cadence") %}
{% elsif cadence != 0 %}
{% abort_message("Skip message") %}
{% endif %}
Did you forget something in your shopping cart?

1つのカテゴリーからのみ購入したユーザーにメッセージを送る

このユースケースは、ユーザーが購入したカテゴリーのリストを取得し、購入カテゴリーが1つしか存在しない場合は、メッセージを表示する。

1
2
3
4
5
6
7
{% assign category = {{custom_attribute.${categories_purchased}}} %}
{% assign uniq_cat = {{category | uniq }} %}
{% if {{uniq_cat | size}} == 1%}
{{uniq_cat}}
{% else %}
{% abort_message("Purchase category doesn't exist") %}
{% endif %}

カスタムイベントが過去1ヶ月間に何回発生したかを追跡する。

このユースケースは、当月1日と前月の間にカスタムイベントが記録された回数を計算する。その後、users/trackコールを実行し、この値をカスタム属性として保存する。なお、このキャンペーンは、月次データを使用する前に、2ヶ月連続で実施する必要がある。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{% capture body %}
{
 "braze_id": "{{${braze_id}}}",
 "fields_to_export": ["custom_events"]
}

{% endcapture %}

{% connected_content YOUR_BRAZE_ENDPOINT/users/export/ids
 :method post
  :headers { "Authorization": "Bearer YOUR_API_KEY" }
  :body {{body}}
 :content_type application/json
 :save response
  :retry %}

{% for custom_event in response.users[0].custom_events %}
{% assign ce_name = custom_event.name %}
{% comment %} The following custom event name will need to be amended for the target custom event. {% endcomment %}

{% if ce_name == "Project Exported" %}
{% comment %}{{custom_event.name}}: {{custom_event.count}}{% endcomment %}
{% assign current_count = custom_event.count %}
{% endif %}
{% endfor %}

{% assign prev_month_count = {{custom_attribute.${projects_exported_prev_month}}} %}
{% assign latest_count = current_count | minus: prev_month_count %}
{% assign now = "now" | date: "%s" %}
{% assign yesterday = {{now}} | minus: 86400 %}
{% assign previous_month = {{yesterday}} | date: "%B" %}
{% assign previous_year = {{yesterday}} | date: "%y" %}
{% assign formatted_month = previous_month | downcase %}
{% comment %}The Custom Event name that is being tracked will be needed to be amended for the target Custom Event in the Attribute Name below. {% endcomment %}
1
2
3
4
5
6
"attributes": [
  {
    "external_id":"{{${user_id}}}",
       "projects_exported_{{formatted_month}}_{{previous_year}}": "{{latest_count}}"
  }
]

言語

月名を異なる言語で表示する

このユースケースは、現在の日付、月、年を表示し、月は異なる言語で表示する。この例ではスウェーデン語を使用している。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{% assign day = 'now' | date: "%e" %}
{% assign year =  'now' | date: "%Y" %}
{% assign month =  'now' | date: "%B" %}

{% if {{month}} == 'January' %}
{{day}} Januari {{year}}
{% elsif {{month)) == 'February' %}
{{day}} Februari {{year}}
{% elsif {{month)) == 'March' %}
{{day}} Mars {{year}}
{% elsif {{month)) == 'April' %}
{{day}} April {{year}}
{% elsif {{month)) == 'May' %}
{{day}} Maj {{year}}
{% elsif {{month)) == 'June' %}
{{day}} Juni {{year}}
{% elsif {{month)) == 'July' %}
{{day}} Juli {{year}}
{% elsif {{month)) == 'August' %}
{{day}} Augusti {{year}}
{% elsif {{month)) == 'September' %}
{{day}} September {{year}}
{% elsif {{month)) == 'October' %}
{{day}} Oktober {{year}}
{% elsif {{month)) == 'November' %}
{{day}} November {{year}}
{% elsif {{month)) == 'December' %}
{{day}} December {{year}}
{% endif %}

ユーザーの言語に基づいて画像を表示する

このユースケースは、ユーザーの言語に基づいて画像を表示する。なお、このユースケースは、Brazeメディアライブラリにアップロードされた画像でのみテストされている。

1
2
3
4
5
6
7
8
9
{% if ${language} == 'en' %}
English image URL (for example, https://cdn-staging.braze.com/appboy/communication/assets/image_assets/images/60aecba96a93150c749b4d57/original.png?1622068137)
{% elsif ${language} == 'ru' %}
Russian image URL
{% elsif ${language} == 'es' %}
Spanish image URL
{% else %}
Fallback image URL
{% endif %}

曜日とユーザーの言語に基づいてメッセージをパーソナライズする

このユースケースは、現在の曜日をチェックし、その曜日に基づいて、ユーザーの言語が提供された言語オプションのひとつに設定されていれば、その言語で特定のメッセージを表示する。

この例は火曜日で止まっているが、曜日ごとに繰り返すことができる。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{% assign today  = 'now' | date: '%A' %}

{% if today == 'Monday' %}
{% if ${language} == 'es' %}
Compra hoy y lleva tu aprendizaje de idiomas a niveles más altos. 🚀

{% elsif ${language} == 'en' %}
Purchase today and take your language learning to the next level. 🚀

{% elsif ${language} == 'zh' %}
今天就购买并将您的语言提高到一个新水平吧。🚀

{% else %}
It's Monday, but the language doesn't match 
{% endif %}

{% elsif today == 'Tuesday' %}

{% if ${language} == 'zh' %}
不要忘记解锁以获取完整版本哦。🔓

{% elsif ${language} == 'en' %}
Don't forget to unlock the full version of your language. 🔓

{% elsif ${language} == 'ja' %}
すべての機能を使ってみませんか 🔓

{% elsif ${language} == 'es' %}
No te olivides de desbloquear la versión completa del programa de idiomas. 🔓

{% else %}
tuesday default
{% endif %}
{% endif %}

その他

マーケティングメールをブロックしている顧客へのメール送信を避ける

このユースケースは、コンテンツブロックに保存されたブロックされたユーザーのリストを取得し、それらのブロックされたユーザーが今後のキャンペーンやキャンバスで通信されないか、ターゲットにされないかをチェックする。

1
2
3
4
5
6
7
8
{% assign blocked_emails = {{content_blocks.${BlockedEmailList}}} | split: ',' %}
{% for email in blocked_emails %}
    {% if {{${email_address}}} == email %}
    {% abort_message("Email is blocked") %}
    {% break %}
    {% endif %}
{% endfor %} 
Your message here!

Explanation:ここでは、ブロックされたメールのコンテンツブロックを参照することで、潜在的な受信者のメールがこのリストにあるかどうかをチェックする。メールが見つかった場合、メッセージは送信されない。

顧客の購読状態を利用して、メッセージの内容をパーソナライズする

このユースケースは、パーソナライズされたコンテンツを送信するために、顧客の購読状態を取得する。特定の購読グループに登録した顧客は、Eメール購読グループ専用のメッセージを受け取る。

1
2
3
4
{% if {{subscribed_state.${subscription_group_id}}}} == 'subscribed' %}
This is an exclusive message for subscribed users!
{% else %} This is the default message for other users.
{% endif %}

文字列内のすべての単語の最初の文字を大文字にする

このユースケースは、単語の文字列を受け取り、配列に分割し、各単語の最初の文字を大文字にする。

1
2
3
4
{% assign words_array = {{custom_attribute.${address}}} | split: ' ' %}
{% for words in {{words_array}} %}
{{ words | capitalize | append: ' ' }}
{% endfor %} 

Explanation:ここでは、選んだ文字列属性に変数を代入し、split フィルタを使って文字列を配列に分割している。次に、for タグを使って、新しく作成した配列の各項目に変数words を代入し、capitalize フィルタとappend フィルタを使って、各用語の間にスペースを追加して表示する。

カスタム属性の値を配列と比較する

このユースケースは、お気に入りストアのリストを取得し、ユーザーのお気に入りストアがそのリストにあるかどうかをチェックし、もしあれば、それらのストアからのスペシャルオファーを表示する。

1
2
3
4
5
6
7
8
9
10
11
{% assign favorite_stores = 'Target,Walmart,Costco' | split: ',' %}
{% for store in favorite_stores %}
{% if {{custom_attribute.${favorited_stores}}} contains {{store}} %}
Today's offer from {{store}}

{% break %}

{% else %}
{% abort_message("No attribute found") %}
{% endif %}
{% endfor %}

次回イベントのリマインダーを作成する

このユースケースは、ユーザーがカスタムイベントに基づいて今後のリマインダーを設定することを可能にする。このシナリオの例では、26日以上先の保険更新日のリマインダーを設定することができ、リマインダーは保険更新日の26日、13日、7日、2日前に送信される。

この使用例では、ウェブフック・キャンペーンまたはキャンバス・ステップの本文に次のように記述する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
{% comment %}
Depending on how the reminder_capture property is passed to Braze, with/without a timestamp, the number of days could impact whether a user falls on either side of the 26/13/7/2-day windows.
Once users have been assigned to a Reminder journey/flow, they are then scheduled to enter a subsequent Canvas.
This 'Event Listener' can be used to split out users into different journeys based on the Custom Event properties sent to Braze.
{% endcomment %}

{% comment %}
When testing, make sure the campaign ID, campaign API endpoint, Canvas ID, Canvas API endpoint are entered correctly. In this example, the Canvas ID and Canvas API endpoint have been set up for sharing with the client. In practice, this can be testing using a campaign ID and Campaign API endpoint.
{% endcomment %}

{% comment %}
The following step calculates how much there is between today's date and the Reminder Date as 'time_to_reminder'.
{% endcomment %}

{% assign today = "now" | date: '%s' %}
{% assign reminder_start_date = {{event_properties.${reminder_date}}} | date: '%s' %}
{% assign time_to_reminder = reminder_start_date | minus: today %}

{% comment %}
The following step checks if the time_to_reminder is more than 26 days away; if this is true, then the user is scheduled to enter the subsequent Canvas 26 days before the reminder_date.
The time is converted from 'seconds from 1970' to the appropriate Reminder Date in the required ISO 8601 format.
N.B. Additional time zones would need to be catered for by adding an additional API Schedule property of "in_local_time"
{% endcomment %}

{% if {{time_to_reminder}} > 2246400 %}
{% assign time_to_first_message = reminder_start_date | plus: 2246400 %}
{{ time_to_first_message | date: '%Y-%m-%dT%H:%M' }}
{
"canvas_id": "954e15bc-af93-9dc8-a863-ad2580f1750e",
"recipients": [
{
"external_user_id": "{{${user_id}}}"
}
],
"trigger_properties" : {
"enquiry_id" : "{{event_properties.${reminder_id}}}",
"reminder_date" : "{{event_properties.${reminder_date} | date: '%Y-%m-%dT%H:%M:%S+0000'}}",
"message_personalisation_X" : "{{event_properties.${property_x}}}",
"message_personalisation_Y" : "{{event_properties.${property_y}}}",
"message_personalisation_Z" : "{{event_properties.${property_z}}}"
},

"schedule": {
"time": "{{ time_to_first_message | date: '%Y-%m-%dT%H:%M:%S+0000' }}"
}
}

{% comment %}
The following step checks if the time_to_reminder is less than 26 days away but more than 13 days away.
Users are scheduled to enter the journey on day 13.
{% endcomment %}

{% elsif 1123200 > {{time_to_reminder}} and {{time_to_reminder}} < 2246399 %}
{% assign time_to_first_message = reminder_start_date | plus: 1123200 %}

{
"canvas_id": "954e15bc-af93-9dc8-a863-ad2580f1750e",
"recipients": [
{
"external_user_id": "{{${user_id}}}"
}
],
"trigger_properties" : {
"enquiry_id" : "{{event_properties.${reminder_id}}}",
"reminder_date" : "{{event_properties.${reminder_date} | date: '%Y-%m-%dT%H:%M:%S+0000'}}",
"message_personalisation_X" : "{{event_properties.${property_x}}}",
"message_personalisation_Y" : "{{event_properties.${property_y}}}",
"message_personalisation_Z" : "{{event_properties.${property_z}}}"
},

"schedule": {
"time": "{{ time_to_first_message | date: '%Y-%m-%dT%H:%M:%S+0000' }}"
}
}

{% comment %}
The following step checks if the time_to_reminder is less than 13 days away but more than seven days away.
Users are scheduled to enter the journey on day 7.
{% endcomment %}

{% elsif 604800 > {{time_to_reminder}} and {{time_to_reminder}} < 1123199 %}
{% assign time_to_first_message = reminder_start_date | plus: 604800 %}

{
"canvas_id": "954e15bc-af93-9dc8-a863-ad2580f1750e",
"recipients": [
{
"external_user_id": "{{${user_id}}}"
}
],
"trigger_properties" : {
"enquiry_id" : "{{event_properties.${reminder_id}}}",
"reminder_date" : "{{event_properties.${reminder_date} | date: '%Y-%m-%dT%H:%M:%S+0000'}}",
"message_personalisation_X" : "{{event_properties.${property_x}}}",
"message_personalisation_Y" : "{{event_properties.${property_y}}}",
"message_personalisation_Z" : "{{event_properties.${property_z}}}"
},

"schedule": {
"time": "{{ time_to_first_message | date: '%Y-%m-%dT%H:%M:%S+0000' }}"
}
}

{% comment %}
The following step checks if the time_to_reminder is less than seven days away but more than two days away.
Users are scheduled to enter the journey on day 2.
{% endcomment %}

{% else {{time_to_reminder}} < 604799 and {{time_to_reminder}} > 172860 %}
{% assign time_to_first_message = reminder_start_date | plus: 172800 %}

{
"canvas_id": "954e15bc-af93-9dc8-a863-ad2580f1750e",
"recipients": [
{
"external_user_id": "{{${user_id}}}"
}
],
"trigger_properties" : {
"enquiry_id" : "{{event_properties.${reminder_id}}}",
"reminder_date" : "{{event_properties.${reminder_date} | date: '%Y-%m-%dT%H:%M:%S+0000'}}",
"message_personalisation_X" : "{{event_properties.${property_x}}}",
"message_personalisation_Y" : "{{event_properties.${property_y}}}",
"message_personalisation_Z" : "{{event_properties.${property_z}}}"
},

"schedule": {
"time": "{{ time_to_first_message | date: '%Y-%m-%dT%H:%M:%S+0000' }}"
}
}
{% endif %}

配列内の文字列を検索する

このユースケースは、カスタム属性配列に特定の文字列が含まれているかどうかをチェックし、存在すれば特定のメッセージを表示する。

1
2
3
{% if custom_attribute.${PartnershipProgramsNotLinked} contains 'Hertz' %}
Link your Hertz account to use Hertz Fast Lane.
{% endif %}

配列の中で最大の値を見つける

このユースケースは、ユーザーメッセージングで使用するために、与えられたカスタム属性配列の中で最も高い値を計算する。

例えば、現在のハイスコアや、ある商品の最高入札額をユーザーに表示したい場合がある。

1
2
3
4
5
6
7
8
{% assign maxValue = 0 %}
{% for attribute in {{custom_attribute.${array_attribute}}} %}
{% assign compareValue = {{attribute | plus: 0}} %}
{% if compareValue > maxValue %}
{% assign maxValue = compareValue %}
{% endif %}
{% endfor %}
{{maxValue}}

配列の中で最小の値を見つける

このユースケースは、ユーザーメッセージングで使用するために、与えられたカスタム属性配列の中で最も低い値を計算する。

例えば、ユーザーに最低得点や最安値を表示したい場合がある。

1
2
3
4
5
6
7
8
{% assign minValue = custom_attribute.${array_attribute}[0] | plus: 0 %}
{% for attribute in {{custom_attribute.${array_attribute}}} %}
{% assign compareValue = {{attribute | plus: 0}} %}
{% if compareValue < minValue %}
{% assign minValue = compareValue %}
{% endif %}
{% endfor %}
{{minValue}}

文字列の終わりを問い合わせる

このユースケースは、メッセージングで使用する文字列の末尾を問い合わせる。

1
2
3
4
5
6
7
8
9
{% assign interest = {{custom_attribute.${Buyer Interest}} | first } %}
{% assign marketplace = {{{{interest}} | split: "" | reverse | join: "" |  truncate: 4, ""}} %}
{% if {{marketplace}} == '3243' %}

Your last marketplace search was on {{custom_attribute.${Last marketplace buyer interest} | date: '%d.%m.%Y'}}. Check out all of our new offers.

{% else %}
{% abort_message() %}
{% endif %}

カスタム属性から配列内の値を複数の組み合わせで問い合わせる

このユースケースは、もうすぐ期限切れになる番組のリストを受け取り、ユーザーのお気に入りの番組がそのリストにあるかどうかをチェックし、もしあれば、ユーザーにもうすぐ期限切れになることを知らせるメッセージを表示する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{% assign expired_shows = 'Modern Family,The Rookie,Body of Proof,Felicity' | split: ',' %}
{% for show in expired_shows %}
{% if {{custom_attribute.${Favorite Shows}}} contains {{show}} %}
{% assign new_shows = new_shows | append: {{show}} | append: '*' %}
{% endif %}
{% endfor %}
{% assign new_shows_clean = new_shows | split: '*' %}
{% if new_shows_clean.size != 0 %}

All episodes of {{new_shows_clean | join: ', ' }} expire on 9/8 - watch them now before they're gone!

{% else %}
{% abort_message("Not found") %}
{% endif %}

文字列を電話番号にフォーマットする

この使用例では、phone_number ユーザープロファイルフィールド(デフォルトでは、整数の文字列としてフォーマットされている)にインデックスを付け、ローカルの電話番号標準に基づいて再フォーマットする方法を示す。例えば、1234567890は(123)-456-7890となる。

1
2
3
{% assign phone = {{${phone_number}}} | remove: "-" | split: '' %}

({{ phone[0] }}{{ phone[1] }}{{ phone[2] }})-{{ phone[3] }}{{ phone[4] }}{{ phone[5] }}-{{ phone[6] }}{{ phone[7] }}{{ phone[8] }}{{ phone[9] }}

プラットフォーム・ターゲティング

デバイスのOSでコピーを区別する

このユースケースは、ユーザーがどのプラットフォームを利用しているかをチェックし、プラットフォームに応じて特定のメッセージを表示する。

例えば、モバイルユーザーには短いバージョンのメッセージコピーを表示し、その他のユーザーには通常の長いバージョンのコピーを表示したい場合がある。また、ウェブユーザーには関係ないが、モバイルユーザーには関係のあるメッセージを表示することもできる。例えば、iOSのメッセージングではApple Payについて話すかもしれないが、AndroidのメッセージングではGoogle Payについて話すべきだ。

1
2
3
4
5
6
{% if targeted_device.${platform} == "ios" or targeted_device.${platform} == "android" %}
This is a shorter copy.

{% else %}
This is the regular copy and much longer than the short version. 
{% endif %}

特定のプラットフォームだけをターゲットにする

このユースケースは、ユーザーのデバイス・プラットフォームをキャプチャし、プラットフォームに応じてメッセージを表示する。

例えば、Androidユーザーにだけメッセージを送りたい場合がある。これは、セグメンテーションツールでアプリを選択する代わりに使用できる。

1
2
3
4
5
6
7
{% if {{targeted_device.${platform}}} == 'android' %} 

This is a message for an Android user! 

{% else %}  
{% abort_message %} 
{% endif %}

特定のOSバージョンを持つデバイスのみを対象とする

このユースケースは、ユーザーのOSバージョンが特定のバージョン・セットに含まれるかどうかをチェックし、含まれる場合は特定のメッセージを表示する。

この例では、OSのバージョンが10.0以前のユーザーに対して、そのユーザーのデバイスOSのサポートを段階的に終了するという警告を送信している。

1
2
3
4
5
6
7
{% if {{targeted_device.${os}}} == "10.0" or {{targeted_device.${os}}} == "10.0.1" or {{targeted_device.${os}}} == "10.0.2" or {{targeted_device.${os}}} == "10.0.3" or {{targeted_device.${os}}} == "10.1" or {{targeted_device.${os}}} == "10.2" or {{targeted_device.${os}}} == "10.2.1" or {{targeted_device.${os}}} == "10.3" or {{targeted_device.${os}}} == "10.3.1" or {{targeted_device.${os}}} == "10.3.2" or {{targeted_device.${os}}} == "10.3.3" or {{targeted_device.${os}}} == "10.3.4" or {{targeted_device.${os}}} == "9.3.1" or {{targeted_device.${os}}} == "9.3.2" or {{targeted_device.${os}}} == "9.3.3" or {{targeted_device.${os}}} == "9.3.4" or {{targeted_device.${os}}} == "9.3.5" %}

We are phasing out support for your device's operating system. Be sure to update to the latest software for the best app experience.

{% else %}
{% abort_message %}
{% endif %}

ウェブブラウザだけをターゲットにする

このユースケースは、ユーザーのターゲット・デバイスがマックまたはウィンドウズで動作しているかどうかをチェックし、動作していれば特定のメッセージを表示する。

1
2
3
4
5
6
7
{% if {{targeted_device.${os}}} == 'Mac' or {{targeted_device.${os}}} == 'Windows' %}

This message will display on your desktop web browser.

{% else %}
{% abort_message %}
{% endif %}

以下のユースケースは、ウェブユーザーがiOSかAndroidかをチェックし、iOSの場合は特定のメッセージを表示する。

1
2
3
4
5
6
7
8
9
10
11
{% if {{targeted_device.${os}}} == 'iOS' and {{targeted_device.${platform}}} == 'web' %}

Content for iOS.

{% elsif {{targeted_device.${os}}} == 'android' and {{targeted_device.${platform}}} == 'web' %}

Content for Android.

{% else %}
{% abort_message %} 
{% endif %}

特定の携帯電話会社をターゲットにする

このユースケースは、ユーザーのデバイスのキャリアがVerizonかどうかをチェックし、もしそうであれば、特定のメッセージを表示する。

プッシュ通知やアプリ内メッセージチャンネルでは、Liquidを使ってメッセージ本文でデバイスキャリアを指定できる。受信者の端末のキャリアが一致しない場合、メッセージは送信されない。

1
2
3
4
5
6
7
{% if {targeted_device.${carrier}} contains "verizon" or {targeted_device.${carrier}} contains "Verizon" %}

This is a message for Verizon users!

{% else %}
{% abort_message %}
{% endif %}

タイムゾーン

ユーザーのタイムゾーンに応じてメッセージをパーソナライズする。

このユースケースは、ユーザーのタイムゾーンに応じて異なるメッセージを表示する。

1
2
3
4
5
6
7
{% if {{${time_zone}}} == 'xx' %}
Message for time zone xx.
{% elsif {{$time_zone}}} == 'yy' %}
Message for time zone yy.
{% else %}
{% abort_message("Invalid time zone") %}
{% endif %}

CSTタイムゾーンをカスタム属性に追加する

このユースケースは、指定されたタイムゾーンのカスタム日付属性を表示する。

オプション 1:

1
{{custom_attribute.${application_expires_date} | time_zone: -0005 | date: '%B, %d %Y' }}

オプション 2:

1
{{custom_attribute.${application_expires_date} | time_zone: 'America/Chicago' | date: '%B %d %Y %z' }}

タイムスタンプを挿入する

このユースケースは、現在のタイムゾーンのタイムスタンプを含むメッセージを表示する。

以下の例では、2021-05-03 10:41:04のように、YYYY-mm-dd HH:MM:SSとして日付を表示する。

1
{{${user_id} | default: 'You'}} received a campaign, rendered at ({{ "now" | time_zone: ${time_zone} | date: "%Y-%m-%d %H:%M:%S" }})

キャンバスプッシュは、ユーザーのローカルタイムゾーンの時間帯にのみ送信する。

このユースケースは、ユーザーのローカルタイムゾーンの時刻をチェックし、それが設定された時間内であれば、特定のメッセージを表示する。

1
2
3
4
5
6
7
{% assign time = 'now' | time_zone: ${time_zone} %}
{% assign hour = time | date: '%H' | plus: 0 %}
{% if hour > 20 or hour < 8 %}
{% abort_message("Outside allowed time window") %}
{% endif %}

Here's a message that will send between 8 am and 8 pm!

ユーザーのローカルタイムゾーンの時間帯に、アプリ内メッセージキャンペーンを繰り返し送信する。

このユースケースは、ユーザーの現在時刻が設定されたウィンドウ内にある場合にメッセージを表示する。

例えば、次のシナリオでは、ある店舗が閉店したことをユーザーに知らせる。

1
2
3
4
5
6
7
8
9
{% assign time = 'now' | time_zone: ${time_zone} %} 
{% assign hour = time | date: '%H' | plus: 0 %}
{% if hour > 21 or hour < 10 %}

Store's closed. Come back between 11 am and 9 pm!

{% else %} 
{% abort_message("Not sent because the store is open") %}
{% endif %}

ユーザーのローカルタイムゾーンで、平日と週末で異なるメッセージを送信する。

このユースケースは、ユーザーの現在の曜日が土曜日か日曜日かをチェックし、曜日によって異なるメッセージを表示する。

1
2
3
4
5
6
7
{% assign today = 'now' | time_zone: ${time_zone} | date: "%A" %}
{% if {{today}} == 'Saturday' or {{today}} == 'Sunday' %}
It's {{today}}, why don't you open the app for your transactions?

{% else %}
It's {{today}}, why don't you visit the store?
{% endif %}

ユーザーのローカルタイムゾーンの時間帯に応じて異なるメッセージを送信する。

このユースケースは、ユーザーの現在時刻が設定されたウィンドウの外に出た場合にメッセージを表示する。

例えば、時間帯に左右されるような、一刻を争うチャンスについてユーザーに伝えたい場合がある。

1
2
3
4
5
6
7
{% assign time = 'now' | time_zone: ${time_zone} %}
{% assign hour = time | date: '%H' | plus: 0 %}
{% if hour > 20 or hour < 8 %}
{% abort_message("Outside allowed time window") %}
{% endif %}

Check out this new bar after work today. HH specials!

Week/Day/Month

前月の名前をメッセージに入れる

このユースケースは、メッセージングで使用するために、現在の月を取得し、前の月を表示する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{% assign today = 'now' | date: "%m" %}
{% assign last_month = {{today}} | minus: 1 %}
{% if last_month == 1 %}
{% assign month = "January" %}
{% elsif last_month == 2 %}
{% assign month = "February" %}
{% elsif last_month == 3 %}
{% assign month = "March" %}
{% elsif last_month == 4 %}
{% assign month = "April" %}
{% elsif last_month == 5 %}
{% assign month = "May" %}
{% elsif last_month == 6 %}
{% assign month = "June" %}
{% elsif last_month == 7 %}
{% assign month = "July" %}
{% elsif last_month == 8 %}
{% assign month = "August" %}
{% elsif last_month == 9 %}
{% assign month = "September" %}
{% elsif last_month == 10 %}
{% assign month = "October" %}
{% elsif last_month == 11 %}
{% assign month = "November" %}
{% elsif last_month == 0 %}
{% assign month = "December" %}
{% endif %}

Here's an overview of what your spending looked like in {{month}}.

同じ結果を得るために、次のような方法もある。

1
2
3
{% assign last_month_name = 'now' | date: "%Y-%m-01" | date: '%s' | minus: 1 | date: "%B" %}

Here's an overview of what your spending looked like in {{month}}.

毎月末にキャンペーンを送る

このユースケースは、現在の日付が日付のリスト内にあるかどうかをチェックし、日付に応じて特定のメッセージを表示する。

1
2
3
4
5
6
7
8
9
{% assign current_date = 'now' | date: '%b %d' %}

{% if current_date == "Jan 31" or current_date == "Feb 28" or current_date == "Mar 31" or current_date == "Apr 30" or current_date == "May 31" or current_date == "Jun 30" or current_date == "Jul 31" or current_date == "Aug 31" or current_date == "Sep 30" or current_date == "Oct 31" or current_date == "Nov 30" or current_date == "Dec 31" %}

The date is correct

{% else %}
{% abort_message("Date is not listed") %}
{% endif %}

月末(平日)にキャンペーンを送信する

このユースケースは、現在の月と日をキャプチャし、現在の日がその月の最後の平日に当たるかどうかを計算する。

例えば、毎月最終水曜日にユーザーにアンケートを送り、製品へのフィードバックを求めることができる。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
{% comment %}Pull the day, day name, month, and year from today's date.{% endcomment %}
{% assign current_day = "now" | date: "%d" %}
{% assign current_day_name = "now" | date: "%a" %}
{% assign current_month = "now" | date: "%b" %}
{% assign current_year = "now" | date: "%Y" %}

{% comment %}Assign the correct number of days for the current month.{% endcomment %}

{% if current_month == "Jan" %}
{% assign last_day_of_month = 31 %}
{% elsif current_month == "Mar" %}
{% assign last_day_of_month = 31 %}
{% elsif current_month == "Apr" %}
{% assign last_day_of_month = 30 %}
{% elsif current_month == "May" %}
{% assign last_day_of_month = 31 %}
{% elsif current_month == "Jun" %}
{% assign last_day_of_month = 30 %}
{% elsif current_month == "Jul" %}
{% assign last_day_of_month = 31 %}
{% elsif current_month == "Aug" %}
{% assign last_day_of_month = 31 %}
{% elsif current_month == "Sep" %}
{% assign last_day_of_month = 30 %}
{% elsif current_month == "Oct" %}
{% assign last_day_of_month = 31 %}
{% elsif current_month == "Nov" %}
{% assign last_day_of_month = 30 %}
{% elsif current_month == "Dec" %}
{% assign last_day_of_month = 31 %}
{% endif %}

{% comment %}Assign the correct number of days if the current month is February, taking into account leap years.{% endcomment %}

{% assign leap_year_remainder = {{current_year | modulo: 4 }} != "0" %}
{% if leap_year_remainder == 0 and current_month == "Feb" %}
{% assign last_day_of_month = 29 %}
{% elsif leap_year_remainder != "0" and current_month == "Feb" %}
{% assign last_day_of_month = 28 %}
{% endif %}

{% comment %}Check that today's date is within a week of the last day of the month. If not, abort the message. If so, check that today is Wednesday. If not, abort the message.{% endcomment %}

{% assign diff_in_days = last_day_of_month | minus: current_day | plus: 1%} 
{% if diff_in_days <= 7 %} 
{% unless current_day_name == "Wed" %} 
{% abort_message("Wrong day of the week") %} 
{% endunless %} 
{% else %} 
{% abort_message("Not the last week of the month") %} 
{% endif %}

毎月異なるメッセージを送る

このユースケースは、現在の日付がリストにある日付と一致するかどうかをチェックし、日によっては明確なメッセージを表示する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{% assign today = 'now' | time_zone: {{${time_zone}}} | date: "%Y-%m-%d" %}
{% assign day_1 = "2019-12-01" | time_zone: {{${time_zone}}} | date: "%Y-%m-%d" %}
{% assign day_2 = "2019-12-02" | time_zone: {{${time_zone}}} | date: "%Y-%m-%d" %}
{% assign day_3 = "2019-12-03" | time_zone: {{${time_zone}}} | date: "%Y-%m-%d" %}

{% if today == day_1 %}
Message for 2019-12-01

{% elsif today == day_2 %}
Message for 2019-12-02

{% elsif today == day_3%}
Message for 2019-12-03

{% else %}
{% abort_message("Date not listed") %}
{% endif %}

曜日ごとに異なるメッセージを送る

このユースケースは、現在の曜日をチェックし、曜日によって異なるメッセージを表示する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{% assign today = 'now' | date: "%A" %}
{% case today %}
{% when 'Monday' %}
Monday copy

{% when 'Tuesday' %}
Tuesday copy

{% when 'Wednesday' %}
Wednesday copy

{% when  'Thursday' %}
Thursday copy

{% when  'Friday' %}
Friday copy

{% when 'Saturday' %}
Saturday copy

{% when 'Sunday' %}
Sunday copy

{% else %}
Default copy
{% endcase %}
「このページはどの程度役に立ちましたか?」
New Stuff!