Approfondissement des templates Liquid et des variables
Écrire du Liquid valide pour les notifications OmniLab et comprendre quelles variables chaque type de notification accepte.
Ce guide complète la documentation Notifications et se concentre sur les règles d'écriture qui comptent lorsque vous voulez que vos templates passent la validation et s'affichent proprement en production.
Où Liquid peut être utilisé
Liquid peut être utilisé dans ces champs de notification :
Email Subject LineEmail PreheaderEmail ContentEmail CTA LabelEmail CTA Link
Comment Liquid se comporte dans OmniLab
- Si une variable documentée n'a pas de valeur, elle s'affiche comme une chaîne vide.
- Les variables non définies sont bloquées par la validation avant le lancement.
- Une syntaxe Liquid invalide est bloquée par la validation avant le lancement.
- Les erreurs au rendu sont également remontées par la validation.
- La variante de langue sélectionnée est résolue en premier, puis Liquid est rendu dans ce texte final.
Familles de variables
| Famille de variables | Ce qu'elle contient | Exemples de variables |
|---|---|---|
| Common | Organisation, expéditeur, reply-to, en-tête, pied de page et liens sociaux | enterprise_name, sender_from_email, reply_from_email |
| Contact | Le participant courant et les champs personnalisés du contact | contact_firstname, contact_email, contact_external_id |
| Touchpoint | Le contexte du point de contact ou de l'activité en cours | collectible_title, collectible_location |
| Reward | Informations sur le gain | reward_display_name, reward_eligible_title |
| Coupon | Détails du coupon ou du bon | coupon_code, coupon_name |
| Event | Détails de l'activité et de l'expérience de réservation | event_title, event_location |
| Booking | Champs spécifiques à la réservation | booking_id, booking_event_id |
Les variables personnalisées au niveau de l'organisation sont aussi disponibles directement par leur propre nom de clé. Autrement dit, une variable comme country peut être référencée par {{ country }} si elle existe dans votre configuration OmniLab.
Matrice de disponibilité par type de notification
| Type de notification | Common | Contact | Touchpoint | Reward | Coupon | Event | Booking | Exemples de variables |
|---|---|---|---|---|---|---|---|---|
Participate | Oui | Oui | Non | Non | Non | Non | Non | contact_firstname, enterprise_name |
Touchpoint Unlocked | Oui | Oui | Oui | Non | Non | Non | Non | collectible_title, collectible_location |
Winner | Oui | Oui | Non | Oui | Oui | Non | Non | reward_display_name, coupon_code |
Loser | Oui | Oui | Non | Oui | Non | Non | Non | reward_title, reward_display_name |
Eligible | Oui | Oui | Non | Oui | Non | Non | Non | reward_eligible_title, reward_display_name |
Reward Redeemed | Oui | Oui | Non | Oui | Oui | Non | Non | reward_display_name, coupon_code |
Booking Confirmation | Oui | Oui | Oui | Non | Non | Oui | Oui | event_title, booking_id |
Booking Cancellation | Oui | Oui | Oui | Non | Non | Oui | Oui | event_title, booking_id |
Booking Confirmation Reminder | Oui | Oui | Oui | Non | Non | Oui | Oui | event_title, booking_slot_start_date |
Exemples pratiques
Congratulations {{ contact_firstname }}. You won {{ reward_display_name }}Hi {{ contact_firstname }},
Congratulations. You won {{ reward_display_name }}.
Your code: {{ coupon_code }}Hi {{ contact_firstname }},
Your booking for {{ event_title }} is confirmed.
Start time: {{ booking_slot_start_date }}
Location: {{ event_location }}
Booking ID: {{ booking_id }}https://example.com/rewards/{{ reward_id }}?contact={{ contact_external_id }}Règles qui évitent les erreurs de validation
- Gardez le HTML en dehors des délimiteurs
{{ }}. - N'utilisez que des lettres, chiffres, underscores et points dans les noms de variables.
- Ne réutilisez pas une famille de variables sur un type de notification qui ne la prend pas en charge.
- Gardez le message lisible même si une variable est résolue comme valeur vide.
- Re-testez les templates copiés lorsque vous les déplacez d'un type de notification à un autre.
<span>{{ contact_firstname }}</span>{{ <span>contact_firstname</span> }}Messages de validation Liquid courants
| Problème | Message de validation | Ce qu'il faut changer |
|---|---|---|
| HTML à l'intérieur de Liquid | {{notification_type}} {{field}} contains HTML tags inside liquid template: {{example}} | Déplacez le HTML en dehors des délimiteurs Liquid |
| Syntaxe invalide | {{notification_type}} {{field}} has invalid liquid template syntax: {{error}} | Équilibrez les délimiteurs et corrigez les expressions malformées |
| Échec au rendu | {{notification_type}} {{field}} liquid template failed to render: {{error}} | Simplifiez la logique du template et restez sur les variables prises en charge |
| Variable non définie | Undefined liquid variable '{{variable}}' used in {{notification_type}} {{field}} | Remplacez-la par une variable documentée |
| Variable non autorisée pour ce type | Liquid variable '{{variable}}' ({{category}} binding) cannot be used in {{notification_type}} notification {{field}} | Utilisez une famille de variables prise en charge par le type de notification courant |
Une dépendance de notification booking qui compte souvent
Si vous activez Booking Confirmation Reminder, gardez aussi Booking Cancellation active. La validation OmniLab le vérifie explicitement, afin que les participants ne reçoivent pas de rappel pour une réservation qui pourrait ensuite être annulée sans email d'annulation correspondant.
Pour aller plus loin
Variables Liquid et bindings
Lire d'abord la référence orientée produit si vous débutez avec Liquid dans OmniLab.
Référence des types de notifications
Revoir le sens du déclencheur derrière chaque type de notification.
À propos des webhooks
Utiliser les webhooks lorsqu'un autre système a besoin des mêmes événements hors email.
Écrire des scripts d'organisation
Écrire et tester des scripts d'organisation Global qui s'exécutent dans OmniLab Pages sans perturber l'expérience participant.
Intégration borne (pour les développeurs)
Embarquer OmniLab dans un wrapper borne, une page hôte iframe ou une WebView avec les bons messages, le bon dimensionnement et les bonnes permissions.