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.
Anniversaires et jours fériés
- Personnaliser les messages en fonction de l’année d’anniversaire d’inscription d’un utilisateur
- Personnaliser les messages en fonction de la semaine d’anniversaire d’un utilisateur
- Envoyer des campagnes aux utilisateurs pendant leur mois d’anniversaire
- Éviter d’envoyer des messages lors des jours fériés importants
Personnaliser les messages en fonction de l’année d’anniversaire d’inscription d’un utilisateur
Ce cas d’utilisation montre comment calculer l’anniversaire d’inscription d’un utilisateur à partir de sa date d’inscription initiale et afficher différents messages en fonction du nombre d’années célébrées.
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 %}
Explication : Ici, nous utilisons la variable réservée now pour insérer la date et l’heure actuelles au format ISO 8601. Les filtres %B (mois comme « May ») et %d (jour comme « 18 ») formatent le mois et le jour actuels. Nous appliquons ensuite les mêmes filtres de date et d’heure aux valeurs de signup_date pour pouvoir comparer les deux valeurs à l’aide de balises et de logique conditionnelles.
Ensuite, nous répétons trois autres déclarations de variables pour obtenir les %B et %d de la signup_date, en ajoutant également %Y (année comme « 2021 »). Cela réduit la date et l’heure de la signup_date à l’année uniquement. Connaître le jour et le mois nous permet de vérifier si l’anniversaire d’inscription de l’utilisateur est aujourd’hui, et connaître l’année nous indique combien d’années se sont écoulées — ce qui nous permet de savoir pour combien d’années le féliciter !
Vous pouvez créer autant de conditions que d’années pendant lesquelles vous avez collecté des dates d’inscription.
Personnaliser les messages en fonction de la semaine d’anniversaire d’un utilisateur
Ce cas d’utilisation montre comment trouver la date d’anniversaire d’un utilisateur, la comparer à la date actuelle, puis afficher des messages d’anniversaire spéciaux avant, pendant et après sa semaine d’anniversaire.
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 %}
Explication : Comme pour le cas d’utilisation de l’année d’anniversaire, nous prenons ici la variable réservée now et utilisons le filtre %W (semaine, par exemple la semaine 12 sur 52 dans une année) pour obtenir le numéro de la semaine de l’année dans laquelle tombe l’anniversaire de l’utilisateur. Si la semaine d’anniversaire de l’utilisateur correspond à la semaine en cours, nous lui envoyons un message de félicitations !
Nous incluons également des déclarations pour last_week et next_week afin de personnaliser davantage vos messages.
Envoyer des campagnes aux utilisateurs pendant leur mois d’anniversaire
Ce cas d’utilisation montre comment calculer le mois d’anniversaire d’un utilisateur, vérifier si son anniversaire tombe dans le mois en cours, et si c’est le cas, envoyer un message spécial.
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 %}
Explication : Comme pour le cas d’utilisation de la semaine d’anniversaire, sauf qu’ici nous utilisons le filtre %B (mois comme « May ») pour identifier les utilisateurs dont l’anniversaire tombe ce mois-ci. Une application possible serait de s’adresser aux utilisateurs fêtant leur anniversaire dans un e-mail mensuel.
Éviter d’envoyer des messages lors des jours fériés importants
Ce cas d’utilisation montre comment envoyer des messages pendant la période des fêtes tout en évitant les jours fériés importants, lorsque l’engagement est susceptible d’être faible.
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 %}
Explication : Ici, nous assignons le terme today à la variable réservée now (la date et l’heure actuelles), en utilisant les filtres %Y (année comme « 2023 »), %m (mois comme « 12 ») et %d (jour comme « 25 ») pour formater la date. Nous exécutons ensuite notre instruction conditionnelle : si la variable today correspond aux jours fériés de votre choix, le message sera annulé.
L’exemple fourni utilise la veille de Noël, le jour de Noël et le lendemain de Noël (Boxing Day).
Utilisation de l’application
- Envoyer des messages dans la langue d’un utilisateur s’il a enregistré une session
- Personnaliser les messages en fonction de la dernière ouverture de l’application par l’utilisateur
- Afficher un message différent si l’utilisateur a utilisé l’application il y a moins de trois jours
Envoyer des messages dans la langue d’un utilisateur s’il n’a pas enregistré de session
Ce cas d’utilisation vérifie si un utilisateur a enregistré une session. Si ce n’est pas le cas, une logique est incluse pour afficher un message basé sur la langue collectée manuellement via un attribut personnalisé, le cas échéant. S’il n’y a aucune information de langue liée à son compte, le message s’affichera dans la langue par défaut. Si un utilisateur a enregistré une session, toute information de langue liée à l’utilisateur sera récupérée et le message approprié sera affiché.
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 %}
Explication : Ici, nous utilisons deux instructions if groupées et imbriquées. La première instruction if vérifie si l’utilisateur a démarré une session en vérifiant si last_used_app_date est nil. En effet, {{${language}}} est collecté automatiquement par le SDK lorsqu’un utilisateur enregistre une session. Si l’utilisateur n’a pas enregistré de session, nous n’avons pas encore sa langue. Cette vérification regarde donc si des attributs personnalisés liés à la langue ont été enregistrés, et en fonction de cette information, affichera un message dans cette langue, si possible.
La seconde instruction if vérifie simplement l’attribut standard (par défaut), car l’utilisateur n’a pas nil pour last_used_app_date, ce qui signifie qu’il a enregistré une session et que nous avons sa langue.
Nil est une variable réservée qui est renvoyée lorsque le code Liquid ne produit aucun résultat. Nil est traité comme false dans un bloc if.
Personnaliser les messages en fonction de la dernière ouverture de l’application par l’utilisateur
Ce cas d’utilisation calcule la dernière fois qu’un utilisateur a ouvert votre application et affiche un message personnalisé différent en fonction de la durée écoulée.
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 %}
Afficher un message différent si l’utilisateur a utilisé l’application il y a moins de trois jours
Ce cas d’utilisation calcule depuis combien de temps un utilisateur a utilisé votre application et, en fonction de la durée écoulée, affiche un message personnalisé différent.
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 %}
Comptes à rebours
- Ajouter X jours à la date du jour
- Calculer un compte à rebours à partir d’un point dans le temps
- Créer un compte à rebours pour des dates et priorités de livraison spécifiques
- Créer un compte à rebours en jours
- Créer un compte à rebours de jours en heures en minutes
- Afficher le nombre de jours restants jusqu’à une certaine date
- Afficher le nombre de jours restants jusqu’à l’arrivée d’un attribut de date personnalisé
- Afficher le temps restant et annuler le message s’il ne reste que X temps
- Message in-app à envoyer X jours avant la fin de l’abonnement de l’utilisateur
- Personnaliser les messages in-app en fonction de la date et de la langue de l’utilisateur
- Insérer dans un modèle la date dans 30 jours, formatée en mois et jour
Ajouter x jours à la date du jour
Ce cas d’utilisation ajoute un nombre spécifique de jours à la date actuelle pour le référencer et l’insérer dans les messages. Par exemple, vous pourriez envoyer un message en milieu de semaine présentant les événements du week-end dans la région.
1
Here are the movies we're showing on {{ "now" | date:'%s' | plus:259200 | date:"%F" }}!
La valeur plus est toujours en secondes, c’est pourquoi nous terminons avec le filtre %F pour convertir les secondes en jours.
Vous pouvez inclure une URL ou un lien profond vers une liste d’événements dans votre message afin de diriger l’utilisateur vers une liste d’activités à venir.
Calculer un compte à rebours à partir d’un point dans le temps
Ce cas d’utilisation calcule la différence en jours entre une date spécifique et la date actuelle. Cette différence peut servir à afficher un compte à rebours à vos utilisateurs.
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!
Créer un compte à rebours pour des dates et priorités de livraison spécifiques
Ce cas d’utilisation capture différentes options de livraison, calcule le temps nécessaire pour la réception et affiche des messages encourageant les utilisateurs à acheter à temps pour recevoir leur colis avant une certaine date.
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_o | 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 %}
Créer un compte à rebours en jours
Ce cas d’utilisation calcule le temps restant entre un événement spécifique et la date actuelle, puis affiche le nombre de jours restants avant l’événement.
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!
Vous aurez besoin d’un champ d’attribut personnalisé avec une valeur de type date.
Créer un compte à rebours de jours en heures en minutes
Ce cas d’utilisation calcule le temps restant entre un événement spécifique et la date actuelle. En fonction du temps restant avant l’événement, il adapte l’unité de temps (jours, heures, minutes) pour afficher différents messages personnalisés.
Par exemple, s’il reste deux jours avant l’arrivée de la commande d’un client, vous pourriez dire « Votre commande arrivera dans 2 jours ». S’il reste moins d’un jour, vous pourriez afficher « Votre commande arrivera dans 17 heures ».
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 %}
Vous aurez besoin d’un champ d’attribut personnalisé avec une valeur de type date. Vous devrez également définir des seuils temporels pour déterminer quand le temps doit être affiché en jours, heures et minutes.
Afficher le nombre de jours restants jusqu’à une certaine date
Ce cas d’utilisation calcule la différence entre la date actuelle et une date d’événement future, puis affiche un message indiquant le nombre de jours restants avant l’événement.
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!
Afficher le nombre de jours restants jusqu’à l’arrivée d’un attribut de date personnalisé
Ce cas d’utilisation calcule la différence en jours entre les dates actuelle et future, puis affiche un message si la différence correspond à un nombre défini.
Dans cet exemple, un utilisateur recevra un message deux jours avant l’attribut de date personnalisé. Sinon, le message ne sera pas envoyé.
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 %}
Afficher le temps restant et annuler le message s’il ne reste que x temps
Ce cas d’utilisation calcule le temps restant jusqu’à une certaine date et, en fonction de la durée (en ignorant le message si la date est trop proche), affiche différents messages personnalisés.
Par exemple, « Il vous reste x heures pour acheter votre billet pour Londres », mais sans envoyer le message s’il reste moins de deux heures avant le vol pour Londres.
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 %}
Vous aurez besoin d’une propriété d’événement personnalisé.
Message in-app à envoyer x jours avant la fin de l’abonnement des utilisateurs
Ce cas d’utilisation capture la date d’expiration de l’abonnement, calcule le temps restant avant l’expiration et affiche différents messages en fonction du délai restant.
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 %}
Personnaliser les messages in-app en fonction de la date et de la langue des utilisateurs
Ce cas d’utilisation calcule un compte à rebours jusqu’à un événement et, en fonction du paramètre de langue de l’utilisateur, affiche le compte à rebours dans sa langue.
Par exemple, vous pourriez envoyer une série de messages de vente incitative aux utilisateurs une fois par mois pour leur indiquer combien de temps une offre est encore valide, avec quatre messages in-app :
- Initial
- 2 jours restants
- 1 jour restant
- Dernier jour
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 %}
Vous devrez assigner une valeur de type date et inclure une logique d’annulation si la date donnée se situe en dehors de la plage de dates. Pour des calculs au jour exact, la date de fin assignée doit inclure 23:59:59.
Insérer dans un modèle la date dans 30 jours, formatée en mois et jour
Ce cas d’utilisation affiche la date dans 30 jours pour l’utiliser dans les messages.
1
2
{% assign today = 'now' | date: "%s" %}
{% assign thirty_days = today | plus: 2592000 | date: "%B %d" %}
Attribut personnalisé
- Personnaliser un message en fonction d’attributs personnalisés correspondants
- Soustraire deux attributs personnalisés pour afficher la différence en valeur monétaire
- Référencer le prénom d’un utilisateur si son nom complet est stocké dans le champ first_name
Personnaliser un message en fonction d’attributs personnalisés correspondants
Ce cas d’utilisation vérifie si un utilisateur possède des attributs personnalisés spécifiques et, si c’est le cas, affiche différents messages personnalisés.
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 %}
Soustraire deux attributs personnalisés pour afficher la différence en valeur monétaire
Ce cas d’utilisation capture deux attributs personnalisés monétaires, puis calcule et affiche la différence pour indiquer aux utilisateurs combien il leur reste à collecter pour atteindre leur objectif.
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!
Référencer le prénom d’un utilisateur si son nom complet est stocké dans le champ first_name
Ce cas d’utilisation capture le prénom d’un utilisateur (si le prénom et le nom sont stockés dans un seul champ) puis utilise ce prénom pour afficher un message de bienvenue.
1
2
3
{{${first_name} | truncatewords: 1, "" | default: 'hi'}}
{% assign name = {{${first_name}}} | split: ' ' %}
Hi {{name[0]}}, here's your message!
Explication : Le filtre split transforme la chaîne de caractères contenue dans {{${first_name}}} en un tableau. En utilisant {{name[0]}}, nous ne faisons référence qu’au premier élément du tableau, c’est-à-dire le prénom de l’utilisateur.
Événement personnalisé
- Annuler une notification push si un événement personnalisé est dans les deux heures à venir
- Envoyer une campagne chaque fois qu’un utilisateur effectue un événement personnalisé trois fois
- Envoyer un message aux utilisateurs qui n’ont acheté que dans une seule catégorie
- Suivre le nombre de fois qu’un événement personnalisé s’est produit au cours du mois précédent
Annuler une notification push si un événement personnalisé est dans les deux heures à venir
Ce cas d’utilisation calcule le temps restant avant un événement et, en fonction du temps restant, affiche différents messages personnalisés.
Par exemple, vous pourriez vouloir empêcher l’envoi d’une notification push si une propriété d’événement personnalisé arrive dans les deux prochaines heures. Cet exemple utilise le scénario d’un panier abandonné pour un billet de train.
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 %}
Envoyer une campagne chaque fois qu’un utilisateur effectue un événement personnalisé trois fois
Ce cas d’utilisation vérifie si un utilisateur a effectué un événement personnalisé trois fois et, si c’est le cas, affiche un message ou envoie une campagne.
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?
Vous devez disposer d’une propriété d’événement pour le compteur d’événements personnalisés ou utiliser un webhook vers votre endpoint Braze. Cela permet d’incrémenter un attribut personnalisé (example_event_count) chaque fois que l’utilisateur effectue l’événement. Cet exemple utilise une cadence de trois (1, 4, 7, 10, etc.). Pour commencer la cadence à zéro (0, 3, 6, 9, etc.), supprimez minus: 1.
Envoyer un message aux utilisateurs qui n’ont acheté que dans une seule catégorie
Ce cas d’utilisation capture la liste des catégories dans lesquelles un utilisateur a acheté et, si une seule catégorie d’achat existe, affiche un message.
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 %}
Suivre le nombre de fois qu’un événement personnalisé s’est produit au cours du mois précédent
Ce cas d’utilisation calcule le nombre de fois qu’un événement personnalisé a été enregistré entre le 1er du mois en cours et le mois précédent. Vous pouvez ensuite exécuter un appel users/track pour mettre à jour et stocker cette valeur en tant qu’attribut personnalisé. Notez que cette campagne doit fonctionner pendant deux mois consécutifs avant que les données mensuelles puissent être utilisées.
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}}"
}
]
Langue
- Afficher les noms de mois dans une autre langue
- Afficher une image en fonction de la langue d’un utilisateur
- Personnaliser les messages en fonction du jour de la semaine et de la langue de l’utilisateur
Afficher les noms de mois dans une autre langue
Ce cas d’utilisation affiche la date, le mois et l’année actuels, avec le mois dans une autre langue. L’exemple fourni utilise le suédois.
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 %}
Afficher une image en fonction de la langue d’un utilisateur
Ce cas d’utilisation affiche une image en fonction de la langue d’un utilisateur. Notez que ce cas d’utilisation n’a été testé qu’avec des images téléchargées dans la bibliothèque multimédia de 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 %}
Personnaliser les messages en fonction du jour de la semaine et de la langue de l’utilisateur
Ce cas d’utilisation vérifie le jour actuel de la semaine et, en fonction du jour, si la langue de l’utilisateur correspond à l’une des options fournies, affiche un message spécifique dans sa langue.
L’exemple fourni s’arrête au mardi mais peut être répété pour chaque jour de la semaine.
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 %}
Divers
- Éviter d’envoyer des e-mails aux clients qui ont bloqué les e-mails marketing
- Utiliser l’état d’abonnement d’un client pour personnaliser le contenu des messages
- Mettre en majuscule la première lettre de chaque mot dans une chaîne de caractères
- Comparer la valeur d’un attribut personnalisé avec un tableau
- Créer un rappel d’événement à venir
- Trouver une chaîne de caractères dans un tableau
- Trouver la plus grande valeur dans un tableau
- Trouver la plus petite valeur dans un tableau
- Interroger la fin d’une chaîne de caractères
- Interroger les valeurs d’un tableau à partir d’un attribut personnalisé avec plusieurs combinaisons
- Formater une chaîne de caractères en numéro de téléphone
Éviter d’envoyer des e-mails aux clients qui ont bloqué les e-mails marketing
Ce cas d’utilisation prend une liste d’utilisateurs bloqués enregistrée dans un bloc de contenu et vérifie que ces utilisateurs bloqués ne sont pas contactés ou ciblés dans les campagnes ou Canvas à venir.
Pour utiliser ce Liquid, enregistrez d’abord la liste des e-mails bloqués dans un bloc de contenu. La liste ne doit contenir aucun espace ni caractère supplémentaire entre les adresses e-mail (par exemple, [email protected],[email protected]).
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!
Explication : Ici, nous vérifions si l’e-mail du destinataire potentiel figure dans cette liste en référençant le bloc de contenu des e-mails bloqués. Si l’e-mail est trouvé, le message ne sera pas envoyé.
Les blocs de contenu ont une limite de taille de 5 Mo.
Utiliser l’état d’abonnement d’un client pour personnaliser le contenu des messages
Ce cas d’utilisation utilise l’état d’abonnement d’un client pour envoyer du contenu personnalisé. Les clients abonnés à un groupe d’abonnement spécifique recevront un message exclusif pour les groupes d’abonnement e-mail.
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 %}
Mettre en majuscule la première lettre de chaque mot dans une chaîne de caractères
Ce cas d’utilisation prend une chaîne de mots, les divise en un tableau et met en majuscule la première lettre de chaque mot.
1
2
3
4
{% assign words_array = {{custom_attribute.${address}}} | split: ' ' %}
{% for words in {{words_array}} %}
{{ words | capitalize | append: ' ' }}
{% endfor %}
Explication : Ici, nous avons assigné une variable à notre attribut de chaîne choisi et utilisé le filtre split pour diviser la chaîne en un tableau. Nous avons ensuite utilisé la balise for pour assigner la variable words à chacun des éléments de notre tableau nouvellement créé, avant d’afficher ces mots avec le filtre capitalize et le filtre append pour ajouter des espaces entre chacun des termes.
Comparer la valeur d’un attribut personnalisé avec un tableau
Ce cas d’utilisation prend une liste de magasins favoris, vérifie si l’un des magasins favoris d’un utilisateur figure dans cette liste et, si c’est le cas, affiche une offre spéciale de ces magasins.
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 %}
Cette séquence contient une balise break dans l’instruction conditionnelle principale. Cela provoque l’arrêt de la boucle lorsqu’une correspondance est trouvée. Si vous souhaitez afficher plusieurs ou toutes les correspondances, supprimez la balise break.
Créer un rappel d’événement à venir
Ce cas d’utilisation permet aux utilisateurs de configurer des rappels à venir basés sur des événements personnalisés. Le scénario d’exemple permet à un utilisateur de définir un rappel pour une date de renouvellement de police à 26 jours ou plus, les rappels étant envoyés 26, 13, 7 ou 2 jours avant la date de renouvellement.
Avec ce cas d’utilisation, le contenu suivant doit être placé dans le corps d’une campagne webhook ou d’une étape du Canvas.
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 %}
{% elsif {{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 %}
Vous aurez besoin d’un événement personnalisé reminder_capture, et les propriétés de l’événement personnalisé doivent inclure au minimum :
reminder-id: identifiant de l’événement personnaliséreminder_date: date soumise par l’utilisateur pour l’échéance de son rappelmessage_personalisation_X: toutes les propriétés nécessaires pour personnaliser le message au moment de l’envoi
Trouver une chaîne de caractères dans un tableau
Ce cas d’utilisation vérifie si un tableau d’attributs personnalisés contient une chaîne de caractères spécifique et, si elle existe, affiche un message spécifique.
1
2
3
{% if custom_attribute.${PartnershipProgramsNotLinked} contains 'Hertz' %}
Link your Hertz account to use Hertz Fast Lane.
{% endif %}
Trouver la plus grande valeur dans un tableau
Ce cas d’utilisation calcule la valeur la plus élevée dans un tableau d’attributs personnalisés donné pour l’utiliser dans les messages aux utilisateurs.
Par exemple, vous pourriez vouloir montrer à un utilisateur le meilleur score actuel ou l’enchère la plus élevée sur un article.
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}}
Vous devez utiliser un attribut personnalisé qui a une valeur entière et qui fait partie d’un tableau (liste).
Trouver la plus petite valeur dans un tableau
Ce cas d’utilisation calcule la valeur la plus basse dans un tableau d’attributs personnalisés donné pour l’utiliser dans les messages aux utilisateurs.
Par exemple, vous pourriez vouloir montrer à un utilisateur le score le plus bas ou l’article le moins cher.
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}}
Vous devez utiliser un attribut personnalisé qui a une valeur entière et qui fait partie d’un tableau (liste).
Interroger la fin d’une chaîne de caractères
Ce cas d’utilisation interroge la fin d’une chaîne de caractères pour l’utiliser dans les messages.
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 %}
Interroger les valeurs d’un tableau à partir d’un attribut personnalisé avec plusieurs combinaisons
Ce cas d’utilisation prend une liste d’émissions bientôt expirées, vérifie si l’une des émissions favorites d’un utilisateur figure dans cette liste et, si c’est le cas, affiche un message informant l’utilisateur qu’elles expireront bientôt.
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 %}
Vous devrez d’abord trouver les correspondances entre les tableaux, puis construire la logique à la fin pour séparer les correspondances.
Formater une chaîne de caractères en numéro de téléphone
Ce cas d’utilisation vous montre comment indexer le champ phone_number du profil utilisateur (par défaut, formaté comme une chaîne d’entiers) et le reformater selon vos normes locales de numéro de téléphone. Par exemple, 1234567890 en (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] }}
Ciblage par plateforme
- Différencier le texte par système d’exploitation de l’appareil
- Cibler uniquement une plateforme spécifique
- Cibler uniquement les appareils iOS avec une version spécifique du système d’exploitation
- Cibler uniquement les navigateurs web
- Cibler un opérateur mobile spécifique
Différencier le texte par système d’exploitation de l’appareil
Ce cas d’utilisation vérifie sur quelle plateforme se trouve un utilisateur et, en fonction de sa plateforme, affiche un message spécifique.
Par exemple, vous pourriez montrer aux utilisateurs mobiles des versions plus courtes du texte tout en montrant aux autres utilisateurs la version régulière et plus longue. Vous pourriez également montrer aux utilisateurs mobiles certains messages pertinents pour eux mais qui ne le seraient pas pour les utilisateurs web. Par exemple, les messages iOS pourraient parler d’Apple Pay, tandis que les messages Android devraient mentionner 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 %}
Liquid est sensible à la casse, targeted_device.${platform} renvoie la valeur entièrement en minuscules.
Cibler uniquement une plateforme spécifique
Ce cas d’utilisation capture la plateforme de l’appareil des utilisateurs et, en fonction de la plateforme, affiche un message.
Par exemple, vous pourriez vouloir envoyer un message uniquement aux utilisateurs Android. Cela peut servir d’alternative à la sélection d’une application dans l’outil de segmentation.
1
2
3
4
5
6
7
{% if {{targeted_device.${platform}}} == 'android' %}
This is a message for an Android user!
{% else %}
{% abort_message %}
{% endif %}
Cibler uniquement les appareils avec une version spécifique du système d’exploitation
Ce cas d’utilisation vérifie si la version du système d’exploitation d’un utilisateur fait partie d’un certain ensemble de versions et, si c’est le cas, affiche un message spécifique.
L’exemple utilisé envoie un avertissement aux utilisateurs ayant une version du système d’exploitation 10.0 ou antérieure, les informant que le support de leur système d’exploitation est en cours d’abandon.
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 %}
Cibler uniquement les navigateurs web
Ce cas d’utilisation vérifie si l’appareil cible d’un utilisateur fonctionne sous Mac ou Windows et, si c’est le cas, affiche un message spécifique.
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 %}
Le cas d’utilisation suivant vérifie si un utilisateur web est sur iOS ou Android et, si c’est le cas, affiche un message spécifique.
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 %}
Cibler un opérateur mobile spécifique
Ce cas d’utilisation vérifie si l’opérateur de l’appareil d’un utilisateur est Verizon et, si c’est le cas, affiche un message spécifique.
Pour les notifications push et les canaux de messages in-app, vous pouvez spécifier l’opérateur de l’appareil dans le corps de votre message en utilisant Liquid. Si l’opérateur de l’appareil du destinataire ne correspond pas, le message ne sera pas envoyé.
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 %}
SMS
Répondre avec différents messages en fonction du mot-clé SMS entrant
Ce cas d’utilisation intègre le traitement dynamique des mots-clés SMS pour répondre à des messages entrants spécifiques avec un texte différent. Par exemple, vous pouvez envoyer des réponses différentes lorsque quelqu’un envoie « START » par rapport à « JOIN ».
1
2
3
4
5
6
7
8
9
10
11
{% assign inbound_message = {{sms.${inbound_message_body}}} | downcase | strip %}
{% if inbound_message contains 'start' %}
Thanks for joining our SMS program! Make sure your account is up to date for the best deals!
{% elsif inbound_message contains 'join' %}
Thanks for joining our SMS program! Create an account to get the best deals!
{% else %}
Thanks for joining our SMS program!
{% endif %}
Fuseaux horaires
- Insérer dans un modèle le fuseau horaire de l’utilisateur
- Personnaliser un message en fonction du fuseau horaire d’un utilisateur
- Ajouter le fuseau horaire CST à un attribut personnalisé
- Insérer un horodatage
- Envoyer une notification push Canvas uniquement pendant une fenêtre horaire dans le fuseau horaire local de l’utilisateur
- Envoyer une campagne de messages in-app récurrente pendant une fenêtre horaire dans le fuseau horaire local de l’utilisateur
- Envoyer des messages différents en semaine et le week-end dans le fuseau horaire local de l’utilisateur
- Envoyer des messages différents en fonction de l’heure de la journée dans le fuseau horaire local de l’utilisateur
Insérer dans un modèle le fuseau horaire de l’utilisateur
Par défaut, les dates et heures dans Liquid sont affichées en temps universel coordonné (UTC). Pour afficher les dates et heures dans le fuseau horaire local de l’utilisateur, utilisez le filtre time_zone avec le filtre date.
Assigner la date et l’heure locales
Pour assigner une variable qui reflète la date et l’heure actuelles dans le fuseau horaire local de l’utilisateur, utilisez ce format :
1
2
{% assign local_date_time = 'now' | time_zone:{{${time_zone}}} | date: '%B %e, %Y' %}
{{local_date_time}}
now: récupère la date et l’heure actuelles en UTC.time_zone: récupère le fuseau horaire local de l’utilisateur à partir de l’attribut par défaut en utilisant la balise de personnalisation{{${time_zone}}}.date: formate la date et l’heure locales de l’utilisateur selon vos spécifications. Dans l’exemple précédent, le système affiche une chaîne formatée comme « February 26, 2026 ». Pour plus d’options de formatage, consultez strftime.net.
Appliquer le fuseau horaire de l’utilisateur avec des attributs personnalisés
Vous pouvez appliquer le filtre time_zone aux attributs personnalisés, comme ceci :
1
{{custom_attribute.${date_time_attribute} | time_zone: {{${time_zone}}} | date: '%a, %b %e, %Y'}}
Cela affiche le date_time_attribute formaté avec le jour de la semaine abrégé, suivi du mois abrégé, du jour et de l’année à quatre chiffres.
Personnaliser un message en fonction du fuseau horaire d’un utilisateur
Ce cas d’utilisation affiche différents messages en fonction du fuseau horaire d’un utilisateur.
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 %}
Ajouter le fuseau horaire CST à un attribut personnalisé
Ce cas d’utilisation affiche un attribut de date personnalisé dans un fuseau horaire donné.
Option 1 :
1
{{custom_attribute.${application_expires_date} | time_zone: -0005 | date: '%B, %d %Y' }}
Option 2 :
1
{{custom_attribute.${application_expires_date} | time_zone: 'America/Chicago' | date: '%B %d %Y %z' }}
Insérer un horodatage
Ce cas d’utilisation affiche un message qui inclut un horodatage dans le fuseau horaire actuel de l’utilisateur.
L’exemple suivant affiche la date au format AAAA-mm-jj HH:MM:SS, par exemple 2021-05-03 10:41:04.
1
{{${user_id} | default: 'You'}} received a campaign, rendered at ({{ "now" | time_zone: ${time_zone} | date: "%Y-%m-%d %H:%M:%S" }})
Envoyer une notification push Canvas uniquement pendant une fenêtre horaire dans le fuseau horaire local de l’utilisateur
Ce cas d’utilisation vérifie l’heure d’un utilisateur dans son fuseau horaire local et, si elle se situe dans une fenêtre horaire définie, affiche un message spécifique.
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!
Envoyer une campagne de messages in-app récurrente pendant une fenêtre horaire dans le fuseau horaire local de l’utilisateur
Ce cas d’utilisation affiche un message si l’heure actuelle de l’utilisateur se situe dans une fenêtre définie.
Par exemple, le scénario suivant informe un utilisateur qu’un magasin est fermé.
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 %}
Envoyer des messages différents en semaine et le week-end dans le fuseau horaire local de l’utilisateur
Ce cas d’utilisation vérifie si le jour actuel de l’utilisateur est un samedi ou un dimanche et, en fonction du jour, affiche des messages différents.
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 %}
Envoyer des messages différents en fonction de l’heure de la journée dans le fuseau horaire local de l’utilisateur
Ce cas d’utilisation affiche un message si l’heure actuelle de l’utilisateur se situe en dehors d’une fenêtre définie.
Par exemple, vous pourriez vouloir informer un utilisateur d’une opportunité limitée dans le temps qui dépend de l’heure de la journée.
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!
C’est l’opposé des heures calmes.
Semaine/Jour/Mois
- Récupérer le nom du mois précédent dans un message
- Envoyer une campagne à la fin de chaque mois
- Envoyer une campagne le dernier jour ouvrable du mois
- Envoyer un message différent chaque jour du mois
- Envoyer un message différent chaque jour de la semaine
Récupérer le nom du mois précédent dans un message
Ce cas d’utilisation prend le mois en cours et affiche le mois précédent pour l’utiliser dans les messages.
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}}.
Vous pouvez également utiliser ce qui suit pour obtenir le même résultat.
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 {{last_month_name}}.
Envoyer une campagne à la fin de chaque mois
Ce cas d’utilisation vérifie si la date actuelle fait partie d’une liste de dates et, en fonction de la date, affiche un message spécifique.
Cela ne prend pas en compte les années bissextiles (29 février).
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 %}
Envoyer une campagne le dernier jour ouvrable du mois
Ce cas d’utilisation capture le mois et le jour actuels et calcule si le jour actuel tombe dans la dernière semaine ouvrable du mois.
Par exemple, vous pourriez vouloir envoyer un sondage à vos utilisateurs le dernier mercredi du mois pour recueillir leur avis sur le produit.
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 %}
{% if leap_year_remainder == 0 and current_month == "Feb" %}
{% assign last_day_of_month = 29 %}
{% elsif 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 %}
Envoyer un message différent chaque jour du mois
Ce cas d’utilisation vérifie si la date actuelle correspond à une date dans une liste et, en fonction du jour, affiche un message distinct.
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 %}
Envoyer un message différent chaque jour de la semaine
Ce cas d’utilisation vérifie le jour actuel de la semaine et, en fonction du jour, affiche un message distinct.
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 %}
Vous pouvez remplacer la ligne « Default copy » par {% abort_message() %} pour empêcher l’envoi du message si le jour de la semaine est inconnu.