# Campos personalizados

> Define campos personalizados para tus contactos, establece sus valores desde el panel, las importaciones y la API, y úsalos en filtros, etiquetas de combinación de campañas y automatizaciones.

Los campos personalizados guardan datos adicionales en cada contacto, como el nombre de la empresa, un plan o un cumpleaños. Defines los campos una vez para el espacio de trabajo y después los rellenas en los contactos y los usas para filtrar contactos, personalizar campañas e iniciar automatizaciones.

## Tipos de campo

| Tipo | Valor guardado | Ejemplo | Campo en el panel |
| --- | --- | --- | --- |
| **Text** | Cadena | `"Acme"` | Cuadro de texto |
| **Number** | Número | `42` | Cuadro numérico |
| **Date** | Fecha de calendario, `YYYY-MM-DD` | `"1990-04-12"` | Selector de fecha |
| **Boolean** | `true` o `false` | `true` | Casilla |
| **Select** | Una opción | `"pro"` | Desplegable |
| **Multi select** | Array de opciones | `["news", "offers"]` | Desplegable de selección múltiple |

Cada campo tiene un **nombre**, que muestra el panel, y una **clave**, que usan la API, las importaciones, los filtros y las etiquetas de combinación. Los valores se guardan en el contacto como un objeto JSON indexado por la clave del campo:

```json
{
  "company": "Acme",
  "plan": "pro",
  "birthday": "1990-04-12",
  "interests": ["news", "offers"]
}
```

## Crear un campo personalizado

1. **Abre Custom fields.** Ve a **Workspace → Settings → Custom fields** y selecciona **Add custom field**.

2. **Ponle nombre al campo.** Introduce un **Name**, por ejemplo `Company size`. Emailit genera la clave automáticamente a partir del nombre: en minúsculas y con cada secuencia de otros caracteres sustituida por `_`, así que `Company size` pasa a ser `company_size`.

   Para elegir tú la clave, selecciona **Show advanced options** y edita **Key**. Las claves siempre se guardan en ese formato de minúsculas y guiones bajos, y cada clave solo puede existir una vez por espacio de trabajo.

3. **Elige el tipo.** Elige **Text**, **Number**, **Date**, **Boolean**, **Select** o **Multi select**.

4. **Añade opciones a los campos de selección.** Para **Select** y **Multi select**, introduce al menos una opción y usa **Add option** para añadir más. Estos valores aparecen en el desplegable de los contactos.

5. **Guarda.** Selecciona **Create**. El campo aparece en todos los contactos, en los filtros de contactos y como etiqueta de combinación en los editores de campañas.

La página Custom fields enumera todos los campos con su nombre, su tipo y sus opciones. Usa **Edit** para cambiar el nombre de un campo, su tipo o su clave, o para editar sus opciones.

> **Eliminar un campo:** Al eliminar un campo personalizado, se quita del panel, de los filtros, de las importaciones y de las etiquetas de combinación, y no puedes deshacerlo. Antes de cambiar o eliminar una clave, actualiza las campañas, las automatizaciones y el código de la API que la usan.

## Establecer los valores

| Dónde | Cómo |
| --- | --- |
| Panel | **Add contact** o **Edit** en un contacto. Selecciona **Show custom fields** para ver los campos. |
| Importación | Asigna una columna del archivo al campo personalizado en el asistente de importación. Consulta [Importar y exportar contactos](/es/docs/contacts/import-export/). |
| API | Envía un objeto `custom_fields` indexado por la clave del campo. |

Con la API, pasa `custom_fields` a [Crear un contacto](/es/docs/api-reference/contacts/create/) o a [Actualizar un contacto](/es/docs/api-reference/contacts/update/):

```bash
curl https://api.emailit.com/v2/contacts/ada@example.com \
  -X POST \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "custom_fields": {
      "company": "Acme",
      "plan": "pro",
      "birthday": "1990-04-12",
      "interests": ["news", "offers"]
    }
  }'
```

Reglas que debes conocer:

