> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Contenu dynamique avec CSV

> Personnalisez les messages push, e-mail et SMS à grande échelle avec le contenu dynamique, les téléchargements CSV et la syntaxe Liquid dans OneSignal.

OneSignal fournit plusieurs façons de [personnaliser le contenu des messages](./message-personalization) à grande échelle. Ce guide se concentre sur l'utilisation de la fonctionnalité de contenu dynamique avec téléchargement CSV disponible dans le tableau de bord OneSignal pour les push, e-mails et SMS.

**Avantages clés :**

* **Utilisez un CSV pour personnaliser à grande échelle** – Un message, des expériences personnalisées pour tous
* **Support multilingue** – Changement de langue automatique par utilisateur
* **Personnalisation dynamique** – Le contenu s'adapte aux propriétés de l'utilisateur (langue, région, ID de campagne)
* **Collaboration en équipe** – Les utilisateurs non techniques modifient le contenu dans les fichiers CSV
* **Injection HTML (e-mail)** – Incluez du balisage HTML dans les cellules CSV pour créer dynamiquement du contenu d'e-mail enrichi
* **Compatibilité multicanal** – Réutilisez la logique CSV entre les canaux

**Cas d'usage courants :**

* Intégration ou marketing multilingue
* Promotions spécifiques par région
* Annonces d'événements par lieu
* Personnalisation basée sur les campagnes

***

## Étapes de configuration du contenu dynamique avec CSV

**Référence rapide :**

1. Créez un fichier CSV avec vos variations de contenu.
2. Mappez les données CSV au message en utilisant la propriété `dynamic_content` dans la syntaxe Liquid.
3. Créez un nouveau message ou [modèle](./templates) depuis le tableau de bord OneSignal.
4. Sélectionnez le bouton **Contenu dynamique** ou **Personnalisation**.
5. Téléchargez le fichier CSV et envoyez le message.

### Exigences et configuration CSV

* **Taille du fichier :** Moins de 200 Ko
* **En-têtes de colonne :**
  * Réservez le premier en-tête de colonne pour la clé de balise ou laissez vide pour référencer des sections
  * Caractères alphanumériques et underscores uniquement
  * Utilisez des underscores (`_`) au lieu d'espaces
* **Encodage :** UTF-8

Commencez avec un CSV vierge ou utilisez un modèle fourni. Les modèles sont fournis lors de la sélection du bouton **Contenu dynamique** ou **Personnalisation** dans les éditeurs de messages et de modèles.

<Frame caption="Bouton de contenu dynamique trouvé dans l'éditeur de messages.">
  <img src="https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/772f91e24ebca83a05d4e96819a41ec58d5ca0acd3a715e971c4a43ba7654494-Screenshot_2025-02-10_at_5.23.32_PM.png?fit=max&auto=format&n=jBdBk5XvQR5eKOks&q=85&s=c51a6fcb07f7aab797cbfe74423530cb" alt="Bouton de contenu dynamique dans l'éditeur de messages OneSignal" width="1960" height="380" data-path="images/docs/772f91e24ebca83a05d4e96819a41ec58d5ca0acd3a715e971c4a43ba7654494-Screenshot_2025-02-10_at_5.23.32_PM.png" />
</Frame>

Modèles disponibles :

* **Multilingue** – Localisez le contenu par langue
* **Personnalisation du contenu** – Personnalisez le contenu par balises de données

<Frame caption="Options de modèle CSV dans le tableau de bord OneSignal.">
  <img src="https://mintcdn.com/onesignal/YOTSrtBSoqdrJ37A/images/docs/47f48b79aa100bd5d2c59a418216bafba75daaa92d0bf939dcd3ccceca39cd7c-Screenshot_2025-02-10_at_5.26.15_PM.png?fit=max&auto=format&n=YOTSrtBSoqdrJ37A&q=85&s=87947eb40093580c8589cf7eb4183564" alt="Options de modèle CSV affichant les modèles multilingues et de personnalisation de contenu" width="1986" height="870" data-path="images/docs/47f48b79aa100bd5d2c59a418216bafba75daaa92d0bf939dcd3ccceca39cd7c-Screenshot_2025-02-10_at_5.26.15_PM.png" />
</Frame>

#### Exemples de CSV

Ce guide utilisera les exemples de données CSV suivants.

