# Modèles Liquid

<YouTube id="A7l1_gK5yOA" playlabel="Vidéo Youtube : Apprenez à utiliser les modèles de contenu dans les Customer Journeys"/>

Les modèles Liquid élargissent considérablement les capacités de personnalisation de Pushwoosh en mettant en œuvre une logique sophistiquée en plus de l'utilisation régulière du [Contenu Dynamique](/fr/product/personalization/dynamic-content/).

La personnalisation des messages dans Pushwoosh est basée sur les [Tags (données utilisateur)](/fr/product/audience-data-and-segmentation/user-data-tags/tags). Pushwoosh offre une variété de [Tags par défaut](/fr/product/audience-data-and-segmentation/user-data-tags/tags#default-tags) et de [Tags personnalisés](/fr/product/audience-data-and-segmentation/user-data-tags/tags#custom-tags). En les utilisant, vous pouvez spécifier le prénom d'un utilisateur, sa ville, son historique d'achat, etc. pour envoyer un message plus personnalisé. Par exemple : `Hi {{First_name}}, thanks for ordering {{item}}`.

Les modèles Liquid ajoutent plus de logique au contenu dynamique. Par exemple, si le tag d'abonnement d'un utilisateur contient « free », vous pouvez lui envoyer un message : « Profitez de votre réduction de 10 % ».

Modifier le contenu du message en fonction des identifiants, des comportements et des préférences des utilisateurs est le moyen le plus efficace d'augmenter la pertinence et d'obtenir des résultats plus impressionnants de vos campagnes marketing.

## Syntaxe

Les modèles de contenu basés sur [Liquid par Shopify](https://shopify.github.io/liquid/) utilisent une combinaison de [**tags**](#tags), d'[**objets**](#objects) et de [**filtres**](#undefined) pour charger du contenu dynamique. Les modèles de contenu vous permettent d'accéder à certaines variables depuis un modèle et d'afficher leurs données sans avoir à connaître quoi que ce soit sur les données elles-mêmes.

<Aside type="note">
Pour en savoir plus sur la syntaxe, veuillez vous référer à la [documentation de Liquid](https://shopify.github.io/liquid/basics/introduction/).
</Aside>

### Objets

Les `objects` définissent le contenu qui sera affiché à un utilisateur. Les `objects` doivent être entourés de doubles accolades : `{{ }}`

Par exemple, lors de la personnalisation d'un message, envoyez `{{Name}}` dans son corps pour ajouter les noms des utilisateurs au contenu du message. Le nom de l'utilisateur (valeur du tag Name) remplacera l'objet Liquid dans le message que l'utilisateur verra.

<Tabs>
<TabItem label="Entrée">
```
Hi {{Name}}! We're glad you're back!
```
</TabItem>

<TabItem label="Sortie">
Hi Anna! We're glad you're back!
</TabItem>
</Tabs>

### Tags

Les `tags` créent la logique et le flux de contrôle pour les modèles. Les délimiteurs pourcentage-accolade `{%` et `%}` et le texte qu'ils entourent ne produisent aucune sortie visible lorsque le modèle est rendu. Cela vous permet d'assigner des variables et de créer des conditions ou des boucles sans montrer aucune logique Liquid à un utilisateur.

Par exemple, en utilisant le tag `if`, vous pouvez varier la langue du message en fonction de la langue définie sur l'appareil de l'utilisateur :

<Tabs>
  <TabItem label="Entrée">

```liquid
{% if Language == 'fr' %}
Salut!
{% else %}
Hello!
{% endif %}
````

  </TabItem>

  <TabItem label="Sortie (fr)">
    Salut!
  </TabItem>

  <TabItem label="Sortie (es)">
    Hello!
  </TabItem>
</Tabs>


### Opérateurs de tags

<table data-header-hidden><thead><tr><th width="189.5" align="center">Opérateur</th><th>Description</th></tr></thead><tbody><tr><td align="center"><code>==</code></td><td>égal à</td></tr><tr><td align="center"><code>!=</code></td><td>différent de</td></tr><tr><td align="center"><code>></code></td><td>supérieur à</td></tr><tr><td align="center"><code>&#x3C;</code></td><td>inférieur à</td></tr><tr><td align="center"><code>>=</code></td><td>supérieur ou égal à</td></tr><tr><td align="center"><code>&#x3C;=</code></td><td>inférieur ou égal à</td></tr><tr><td align="center"><code>or</code></td><td>ou logique</td></tr><tr><td align="center"><code>and</code></td><td>et logique</td></tr><tr><td align="center"><code>contains</code></td><td>vérifie la présence d'une sous-chaîne dans une chaîne ou un tableau de chaînes</td></tr></tbody></table>

<Aside type="note">
Dans les tags avec plus d'un opérateur `and` ou `or`, les opérateurs sont vérifiés dans l'ordre _de droite à gauche_. Vous ne pouvez pas changer l'ordre des opérations en utilisant des parenthèses — les parenthèses sont des caractères invalides dans Liquid et empêcheront vos tags de fonctionner.
</Aside>

### Filtres

Les `filters` modifient la sortie d'un objet ou d'une variable Liquid. Ils sont utilisés à l'intérieur des doubles accolades `{{ }}` et de l'assignation de variables, et sont séparés par une barre verticale `|`. Plusieurs filtres peuvent être utilisés sur une même sortie, et sont appliqués de gauche à droite.

<Tabs>
<TabItem label="Entrée">

```

{{ Name | capitalize | prepend:"Hello " }}

```

</TabItem>

<TabItem label="Sortie">

Hello Anna

</TabItem>
</Tabs>

## Utilisation des modèles Liquid

Les modèles Liquid sont disponibles à la fois pour les messages envoyés depuis le Panneau de Contrôle et pour les [requêtes API](/fr/developer/guides/personalization/liquid-templates#using-liquid-templates-in-messages-sent-via-api).

Dans Pushwoosh, les modèles Liquid sont applicables à tous les champs de contenu de n'importe quel message de canal :

*   Notifications Push
*   E-mails

Pour ajouter un modèle Liquid à votre message, insérez-le dans le corps du message. Vous pouvez le faire en travaillant avec les éléments [push](/fr/product/customer-journey/journey-elements/#push) ou [e-mail](/fr/product/customer-journey/journey-elements/#email), directement depuis l'interface du Customer Journey Builder.

Allez dans **Customer Journey Builder** > **Créer une Campagne** > glissez et déposez les éléments suivants sur votre canevas : **Entrée basée sur l'audience**, **Push** (ou **E-mail**), et **Sortie**. Connectez les éléments. Ensuite, cliquez sur l'icône **Push**, choisissez **Contenu personnalisé**, et insérez votre texte.

Pour ajouter de la logique Liquid, utilisez les valeurs de tag avec la syntaxe suivante :

```liquid  
{% if TagName == 'value' %}  
  Contenu à envoyer dans ce scénario  
{% else %}  
  Contenu à envoyer sinon  
{% endif %}
```
Puis cliquez sur **Appliquer**.

<video src="/personalization-liquid-templates-1.webm" title="Interface du Customer Journey Builder montrant comment ajouter une logique de modèle Liquid avec des conditions if-else au contenu des notifications push" autoplay loop muted playsinline />

Les variables de modèle (Tags Pushwoosh) ne doivent pas contenir d'espaces et ne doivent avoir que des valeurs alphanumériques et des underscores, par ex., `my_tag` ou `myTag` au lieu de `My Tag`.

[En savoir plus sur les modèles Liquid dans les journeys](/fr/product/customer-journey/journey-elements/dynamic-content-and-liquid-templates-in-journeys)

<Aside type="tip">
Vous pouvez également utiliser la syntaxe Liquid dans les requêtes `/createMessage` pour implémenter des modèles Liquid. Pour cela, vous aurez besoin de l'aide de votre équipe de développement. Partagez le [guide des modèles Liquid](/fr/developer/guides/personalization/liquid-templates) avec eux pour des instructions détaillées.
</Aside>

## Contenu connecté

Le contenu connecté est une fonctionnalité des modèles Liquid qui vous permet de récupérer et d'utiliser dynamiquement des données d'une source externe, comme un service web, directement dans vos messages e-mail ou de notification push. Cette fonctionnalité permet une personnalisation en temps réel en récupérant des données JSON à partir d'une URL spécifiée et en les enregistrant dans une variable qui peut être utilisée dans votre contenu.

#### Principaux cas d'utilisation

-   **Recommandations de produits** : Affichez des listes de produits personnalisées adaptées à chaque utilisateur.
-   **Codes promotionnels** : Insérez des codes promotionnels uniques générés par un service backend.

#### Prérequis

*   Pour utiliser le Contenu Connecté, vous devez avoir votre propre service backend qui génère et fournit les données requises (par ex., codes promotionnels, recommandations de produits) en fonction de l'**ID utilisateur, du HWID ou de tags personnalisés**. Pushwoosh récupère ensuite ces données avant d'envoyer un message.

### Guide de mise en œuvre étape par étape

<Aside type="caution" icon="setting" title="Assistance d'un développeur requise">
Vous aurez besoin de l'aide de votre équipe de développement pour utiliser le contenu connecté. Partagez ce guide avec eux pour commencer.
</Aside>

#### Étape 1. Configurer le service backend

Le service backend doit :

*   Accepter une requête contenant des paramètres spécifiques à l'utilisateur (par ex., `userId`). Le Contenu Connecté prend en charge `UserID`, `HWID`, ou tout tag personnalisé que vous avez configuré dans votre projet.
*   Retourner une réponse JSON avec les données requises. Ce contenu peut ensuite être inséré dynamiquement dans les messages.

<Aside type="note" title="Comment ça marche">

Le service backend agit comme un fournisseur de données, répondant aux requêtes HTTP avec des informations spécifiques à l'utilisateur.

1.  Pushwoosh envoie une requête à votre backend, en passant des identifiants spécifiques à l'utilisateur comme paramètres de requête.
2.  Votre backend traite la requête et récupère les données demandées.
3.  Votre backend retourne une réponse JSON.
4.  Avant d'envoyer un message, Pushwoosh récupère la réponse JSON du service backend et utilise les valeurs retournées (par ex., le `code`) dynamiquement dans le contenu du message.

**Exemple de réponse**

```
{ "code": "SPECIALOFFERFORUSER12345" }
```
</Aside>

#### Étape 2. Créer un préréglage avec du Contenu connecté dans Pushwoosh

1.  Dans l'éditeur de contenu [Push](/fr/product/content/push-presets/) ou [d'e-mail](/fr/product/content/email-content/drag-and-drop-email-editor/), insérez la syntaxe du Contenu Connecté dans le champ du message.

**Exemple**

```
{% connected_content http://your-backend-url.com?userId={{ ${userid} }} :save result %}  
```
**Décomposition de la syntaxe**
| | |
| ----- | ----- |
| `connected_content` | Récupère les données JSON de l'URL backend spécifiée. |
| `http://your-backend-url.com` | Le point de terminaison backend qui retourne les données requises au format JSON. |
| `userId={{ ${userid} }}` | Un paramètre de requête dynamique qui passe l'ID utilisateur au backend. |
| `:save result` | Stocke la réponse JSON récupérée dans la variable `result` pour une utilisation dans les modèles Liquid. |

![Insérer la syntaxe du Contenu Connecté](/connectedcontent.webp)

**Authentification (optionnel)**

Si votre service backend nécessite une authentification, vous pouvez inclure une clé API ou un jeton dans la requête de Contenu Connecté pour garantir un accès sécurisé.

```
{% connected_content http://your-backend-url.com?userId={{ ${userid} }}&auth=YOUR_API_KEY :save result %}  
```

Vous pouvez également envoyer des données d'authentification (ou toute autre donnée) sous forme d'en-têtes HTTP en utilisant le paramètre optionnel `:headers` — un objet JSON de noms et de valeurs d'en-têtes.

```
{% connected_content http://your-backend-url.com?userId={{ ${userid} }} :headers {"Authorization": "Bearer YOUR_TOKEN", "X-Api-Key": "YOUR_API_KEY"} :save result %}  
```
| | |
| ----- | ----- |
| `:headers {...}` | Un objet JSON d'en-têtes HTTP envoyés avec la requête, par ex. `Authorization: Bearer <token>`. |

<Aside type="caution" title="Valeurs statiques uniquement">
Les variables de personnalisation `${}` ne fonctionnent qu'à l'intérieur de l'URL. Les valeurs à l'intérieur de `:headers` sont statiques et ne sont pas interpolées.
</Aside>

<Aside type="danger" title="Ne mettez pas d'identifiants dans l'URL">
Préférez `:headers` à un paramètre de requête URL (par ex. `&auth=YOUR_API_KEY`) pour les clés API et les jetons : si la récupération échoue, l'URL de la requête est écrite dans les journaux, exposant une clé qui y est placée. Les valeurs à l'intérieur de `:headers` ne sont jamais journalisées.

Le contenu connecté nécessite également que les modèles de contenu Liquid soient activés pour votre compte. Si ce n'est pas le cas, l'ensemble du tag `connected_content` — y compris toute clé à l'intérieur — est envoyé à chaque destinataire sous forme de texte littéral au lieu d'être rendu. Contactez le [Support Pushwoosh](https://help.pushwoosh.com/hc/en-us/requests/new) si vous n'êtes pas sûr que votre compte ait cette fonctionnalité activée.
</Aside>

**Utiliser des tags dans le Contenu connecté**

Pour inclure des tags personnalisés, insérez-les comme paramètres de requête dans la requête de **Contenu Connecté** (`{{ tag_name }}`).

```
{% connected_content http://your-backend-url.com?userId={{ ${userid} }}{{ Language }} :save result %} 
```

2.  Ensuite, ajoutez le texte du message en incorporant les **données récupérées**, comme ceci :

```

Hey, {{userid}}, grab your personal promo code - {{result.code}} 
```

![Ajouter le texte du message avec les **données récupérées**](/connectedcontent-1.webp)

3.  Après avoir finalisé le contenu du message et configuré les paramètres du préréglage, enregistrez-le pour le réutiliser dans les campagnes.

<video src="/connectedcontent-2.webm" title="Envoyer un message avec du contenu connecté" autoplay loop muted playsinline />

#### Étape 3. Envoyer un message en utilisant le préréglage configuré

Envoyez un message avec ce préréglage en utilisant le [push ponctuel](/fr/product/messaging-channels/push-notifications/send-push-notifications/one-time-push/#how-to-send-a-push-notification-using-the-one-time-push-form) ou le [formulaire d'e-mail](/fr/product/messaging-channels/emails/sending-emails/send-one-time-emails/) ou un [customer journey](/fr/product/customer-journey/pushwoosh-journey-overview/).

<Aside type="caution" title="Important">
Si le service renvoie un statut autre que HTTP 200 OK, l'e-mail ou la notification push ne sera pas envoyé. Cela garantit que votre communication n'est envoyée que si les données nécessaires sont récupérées avec succès.
</Aside>