- **`custom_fields` sustituye todo el objeto.** Al actualizar, incluye todos los valores que quieras conservar, no solo los que cambian.
- **Usa las claves de los campos, no sus nombres.** Los valores de claves que no están definidas en **Custom fields** se guardan, pero no aparecen en el panel.
- **Las fechas deben tener el formato `YYYY-MM-DD`.** Emailit convierte en fecha las fechas y horas ISO y las celdas de fecha de Excel. Cualquier otra cosa devuelve `400` con «Custom field "Birthday" must be a date in YYYY-MM-DD format». Las fechas no tienen hora ni zona horaria.
- **Los valores de selección no se comprueban con las opciones.** Un valor que no está en la lista de opciones se guarda igualmente, y el panel lo sigue mostrando.

## Filtrar los contactos por un campo personalizado

En el panel, abre **Email Marketing → Contacts**, selecciona **Filter** y elige el campo personalizado por su nombre. Los filtros de campos personalizados comparan el valor guardado como texto, así que usa **equals**, **does not equal**, **contains**, **does not contain**, **starts with**, **ends with**, **is empty** o **is not empty**.

Con la API, usa `custom_fields.<key>.<condition>` en [Listar contactos](/es/docs/api-reference/contacts/list/) y [Exportar contactos](/es/docs/api-reference/contacts/export/), con las mismas condiciones de texto (`exact`, `not_exact`, `contains`, `not_contains`, `starts_with`, `ends_with`, `empty`, `not_empty`):

```bash
curl "https://api.emailit.com/v2/contacts?custom_fields.plan.exact=pro&custom_fields.company.contains=acme" \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
```

Para un rango, como los cumpleaños de los años noventa, usa los parámetros `filter[custom_fields.<key>][gte]` y `[lte]`. Comparan el texto guardado, que se ordena correctamente en las fechas `YYYY-MM-DD`:

```bash
curl -G "https://api.emailit.com/v2/contacts" \
  --data-urlencode "filter[custom_fields.birthday][gte]=1990-01-01" \
  --data-urlencode "filter[custom_fields.birthday][lte]=1999-12-31" \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
```

Consulta [Filtrado y ordenación](/es/docs/api-reference/filtering/) para ver cómo se combinan los filtros.

## Usar los campos personalizados en las campañas

En el contenido y el asunto de una campaña, inserta un campo personalizado con la etiqueta de combinación `{{cf.<key>}}`, por ejemplo `{{cf.company}}`. Los editores de texto enriquecido y Dragit muestran tus campos personalizados entre sus variables, así que no tienes que escribir la clave.

```html
<p>Hi {{first_name}}, here's what's new for {{cf.company}}.</p>
```

Si un contacto no tiene valor, la etiqueta se sustituye por nada. Los valores de selección múltiple se muestran como una lista separada por comas. Consulta [Etiquetas de combinación](/es/docs/campaigns/merge-tags/).

## Usar los campos personalizados en las automatizaciones

- **Disparador Date anniversary.** Elige un campo **Date** para iniciar una ejecución cada año en el mes y el día que guarda, por ejemplo un cumpleaños. Consulta [Disparadores de las automatizaciones](/es/docs/automations/triggers/#date-anniversary).
- **Disparador Contact updated.** Filtra por un campo personalizado, o por su valor anterior, para reaccionar cuando cambie.
- **Paso Condition.** Crea ramas según el valor de un campo personalizado.
- **Paso Edit contact.** Establece un campo personalizado introduciendo su clave.

## Referencia de la API

Las definiciones de los campos personalizados solo se gestionan en el panel. Los valores de los contactos usan el objeto `custom_fields` de la [API de contactos](/es/docs/api-reference/contacts/), y el mismo objeto se acepta al [añadir un suscriptor](/es/docs/api-reference/audiences/subscribers/add/) a una lista de contactos.

## Ver también

  - [Contactos](/es/docs/contacts/): Cómo encajan los contactos, las listas de contactos y los suscriptores.
  - [Etiquetas de combinación](/es/docs/campaigns/merge-tags/): Personaliza las campañas con los datos de los contactos.

---
Fuente: https://emailit.com/es/docs/contacts/custom-fields/
