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

# Bases de datos y listas

> Crea, gestiona y consume bases de datos en Shimli para campañas, automatizaciones y agentes de IA.

Las bases de datos en Shimli son **internas y personalizables**. Se usan para:

* **Campañas masivas** de WhatsApp, SMS y correo — la lista de contactos a quién enviar.
* **Automatizaciones** (flow builder) — los agentes de IA pueden leer y escribir datos.
* **Inbox** — los agentes humanos pueden llenar datos durante conversaciones.
* **API** — consumir desde sistemas externos.

## Crear una base de datos

Hay dos formas de crear una base de datos:

<Tabs>
  <Tab title="Desde archivo CSV/Excel">
    <Steps>
      <Step title="Ve a Database → Nueva base de datos">
        Selecciona la opción de subir archivo.
      </Step>

      <Step title="Sube tu archivo CSV o Excel">
        Shimli detecta automáticamente las columnas y los títulos (headers) de cada una.
      </Step>

      <Step title="Mapea los campos">
        Este es el paso más importante. Para cada columna del archivo, defines:

        * **Descripción**: el nombre de variable con el que se consumirá el dato (ej: `name`, `phone`, `brand`).
        * **Tipo**: texto corto, número, teléfono, imagen, etc.
        * **Requerido**: si es obligatorio o no.

        El mapeo le dice a Shimli de dónde obtener cada dato. Por ejemplo: "el campo `name` se obtiene de la columna `nombre` del Excel".
      </Step>

      <Step title="Finaliza">
        La base de datos se crea y los datos se importan. Toma unos minutos.
      </Step>
    </Steps>
  </Tab>

  <Tab title="Manualmente">
    <Steps>
      <Step title="Ve a Database → Nueva base de datos">
        Selecciona construir manualmente.
      </Step>

      <Step title="Define el nombre y descripción">
        Pon un nombre claro y una descripción del propósito de la base de datos.
      </Step>

      <Step title="Agrega campos uno por uno">
        Para cada campo defines: descripción (nombre de variable), tipo y si es requerido.
      </Step>

      <Step title="Finaliza">
        La base de datos queda creada vacía. Luego puedes agregar elementos manualmente o importar datos.
      </Step>
    </Steps>
  </Tab>
</Tabs>

## Tipos de campo disponibles

| Tipo                   | Uso                                                            |
| ---------------------- | -------------------------------------------------------------- |
| **Texto corto**        | Nombres, títulos, valores cortos                               |
| **Texto largo**        | Descripciones, notas                                           |
| **Número**             | Cantidades, montos, IDs numéricos                              |
| **Teléfono**           | Números de teléfono (con código de país)                       |
| **Correo electrónico** | Emails                                                         |
| **URL**                | Enlaces                                                        |
| **Fecha**              | Fechas sin hora                                                |
| **Fecha y hora**       | Timestamps completos                                           |
| **Imagen**             | Subir imagen (URL o archivo)                                   |
| **Archivo**            | Documentos                                                     |
| **Tabla**              | Sub-campos anidados (ej: productos con precio mensual y anual) |

<Callout type="info">
  El tipo **Tabla** permite crear campos anidados dentro de un campo. Por ejemplo, un campo "producto" que contiene sub-campos "precio\_mensual" y "precio\_anual". Útil para estructuras complejas.
</Callout>

## Gestionar una base de datos

Desde la vista de configuración de cada base de datos puedes:

* **Configurar**: ver el contenido y agregar elementos manualmente.
* **Editar estructura**: agregar, eliminar o reordenar campos.
* **Subir desde archivo**: importar datos desde CSV/Excel (respeta la estructura existente).
* **Exportar con filtro**: descargar la base de datos, opcionalmente filtrada por campos.
* **Eliminar todos los datos**: vacía la base de datos pero mantiene la estructura.
* **Publicar formulario**: genera un formulario público que llena la base de datos.

## Formularios públicos

Cada base de datos puede generar un **formulario público** con los campos que definiste. Esto te permite:

* Capturar leads desde una landing page sin programar.
* Compartir un enlace donde los clientes llenan sus datos.
* Los datos entran directamente a la base de datos de Shimli.

<Callout type="info">
  El formulario se genera automáticamente a partir de la estructura de la base de datos. Cada campo se convierte en una pregunta del formulario.
</Callout>

## Consumir la base de datos

Las bases de datos se consumen desde múltiples lugares:

| Donde se consume     | Cómo                                                                         |
| -------------------- | ---------------------------------------------------------------------------- |
| **Campañas masivas** | Seleccionas la BD como lista de envío y mapeas la columna de teléfono        |
| **Flow builder**     | Los agentes de IA leen y escriben datos en la BD durante automatizaciones    |
| **Inbox**            | Los agentes humanos pueden llenar datos del contacto durante la conversación |
| **API**              | Endpoints de Contact para leer y escribir vía REST                           |

## Mapeo de campos en campañas

Cuando usas una base de datos en una campaña, el mapeo de campos es crítico:

* **Columna de teléfono**: Shimli detecta automáticamente si hay una columna llamada `teléfono` o `phone`. Si tiene otro nombre, puedes seleccionarla manualmente.
* **Variables del template**: las variables del template de WhatsApp se rellenan con los campos de la base de datos. Por ejemplo, la variable `{{1}}` se puede mapear al campo `name`.

<Callout type="warning">
  Los números de teléfono en la base de datos deben incluir el **código de país**, sin espacios ni caracteres especiales. Ejemplo: `50499999999`, no `+504 9999-9999`.
</Callout>

<Accordions>
  <Accordion title="¿Puedo tener una base de datos con miles de contactos?">
    Sí. Las bases de datos de Shimli manejan desde decenas hasta miles de contactos. Para envíos masivos muy grandes, usa la opción de rango para enviar por lotes.
  </Accordion>

  <Accordion title="¿Puedo actualizar la base de datos desde mi CRM externo?">
    Sí. Usa la [API de Contactos](/api-reference/contacts/insert-contact) para insertar contactos programáticamente, o sube un CSV actualizado que respete la estructura existente.
  </Accordion>

  <Accordion title="¿Qué pasa si elimino todos los datos pero mantengo la estructura?">
    La base de datos queda vacía pero con todos sus campos intactos. Puedes volver a importar datos en cualquier momento sin tener que recrear la estructura.
  </Accordion>
</Accordions>
