---
title: "Personnaliser un flow avec Remote Config"
description: "Personnalisez votre flow Flow Builder avec un payload JSON Remote Config."
---

:::important
Ce guide concerne le Remote Config pour Flow Builder. Pour les paywalls classiques créés sans Flow Builder, consultez [Concevoir un paywall avec Remote Config](customize-paywall-with-remote-config).
:::

Remote Config vous permet de stocker un payload JSON personnalisé que le SDK lit au moment de l'exécution. Utilisez-le pour définir des valeurs comme les titres, les images, les polices, les couleurs ou les feature flags sans publier une nouvelle version de l'application.

## Utiliser le Remote Config \{#work-with-remote-config\}

Pour ouvrir le Remote Config d'un flow, cliquez sur l'icône Remote Config au-dessus de l'aperçu de l'écran dans l'éditeur de flow.

Dans la vue **JSON**, vous pouvez saisir n'importe quelle donnée au format JSON. L'éditeur affiche une colonne par locale ajoutée :

:::warning
Si le Remote Config contient du JSON invalide, vous ne pourrez ni **sauvegarder** ni **publier** le flow. Consultez [Sauvegarder et publier des flows](builder-save-publish#troubleshooting) pour la liste complète des problèmes qui bloquent l'aperçu et la publication.
:::

Vous pouvez ensuite accéder à ces données depuis le SDK via le tableau `remoteConfigs` de `AdaptyFlow`. Adapty stocke une entrée `AdaptyRemoteConfig` par locale ; sélectionnez celle qui correspond à la locale de l'utilisateur et lisez soit le `dictionary` parsé, soit le `jsonString` brut pour ajuster votre flow au moment de l'exécution. Voici quelques exemples d'utilisation d'un Remote Config.

<Tabs>
  <TabItem value="Titles" label="Titres" default>
```json showLineNumbers
{
    "screen_title": "Today only: Subscribe, and get 7 days for free!"
}

# Test titles or other texts
```
</TabItem>
<TabItem value="Images" label="Images">
```json showLineNumbers
{
    "background_image": "https://adapty.io/media/paywalls/bg1.webp"
}

# Test images on your flow
```
</TabItem>
<TabItem value="Fonts" label="Polices">
```json showLineNumbers
{
    "font_family": "San Francisco",
    "font_size": 16
}

# Test fonts
```
</TabItem>
<TabItem value="Color" label="Couleur">
```json showLineNumbers
{
    "subscribe_button_color": "purple"
}

# Test colors of buttons, texts etc.
```
</TabItem>
<TabItem value="HTML" label="HTML">
```json showLineNumbers
{
    "photo_gallery": "https://adapty.io/media/paywalls/link-to-html-snippet.html"
}

# Any HTML code that can be displayed in the flow
```
</TabItem>
<TabItem value="Soft/Hard Paywall" label="Soft/Hard Paywall">
```json showLineNumbers
{
    "hard_paywall": true
}

# By setting it to true, you disallow skipping the paywall without subscribing
# You have to handle this logic in your app
```
</TabItem>
<TabItem value="Translations" label="Traductions">
```json showLineNumbers
{
    "title": {
        "en": "Try for free!",
        "es": "¡Prueba gratis!",
        "ru": "Попробуй бесплатно!"
    }
}
```
</TabItem>
</Tabs>

Vous pouvez combiner ces patterns comme vous le souhaitez, ou définir vos propres clés pour tester d'autres textes, mises en page ou comportements.

Ensuite, [créez un placement](create-placement) et ajoutez-y le flow. Puis affichez le flow dans votre application : [iOS](present-remote-config-paywalls) ou [Android](present-remote-config-paywalls-android).

## Ajouter une locale \{#add-a-locale\}

Pour localiser votre flow, cliquez sur **Add locale** au-dessus de l'éditeur et sélectionnez des locales.

Adapty ajoute une nouvelle colonne à l'éditeur pour cette locale. Modifiez chaque colonne indépendamment — au moment de l'exécution, le SDK retourne l'entrée `AdaptyRemoteConfig` dont la `locale` correspond à la sélection de l'utilisateur.

## Importer et exporter du JSON \{#import-and-export-json\}

Utilisez le menu **Import/Export** au-dessus de l'éditeur pour sauvegarder, partager ou modifier en masse votre Remote Config pour toutes les locales en même temps.

- **Export JSON** : Télécharge un fichier JSON unique contenant toutes les locales.
- **Import JSON** : Charge un fichier JSON dans le même format. Le fichier importé remplace le Remote Config actuel.

Le fichier utilise les codes de locale comme clés de premier niveau, avec le payload de chaque locale comme valeur :

```json showLineNumbers
{
  "en": {
    "title": "Get Premium",
    "cta": "Continue",
    "trial_days": 7,
    "features": ["sync", "export", "ai"]
  },
  "fr": {
    "title": "Passez à Premium",
    "cta": "Continuer",
    "trial_days": 7,
    "features": ["synchronisation", "exportation", "IA"]
  }
}
```

Chaque bloc de locale suit la même structure JSON que vous saisiriez directement dans une colonne de locale.