Visión general
Las variables dinámicas te permiten escribir un mensaje que llega personalizado a cada persona.
En lugar de "¡Hola!", escribes ¡Hola {{ contact.first_name }}! y cada contacto recibe su propio nombre.
La variable siempre se escribe entre llaves dobles y se resuelve en el servidor, en el momento del envío — nunca en el navegador. Si el dato no existe, la variable queda como texto vacío y el resto del mensaje sale con normalidad.
Todas las variables usan el mismo vocabulario en todas las superficies: lo que funciona en el compositor de respuesta funciona igual en el correo, la campaña, el follow-up, el flujo y el contrato.
Requisitos previos
- Ninguno. Las variables básicas (contacto, cuenta, bandeja de entrada, agente) funcionan desde el primer día.
- Las variables de un módulo (cobro, agendamiento, contrato, pedido…) solo traen valor cuando ese módulo está en uso en la cuenta. Sin dato se resuelven vacías — nunca rompen el mensaje.
Paso a paso
- Abre cualquier campo de texto que acepte variables (compositor, macro, respuesta rápida, campaña, follow-up, contrato, recordatorio de la agenda…).
- Escribe
{{— la lista de variables aparece automáticamente. - O haz clic en el botón
{x}Insertar variable, cuando esté disponible en el encabezado del campo. - Busca por nombre (por ejemplo "importe" o "vencimiento") y haz clic para insertar.
- Comprueba el valor antes de enviar. Dentro de una conversación, cada variable de la lista muestra al lado lo que va a producir para ese contacto: el nombre real, el importe real del cobro, la fecha real de la cita. Lo que ves ahí es exactamente lo que recibirá el cliente.
- Envía una prueba antes de lanzar a toda la base.
Configuración y opciones
Los grupos disponibles
| Grupo | Para qué sirve | Ejemplo |
|---|---|---|
| Contacto | Quién está del otro lado | {{ contact.first_name }} |
| Conversación | La conversación actual | {{ conversation.display_id }} |
| Cuenta / Marca | Tu empresa | {{ account.name }} · {{ brand.name }} |
| Agente | Quién atiende | {{ agent.available_name }} |
| Fecha y hora | El reloj, en la zona horaria de la cuenta | {{ now.date }} · {{ now.weekday }} |
| Negocio (CRM) | El negocio vinculado al contacto | {{ crm.title }} · {{ crm.value_formatted }} |
| Empresa | La empresa del contacto | {{ organization.legal_name }} |
| Cobro | El cobro más reciente | {{ payment.pay_url }} · {{ payment.due_date_formatted }} |
| Suscripción | El plan recurrente | {{ subscription.next_due_date_formatted }} |
| Pedido | El pedido más reciente | {{ order.amount_formatted }} |
| Agendamiento | La cita del contacto | {{ booking.date_formatted }} · {{ booking.manage_url }} |
| Contrato | El contrato abierto | {{ contract.sign_url }} |
| Tarea | La tarea vinculada al contacto | {{ task.due_at_formatted }} |
| Carrito y checkout | Recuperación de venta | {{ commerce.pay_url }} |
| Producto | El producto citado | {{ product.price_formatted }} |
| Grupo | Grupo de WhatsApp / cohorte | {{ group.invite_url }} |
| Equipo · SLA · Disponibilidad | Operación | {{ team.name }} · {{ wfm.online }} |
| Satisfacción · Interacción | Relación | {{ csat.rating }} · {{ engagement.tier }} |
| Vendedor · Meta · Comisión · Afiliado | Ventas | {{ seller.name }} · {{ affiliate.referral_code }} |
| Anuncio · Lead | Origen pago | {{ lead.headline }} |
| Artículo | Centro de Ayuda | {{ article.url }} |
| Cerebro de la Cuenta | Señales de IA | {{ brain.risk_band }} |
El selector solo muestra los grupos que funcionan en esa pantalla. Una campaña, por ejemplo, no tiene conversación, así que las variables de conversación no se ofrecen allí.
Valores formateados
Todo valor de dinero y de fecha existe en dos formas:
- Cruda — el valor tal como está guardado:
{{ crm.value_amount }}→1500.0 - Formateada — lista para que el cliente la lea:
{{ crm.value_formatted }}→$ 1.500,00
Lo mismo vale para las fechas: {{ payment.due_date }} → 2026-08-08 y
{{ payment.due_date_formatted }} → 08/08/2026, siempre en la moneda, el idioma y la zona horaria
de tu cuenta.
Si un valor no tiene versión formateada, puedes formatearlo al vuelo con un filtro:
{{ payment.amount | money: 'ARS' }} → $ 1.500,00
{{ booking.starts_at | datetime }} → 08/08/2026 14:30
Campos personalizados
Los campos personalizados que creaste también se convierten en variables, con el formato
{{ contact.custom_attribute.clave }}. Esto vale para los campos de contacto, conversación, empresa,
negocio, producto, tarea, grupo, cobro, agendamiento, follow-up y contrato.
Casos de uso
- Cobro vencido:
Hola {{ contact.first_name }}, tu factura de {{ payment.amount_formatted }} venció el {{ payment.due_date_formatted }}. Paga aquí: {{ payment.pay_url }} - Recordatorio de cita:
Tu cita es el {{ booking.date_formatted }} a las {{ booking.time_formatted }} con {{ booking.host }}. ¿Necesitas reprogramar? {{ booking.manage_url }} - Contrato:
{{ contact.first_name }}, tu contrato "{{ contract.title }}" está listo: {{ contract.sign_url }} - Invitación al grupo:
¡Bienvenido! Entra en {{ group.name }}: {{ group.invite_url }}
Consejos, límites y buenas prácticas
- Envía siempre una prueba. Es la forma más rápida de ver si la variable trajo el valor esperado.
- Un dato ausente queda vacío. Escribe la frase de modo que siga teniendo sentido sin el valor — evita "Tu pedido de ha llegado".
- En campañas, cuidado extra. Si una variable usada en la plantilla aprobada no se resuelve para un destinatario, ese destinatario es omitido. Prefiere variables que sepas con certeza que existen.
- Documento fiscal: en los mensajes el documento solo aparece enmascarado
(
{{ contact.masked_tax_id }}). El documento completo es exclusivo de los contratos, que la propia persona firma. - No inventes variables. Si no está en el selector, no existe — y saldrá vacía.
- Dónde no aparece el valor. Fuera de una conversación (macro, respuesta rápida, campaña, plantilla de contrato) todavía no hay contacto, así que la lista muestra solo el nombre de la variable. Es el comportamiento correcto: ahí la variable aún no tiene dueño.
- Si tu rol oculta un dato, el valor también aparece oculto. Un agente que ve
a***@example.comen la ficha vea***@example.comen la lista de variables; es el mensaje enviado el que lleva el valor real.
Solución de problemas
| Síntoma | Causa probable | Qué hacer |
|---|---|---|
El mensaje llegó con {{ ... }} literal |
La variable se escribió en un campo que no resuelve variables | Usa el selector: solo aparece donde las variables funcionan |
| La variable salió vacía | El dato no existe para ese contacto | Revisa el registro; ajusta la frase para que funcione sin el valor |
El valor salió como 1500.0 |
Usaste la versión cruda | Cámbiala por {{ ...value_formatted }} |
| La fecha vino con un día de diferencia | La zona horaria de la cuenta no es la esperada | Ajústala en Configuración de la cuenta |
| La campaña omitió destinatarios | Una variable de la plantilla aprobada no tenía valor | Revisa la plantilla y usa variables más seguras |
| El aviso «variables no definidas» aparece en una variable que funciona | La variable realmente no tiene valor para este contacto | Mira el valor junto a ella en la lista: si está en blanco, el dato no existe en la ficha |