<Tabs>
  <Tab title="Exemple de modèle multilingue">
    * Mappez les en-têtes de colonne à vos [codes de langue pris en charge](./multi-language-messaging#supported-languages).
    * Ajoutez vos traductions à chaque ligne pour chaque code de langue.
    * Si vous avez plusieurs sections (comme dans un e-mail), désignez la première colonne comme le nom de la section.

    Cet exemple comprend :

    * 3 langues : anglais, espagnol et français.
    * 2 sections : « section\_1 » et « section\_2 ».

    <Frame caption="CSV multilingue correspondant l'attribut de langue de l'utilisateur au contenu (similaire à RECHERCHEV).">
      <img src="https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/8716e43deead16759c2500d85900d2d1be8b6a9c51e0477160569b05534a58fb-Screenshot_2025-02-10_at_8.37.25_PM.png?fit=max&auto=format&n=0qspEXXeJ8zJbkJ-&q=85&s=4a20651cf2949bad117b8a9fda432536" alt="CSV multilingue avec codes de langue comme en-têtes de colonne et contenu traduit dans les lignes" width="1438" height="220" data-path="images/docs/8716e43deead16759c2500d85900d2d1be8b6a9c51e0477160569b05534a58fb-Screenshot_2025-02-10_at_8.37.25_PM.png" />
    </Frame>
  </Tab>

  <Tab title="Exemple de modèle de personnalisation de contenu">
    * Mappez le premier en-tête de colonne à la clé de balise et les lignes sous-jacentes aux valeurs que vous souhaitez référencer. Voir [Balises](./add-user-data-tags) pour plus d'informations sur l'ajout de balises aux utilisateurs.
    * Mappez les en-têtes de colonne restants aux sections ou composants que vous souhaitez personnaliser.

    Dans cet exemple :

    * La clé de balise est `campaign_id` avec des valeurs possibles de `A` et `B`.
    * Il y a 3 composants : « title », « message » et « url ».

    <Frame caption="CSV de personnalisation utilisant la balise de données campaign_id.">
      <img src="https://mintcdn.com/onesignal/3zq1PvSaqvUE2bIx/images/docs/2d49628c7c891801e50b7f397442f5887e7b776897d24788be16887ed191f631-Screenshot_2025-04-10_at_9.47.35_AM.png?fit=max&auto=format&n=3zq1PvSaqvUE2bIx&q=85&s=23ec0fe2224cc3103e7a7c62168dd050" alt="CSV de personnalisation de contenu utilisant la balise campaign_id avec les colonnes title, message et url" width="1406" height="160" data-path="images/docs/2d49628c7c891801e50b7f397442f5887e7b776897d24788be16887ed191f631-Screenshot_2025-04-10_at_9.47.35_AM.png" />
    </Frame>

    <Warning>
      **Important :** Supprimez les espaces et les caractères non alphanumériques des en-têtes CSV
      ou utilisez la notation hash dans Liquid.
    </Warning>

    <Frame caption="Exemple de CSV détaillé utilisant la syntaxe Liquid pour référencer les balises.">
      <img src="https://mintcdn.com/onesignal/tc0EvmtSSX56SX0c/images/docs/9352ff1-event_translation.csv.png?fit=max&auto=format&n=tc0EvmtSSX56SX0c&q=85&s=e71b92286f500fc201b95bafa2b38a85" alt="Exemple de CSV détaillé montrant les références de syntaxe Liquid pour la personnalisation basée sur les balises" width="3189" height="2646" data-path="images/docs/9352ff1-event_translation.csv.png" />
    </Frame>
  </Tab>
</Tabs>

### Mapper les données CSV au contenu du message

En utilisant la [syntaxe Liquid](./using-liquid-syntax), référencez les données CSV dans votre message en utilisant la propriété `dynamic_content` :

```liquid theme={null}
<!-- Option 1 : accéder par composant en premier -->
{{dynamic_content.file_name.message_component[user_property]}}

<!-- Option 2 : accéder par propriété utilisateur en premier -->
{{dynamic_content.file_name[user_property].message_component}}
```

**Paramètres :**

* `dynamic_content` – Le nom de la propriété utilisé pour référencer les données CSV
* `file_name` – Nom du fichier CSV (sans extension `.csv`)
* `message_component` – Le composant de message spécifique que vous souhaitez personnaliser. C'est le texte statique dans l'en-tête de colonne CSV ou la première ligne.
* `user_property` – La [propriété utilisateur](./message-personalization#properties) que vous souhaitez référencer.

**Contenu de secours :**

Utilisez toujours des secours de chaîne `default` codés en dur pour vous assurer que les messages s'affichent si la recherche CSV ou le contenu dynamique échoue.

```liquid Syntaxe Liquid pour le secours theme={null}
{{ dynamic_content.my_template.header[user.language] | default: "Bienvenue dans notre dernière mise à jour" }}
```

Cela signifie que si la recherche CSV ou le contenu dynamique échoue, le message affichera le texte de secours `"Bienvenue dans notre dernière mise à jour"`.

Cela garantit :

* Le contenu dynamique est utilisé lorsqu'il est disponible
* Un message codé en dur apparaît si le contenu dynamique échoue
* Les utilisateurs ne reçoivent jamais de contenu vide

<Tabs>
  <Tab title="Exemple de message multilingue">
    ```csv translations.csv theme={null}
    ,en,es,fr
    section_1,Hello,Hola,Bonjour
    section_2,Thanks for shopping with us...,Gracias por comprar con nosotros...,Merci pour votre achat avec nous...
    ```

    * Le `file_name` est `translations.csv`.
    * Le `message_component` est dans les lignes de la première colonne `section_1` et `section_2`.
    * Le `user_property` est l'en-tête de colonne correspondant au code de langue. Nous pouvons le référencer sur l'utilisateur avec la [propriété](./message-personalization#properties) `user.language`.

    ```liquid Syntaxe Liquid de base pour le message multilingue theme={null}
    {{dynamic_content.translations.section_1[user.language]}}
    {{dynamic_content.translations.section_2[user.language]}}
    ```

    ```liquid (Recommandé) Syntaxe Liquid avec secours par défaut pour le message multilingue theme={null}
    {% assign supported_langs = "en,es,fr,de" | split: "," %}
    {% assign lang = user.language | default: "en" %}

    {% unless supported_langs contains lang %}
      {% assign lang = "en" %}
    {% endunless %}

    {{ dynamic_content.translations.section_1[lang] | default: "Hello" }}
    {{ dynamic_content.translations.section_2[lang] | default: "Thanks for shopping with us..." }}
    ```

    <Frame caption="Ajout de la syntaxe Liquid pour le contenu d'e-mail multilingue.">
      <img src="https://mintcdn.com/onesignal/4HyuQPBpu-4xjmQC/images/docs/d0df135475c202308b5b5e40f3893f1beff6d7d387a99e9264c5c5936283d699-Screenshot_2025-02-10_at_10.08.20_PM.png?fit=max&auto=format&n=4HyuQPBpu-4xjmQC&q=85&s=bb3aaec56a1bcca6e1400b096a5550b7" alt="Éditeur d'e-mail OneSignal avec syntaxe Liquid pour le contenu dynamique multilingue" width="1062" height="446" data-path="images/docs/d0df135475c202308b5b5e40f3893f1beff6d7d387a99e9264c5c5936283d699-Screenshot_2025-02-10_at_10.08.20_PM.png" />
    </Frame>
  </Tab>

  <Tab title="Exemple de message de personnalisation de contenu">
    ```csv content_personalization_template.csv theme={null}
    campaign_id,title,message,url
    campaign_123,Flash deal for you,Tap to claim,https://example.com/flash
    campaign_456,Weekend picks are here,See what's trending,https://example.com/weekend
    default,Our latest offers,See what's new,https://example.com
    ```

    * Le `file_name` est `content_personalization_template.csv`.
    * Le `user_property` correspond à la clé de balise : `campaign_id`.
    * Le `message_component` est l'en-tête de colonne mappé à la section du message que vous souhaitez personnaliser (title, message ou url).

    ```liquid Syntaxe Liquid pour le message de personnalisation de contenu theme={null}
    {{ dynamic_content.content_personalization_template[campaign_id].title }}
    {{ dynamic_content.content_personalization_template[campaign_id].message }}
    {{ dynamic_content.content_personalization_template[campaign_id].url }}
    ```

    ```liquid (Recommandé) Syntaxe Liquid avec secours par défaut pour le message de personnalisation de contenu theme={null}
    {% assign cid = campaign_id | default: "default" %}

    {% unless dynamic_content.content_personalization_template[cid] %}
      {% assign cid = "default" %}
    {% endunless %}

    {{ dynamic_content.content_personalization_template[cid].title | default: "Nos dernières offres" }}
    {{ dynamic_content.content_personalization_template[cid].message | default: "Voir les nouveautés" }}
    {{ dynamic_content.content_personalization_template[cid].url | default: "https://example.com" }}
    ```

    <Frame caption="Ajout de la syntaxe Liquid pour la personnalisation push basée sur les campagnes.">
      <img src="https://mintcdn.com/onesignal/tNi1OgLc_p9hiq7_/images/docs/1c80cff787617df73a16bd4858446a07db6af84f4d79404c4a2ad34e3e509876-Screenshot_2025-02-10_at_9.53.13_PM.png?fit=max&auto=format&n=tNi1OgLc_p9hiq7_&q=85&s=37a96d318756adc6b0f2a35aecc20c92" alt="Exemple Liquid de personnalisation de contenu dynamique" width="1774" height="1018" data-path="images/docs/1c80cff787617df73a16bd4858446a07db6af84f4d79404c4a2ad34e3e509876-Screenshot_2025-02-10_at_9.53.13_PM.png" />
    </Frame>
  </Tab>
</Tabs>

<Check>
  Utilisez Liquid avec secours `default` pour mettre à jour les lignes d'objet, les pré-en-têtes, les étiquettes de boutons
  et les URL.
</Check>

### Utiliser du HTML dans les cellules CSV (e-mail uniquement)

Vous pouvez inclure du balisage HTML directement dans les cellules CSV pour injecter du contenu enrichi dans les e-mails. Cela est utile pour remplacer des sections entières d'un e-mail — telles que des bannières, des CTAs ou des blocs stylisés — selon les propriétés de l'utilisateur.

```csv promo_banners.csv theme={null}
campaign_id,banner_html
spring_sale,<div style="background:#4CAF50;padding:16px;text-align:center;"><a href="https://example.com/spring" style="color:#fff;font-size:18px;">Shop the Spring Sale</a></div>
default,<div style="background:#333;padding:16px;text-align:center;"><a href="https://example.com" style="color:#fff;font-size:18px;">See What's New</a></div>
```

Référencez la cellule HTML dans votre modèle d'e-mail :

```liquid theme={null}
{{ dynamic_content.promo_banners[campaign_id].banner_html | default: "<p>Check out our latest offers</p>" }}
```

Le HTML s'affiche directement dans le corps de l'e-mail, vous pouvez donc utiliser tous les styles en ligne et le balisage pris en charge par les clients de messagerie.

<Warning>
  Le HTML des cellules CSV n'est pris en charge que dans les e-mails. Les canaux push et SMS affichent le contenu en texte brut et n'interprètent pas le balisage HTML.
</Warning>

***

## Référence

### Mise à jour des modèles

Retéléchargez les CSV via le tableau de bord ou utilisez la propriété `dynamic_content` de l'[API de mise à jour de modèle](/reference/update-template).

### Caractères spéciaux dans les clés

**Notation hash** (pour les clés non alphanumériques) :

```liquid theme={null}
{{ dynamic_content.file_name["!the_row!"]["&the_column&"] }}
```

**Notation par points** (pour les clés standard) :

```liquid theme={null}
{{ dynamic_content.file_name.the_row.the_column }}
```

***

## FAQ

### Comment puis-je tester le contenu dynamique avec CSV ?

Utilisez l'e-mail pour tester plusieurs variations du message.

* Utilisez l'adressage `+` dans les e-mails pour tester plusieurs variations : `username+test@example.com`.
* Définissez les balises en suivant les exemples multilingues et de personnalisation de contenu ci-dessus.
* Voir [Importer](./import) pour plus d'informations sur le téléchargement de plusieurs utilisateurs et balises de données.

### Quand utiliser le contenu dynamique avec CSV vs. d'autres options de personnalisation ?

Utilisez le **contenu dynamique avec CSV** lorsque vous envoyez des messages depuis le tableau de bord et que vous avez des données utilisateur dans un fichier CSV. Pour d'autres façons d'ajouter du contenu dynamique aux messages, consultez [Personnalisation des messages](./message-personalization) ou [Messagerie multilingue](./multi-language-messaging).

***

## Pages connexes

<Columns cols={2}>
  <Card title="Personnalisation des messages" icon="wand-magic-sparkles" href="./message-personalization">
    Vue d'ensemble de toutes les options de personnalisation disponibles dans OneSignal.
  </Card>

  <Card title="Utilisation de la syntaxe Liquid" icon="code" href="./using-liquid-syntax">
    Référence complète de la syntaxe Liquid pour les messages OneSignal.
  </Card>

  <Card title="Importer" icon="file-import" href="./import">
    Télécharger les données utilisateur et les segments vers OneSignal.
  </Card>

  <Card title="Modèles" icon="clone" href="./templates">
    Créer des modèles de messages réutilisables.
  </Card>
</Columns>
