Propiedades de contacto
Define campos personalizados para los contactos — como tipo de cuenta, región o nivel de contrato — y pásalos a través del widget. Las propiedades se muestran en el perfil del contacto, son editables por los operadores y filtrables en la Bandeja de entrada.
Descripción general#
Las Propiedades de contacto te permiten adjuntar datos estructurados a las conversaciones más allá de los campos integrados (email, name, userId). A diferencia de los metadata de formato libre, las propiedades tienen un esquema definido con tipos, etiquetas y validación — similar a los campos personalizados de HubSpot o Salesforce.
Definir esquema
Crea definiciones de propiedades en los Ajustes del agente con tipos como string, number, enum, boolean, date, url
Pasar desde el widget
Envía valores de propiedades mediante Respondo.identify() — se almacenan y se muestran automáticamente
Filtrar y editar
Filtra conversaciones por valores de propiedad en la Bandeja de entrada. Los operadores pueden ver y editar los atributos de un contacto en su perfil.
Definición de propiedades#
Las propiedades se definen por agente en Ajustes del agente → Propiedades de contacto. Cada propiedad tiene:
| Campo | Descripción |
|---|---|
| key | Identificador único usado en el código. Autogenerado a partir de la etiqueta (editable). Letras minúsculas, dígitos y guiones bajos; debe empezar por una letra; de 2 a 63 caracteres. Las claves de sistema (user_id, visitor_id, timezone, page_url, …) están reservadas. Ejemplo: account_type |
| label | Nombre legible que se muestra en el panel. Ejemplo: "Account Type" |
| type | Tipo de valor: string, number, boolean, enum, date, url |
| enum_values | Para el tipo enum — lista de valores permitidos. Ejemplo: ["starter", "pro", "enterprise"] |
| is_filterable | Reservado para un futuro control de filtrado; se guarda con la definición, pero el selector de filtros de la Bandeja de entrada actualmente lista todas las propiedades definidas (por defecto: true) |
| is_visible | Reservado para un futuro control de visualización; se guarda con la definición pero aún no se aplica en la interfaz (por defecto: true) |
Pasar desde el widget#
Pasa los valores de las propiedades en el campo properties de Respondo.identify(). Las claves deben coincidir con las definiciones de propiedades de los Ajustes del agente.
Respondo.identify({
email: 'user@example.com',
name: 'Jane Smith',
userId: 'usr_456',
properties: {
account_type: 'enterprise', // enum
region: 'eu-west', // string
monthly_spend: '15000', // number (pasado como cadena)
is_partner: 'true', // boolean (pasado como cadena)
contract_end: '2026-12-31', // date
dashboard_url: 'https://app.example.com/org/123' // url
}
});Fragmento de integración#
El Fragmento de integración aparece automáticamente en Ajustes del agente → Propiedades de contacto en cuanto has definido al menos una propiedad, con todas tus claves de propiedad precompletadas. Haz clic en Copiar para tomarlo y pégalo en tu aplicación. El fragmento generado también incluye un placeholder de userHash para la verificación de identidad (HMAC-SHA256).
Cómo se almacenan los valores#
Los valores de las propiedades se almacenan en el campo JSONB metadata de la conversación con un prefijo cp_. Por ejemplo, una propiedad con la clave account_type se almacena como cp_account_type.
Las propiedades se actualizan en cada mensaje — si el widget envía nuevos valores, sobrescriben los existentes. Esto significa que los valores de las propiedades siempre reflejan los datos más recientes de tu aplicación.
Filtrado en la Bandeja de entrada#
Filtra conversaciones por valores de propiedad usando la barra de filtros de la Bandeja de entrada o una Vista guardada. Añade una condición Property, elige la propiedad por nombre — el selector lista todas las definiciones de todos tus agentes y también acepta una clave sin definición — y luego elige un valor. El campo de valor sugiere los valores observados y los valores enum a medida que escribes.
A través de la API, los endpoints de listado de conversaciones aceptan un parámetro de consulta cp.<key>=<value> (un alias exacto de attr.<key>). No existe una sintaxis de consulta de texto libre:
GET /api/v1/conversations?cp.account_type=enterpriseEdición de valores#
Los valores de las propiedades los establece tu aplicación — mediante la integración del widget o la API — y son de solo lectura en el panel de detalles de la conversación. El panel enlaza con el perfil del contacto, donde los operadores pueden ver y editar los atributos del contacto (Contactos → contacto → Atributos).
Propiedades vs Metadata
| Característica | properties | metadata |
|---|---|---|
| Esquema | Definido en Ajustes del agente con tipos | Pares clave-valor de formato libre |
| Filtrable | Sí, mediante la barra de filtros / Vistas guardadas (API: parámetro cp.<key>) | No |
| Editable por operadores | No — los valores provienen de tu aplicación; los atributos del contacto se editan en el perfil del contacto | No |
| Visualización tipada | Sí (badges, enlaces, fechas, booleanos) | Solo texto plano |
| Autocompletado | Sí, sugerencias de valores en el campo de valor del filtro | No |
metadata para campos ad-hoc que no necesitan filtrado ni visualización tipada. Usa properties para datos estructurados que tu equipo utilizará activamente para segmentación y flujos de trabajo.