---
title: "Personalizar flow con Remote Config"
description: "Personaliza tu flow de Flow Builder con un payload JSON de Remote Config."
---

:::important
Esta guía cubre Remote Config para Flow Builder. Para paywalls clásicos creados sin Flow Builder, consulta [Diseñar paywall con Remote Config](customize-paywall-with-remote-config).
:::
Remote Config te permite almacenar un payload JSON personalizado que el SDK lee en tiempo de ejecución. Úsalo para definir valores como títulos, imágenes, fuentes, colores o indicadores de funcionalidades sin publicar una nueva versión de la app.
## Trabajar con Remote Config \{#work-with-remote-config\}

Para abrir el Remote Config de un flow, haz clic en el icono Remote Config que aparece encima de la vista previa de pantalla en el editor del flow.

En la vista **JSON**, puedes introducir cualquier dato en formato JSON. El editor muestra una columna por cada idioma que hayas añadido:

Puedes acceder a estos datos más adelante desde el SDK a través del array `remoteConfigs` en `AdaptyFlow`. Adapty almacena una entrada `AdaptyRemoteConfig` por idioma; selecciona la que coincida con el idioma de tu usuario y lee el `dictionary` procesado o el `jsonString` sin procesar para ajustar tu flow en tiempo de ejecución. A continuación, algunos ejemplos de cómo puedes usar un Remote Config.
<Tabs>
  <TabItem value="Titles" label="Títulos" default>
```json showLineNumbers
{
    "screen_title": "Today only: Subscribe, and get 7 days for free!"
}

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

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

# Test fonts
```
</TabItem>
<TabItem value="Color" label="Color">
```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="Paywall Suave/Estricto">
```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="Traducciones">
```json showLineNumbers
{
    "title": {
        "en": "Try for free!",
        "es": "¡Prueba gratis!",
        "ru": "Попробуй бесплатно!"
    }
}
```
</TabItem>
</Tabs>
Puedes combinar cualquiera de estos patrones, o definir tus propias claves para probar textos alternativos, diseños o comportamientos.

A continuación, [crea un placement](create-placement) y añádele el flow. Luego [muestra el flow en tu app de iOS](present-remote-config-paywalls).
## Añadir una configuración regional \{#add-a-locale\}

Para localizar tu flow, haz clic en **Add locale** sobre el editor y selecciona las configuraciones regionales.

Adapty añade una nueva columna en el editor para esa configuración regional. Edita cada columna de forma independiente — en tiempo de ejecución, el SDK devuelve la entrada `AdaptyRemoteConfig` cuyo `locale` coincide con la selección del usuario.

## Importar y exportar JSON \{#import-and-export-json\}

Usa el menú **Import/Export** situado sobre el editor para hacer copias de seguridad, compartir o editar en bloque tu Remote Config en todos los idiomas a la vez.

- **Export JSON**: descarga un único archivo JSON con todos los idiomas incluidos.
- **Import JSON**: sube un archivo JSON en el mismo formato. El archivo subido reemplaza el Remote Config actual.

El archivo usa códigos de idioma como claves de nivel superior, con el contenido de cada idioma como valor:
```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"]
  }
}
```

Cada bloque de idioma sigue la misma estructura JSON que introducirías directamente en una columna de idioma.