Saltar al contenido principal

Códigos de mensaje desde GoHighLevel

Cuando envías un mensaje saliente desde GoHighLevel que debe llegar a WhatsApp a través de WhatGHL, puedes añadir códigos especiales (suelen empezar por #) en el cuerpo del mensaje. WhatGHL los interpreta, cambia cómo se envía el mensaje y los elimina de lo que ve el contacto (salvo donde se indique lo contrario).

Estos códigos no son una función nativa de GHL: los interpreta WhatGHL en el camino GHL → WhatsApp.

Compositor (sustitutivo)

Sustitutiva — compositor GHL con códigos de ejemplo

Sustitutiva — captura del compositor donde se escriben los códigos.

Vídeo guía (sustitutivo)

Sustitutiva — miniatura demo de códigos

Sustitutivo — vídeo corto con #WH, #POLL, #voice, etc.

Dónde aplica

Úsalos en el mensaje de conversación (o en automatizaciones que publiquen el mismo tipo de cuerpo saliente) para un contacto con teléfono y enlazado al enrutamiento de tu sesión de WhatsApp.

Orden de procesamiento

WhatGHL aplica reglas en un orden fijo. Si combinas códigos, respeta esta secuencia desde el inicio del mensaje:

PasoQué se leeNotas
1#WH + númeroSesión por prioridad (ej. #WH1). Puede ir como token en el mensaje; se quita antes de los siguientes pasos.
2#NOPRESENCE|Debe estar al inicio del texto actual (tras el paso 1). Activa envío tipo ráfaga sin simular presencia en ese mensaje.
3#MSGALL|Debe estar al inicio del texto actual. En grupos de WhatsApp, menciona a todos (@all). Ver Gestión de grupos de WhatsApp.
4#POLL / #POLL:MULTIPLEEl mensaje debe empezar por #POLL (tras los pasos 1–3).
5#EVENT|Igual: debe empezar por #EVENT si no hay encuesta.
6#BUTTON o #BUTTONSBotones de respuesta (hasta 3).
7#LIST|Mensaje de lista interactiva.
8#CONTACT|Tarjeta de contacto (vCard). Puede aparecer en cualquier parte del texto, pero solo se procesa si el mensaje no es ya encuesta, evento, botones o lista.

Los extras solo con medios (vídeo tipo nota) se aplican cuando hay adjunto; ver Círculo / nota de vídeo más abajo.

Si el orden es incorrecto (por ejemplo #MSGALL| antes de #NOPRESENCE|), el segundo prefijo puede ya no estar al “inicio” y no se detectará.


Enrutamiento y sesiones

#WH + número de prioridad

  • Ejemplo: #WH2 Hola, soporte técnico.
  • Efecto: Envía por la sesión de WhatsApp cuya prioridad coincide (p. ej. 2), entre sesiones en estado WORKING de la subcuenta.
  • ¿Se quita del texto? Sí (se elimina #WH2).

Si no hay sesión que coincida, el mensaje puede fallar o quedar registrado según tu configuración. Las prioridades se gestionan en Números y sesiones de WhatsApp.

Si omites #WH, WhatGHL recorre las reglas de priorización de sesión saliente de la subcuenta. El orden por defecto es: código #WH en el mensaje (si va en el texto), teléfonos en etiquetas del contacto que coincidan con una sesión, usuario de GHL que envió el mensaje (si el webhook trae su id), usuario asignado al contacto, primera sesión WORKING por prioridad de sesión, y el mismo criterio como paso final. Puedes reordenar y desactivar reglas (la última queda siempre al final) en Subcuenta → Connection → Outbound session selection.

Ids de regla (API / soporte): wh_code, contact_tag_phone, ghl_message_sender_phone, contact_assigned_user_phone, default_working_session, any_working_session. Hasta que exista un flag de “sesión predeterminada” por sesión, los dos últimos se comportan igual (primera sesión WORKING por prioridad ascendente).

Prefijo antiguo #|id

Si al inicio del mensaje quedó un texto tipo #|id + dígitos + espacio (plantillas viejas), WhatGHL lo quita para que no llegue al contacto, pero no usa eso para elegir sesión. Para enrutar explícitamente usa #WH.


Modos de envío

#NOPRESENCE|

  • Ejemplo: #NOPRESENCE|Tu código es 482910.
  • Efecto: Envía ese saliente sin el comportamiento habitual de “presencia” (útil para envíos rápidos o guionizados).
  • ¿Se quita del texto? Sí (incluido el |).

Si usas ambos, pon #NOPRESENCE| antes que #MSGALL|.

#MSGALL|

  • Ejemplo: #MSGALL|Equipo: reunión a las 10:00.
  • Efecto: En conversaciones de grupo de WhatsApp, activa mención a todos; el prefijo no se muestra en el texto visible.
  • ¿Se quita del texto? Sí.

Mensajes interactivos

Encuestas: #POLL y #POLL:MULTIPLE

  • Una opción: #POLL|Pregunta|Opción 1|Opción 2|Opción 3
  • Varias opciones: #POLL:MULTIPLE|Pregunta|Opción A|Opción B|Opción C

La línea debe empezar por #POLL o #POLL:MULTIPLE (tras enrutamiento / #NOPRESENCE / #MSGALL si los usas). Las opciones van separadas por |. Se usan hasta 12 opciones.

La pregunta es el título de la encuesta; las opciones son lo que el destinatario pulsa.

Evento de calendario: #EVENT|

Formato (campos separados por |):

#EVENT|Nombre del evento|MARCA_DE_TIEMPO_UNIX|Descripción|Ubicación|true_o_false
  • MARCA_DE_TIEMPO_UNIX: Segundos desde epoch Unix para el inicio.
  • Descripción / Ubicación: Pueden ir vacíos; los separadores | se mantienen.
  • Último campo: true o false para invitados extra (cuando el canal lo soporte).

Todo el bloque #EVENT|… se elimina del texto normal; el cliente recibe un mensaje de evento.

Botones de respuesta: #BUTTON o #BUTTONS

  • Patrón: #BUTTON|Texto visible|id*Título 1|id*Título 2|id*Título 3
  • También: #BUTTONS| (misma idea).

El Texto visible es el cuerpo del mensaje. Tras el tercer |, cada botón es Título*id_opcional (partido por *). Hasta 3 botones. Los títulos tienen límite de longitud (20 caracteres en servidor).

Lista: #LIST|

Formato:

#LIST|Cuerpo|Texto del botón|Título sección|Fila*título*descripción*id||Siguiente sección|...

  • Las secciones pueden separarse con ||.
  • Las filas usan título*descripción*id (descripción e id opcionales en el parser).
  • Máximo 10 filas en total entre secciones.

Tarjeta de contacto: #CONTACT|

  • Ejemplo: Gracias por escribir. #CONTACT|María López|5215512345678
  • Efecto: Envía una tarjeta de contacto con nombre y teléfono (se normalizan dígitos).
  • ¿Se quita del texto? Se elimina el fragmento #CONTACT|Nombre|Teléfono.

No se procesa si el mensaje ya se trató como encuesta, evento, botones o lista.


Círculo / PTV: el código #CIRCLE

Cuando el mensaje de GHL incluye un adjunto de vídeo y el cuerpo contiene #CIRCLE (sin importar mayúsculas), el webhook de WhatGHL:

  1. Detecta #CIRCLE en el texto del mensaje.
  2. Envía el vídeo como PTV (“nota de vídeo” / vídeo circular) si la integración lo permite.
  3. Elimina del pie los tokens #CIRCLE seguido de dígitos (ej. #CIRCLE1, #CIRCLE12), según reglas de espacios, para que no lleguen como texto visible al pie.

Si usas #CIRCLE sin dígitos al final, el tipo de medio puede pasar a PTV, pero el literal #CIRCLE podría seguir en el pie. Mejor usar algo como #CIRCLE1 si necesitas un pie limpio tras el procesamiento.

Mensajes solo texto

La limpieza de #CIRCLE / #CIRCLE + dígitos en el servidor actual va ligada al flujo de vídeo saliente. No es una regla genérica que quite esos tokens de cualquier SMS sin adjunto de vídeo.


Solo interno: #note

Si el cuerpo coincide con notas internas de GHL que contienen el token #note como palabra completa (sin distinguir mayúsculas, p. ej. #note o … #note …), WhatGHL omite reenviar ese contenido GHL → WhatsApp como mensaje saliente normal. Así las notas internas del equipo en el hilo se quedan solo en GHL.


Traducción en línea: #traslate

Los mensajes salientes a WhatsApp pueden forzar la traducción con un hashtag en el compositor. Escribe exactamente #traslate (no #translate).

CódigoUso en GHL
#traslateCon la traducción saliente activada en la subcuenta y IA configurada (proveedor, clave, modelo), obliga a traducir ese mensaje. El idioma destino sale de la configuración de traducción saliente de la subcuenta.
#traslate:xxIgual, pero xx fija el idioma destino en este envío: es, en, pt, fr, de, it. El hashtag (y el :xx opcional) se quita del texto que recibe WhatsApp.

Requisitos habituales: traducción activada, idioma válido y configuración de IA presente. Sin el hashtag, este disparador no aplica para ese envío (pueden seguir activas otras reglas de traducción según la subcuenta).


Texto a voz: #voice

Para enviar audio hablado en lugar de texto plano en WhatsApp, incluye #voice en el cuerpo. Es independiente de #traslate (traducir no genera audio por sí solo).

CódigoUso en GHL
#voiceSi el TTS está activo en la subcuenta, no hay adjunto ni contenido interactivo (botones, lista, encuesta, evento, vista previa de enlace) y el TTS (p. ej. ElevenLabs) está bien configurado, el sistema genera un MP3, lo envía como audio y quita #voice del texto que se sintetiza.
#voice:xxIgual que #voice, pero xx elige la ruta de voz / idioma para el TTS. Además de los idiomas base es, en, pt, fr, de, it, WhatGHL admite códigos ISO de país latinoamericano de dos letras (p. ej. mx, ar, co, br) si están definidos en Subcuenta → Voz → Voces por idioma. Sin :xx, se usan los defaults de traducción / subcuenta.

WhatGHL busca #voice en el cuerpo original (antes de que la traducción quite hashtags), para no perder el disparador.

El audio generado para TTS debe ser accesible desde internet para que WhatsApp lo entregue al contacto. Si el audio no se reproduce, pide a tu agencia o a soporte que revisen la configuración.

Configura voz y traducción en Configuración por pestañas (pestañas Voz (TTS) e IA y traducción).


Referencia rápida

CódigoFunción
#noteNo enviar a WhatsApp (nota interna; se omite el reenvío GHL → WhatsApp).
#WHNEnrutar por prioridad N.
#NOPRESENCE|Enviar sin simulación de presencia; quitar prefijo.
#MSGALL|Grupo: mencionar a todos; quitar prefijo.
#POLL|… / #POLL:MULTIPLE|…Encuesta de WhatsApp.
#EVENT|…Evento tipo calendario en WhatsApp.
#BUTTON(S)|…Hasta 3 botones de respuesta.
#LIST|…Mensaje de lista.
#CONTACT|Nombre|TeléfonoTarjeta de contacto.
#CIRCLE / #CIRCLE + dígitosVídeo saliente: PTV; el webhook quita #CIRCLE+dígitos del pie cuando aplica.
#traslate / #traslate:xxSaliente WhatsApp: forzar traducción; quitar hashtag; :xx = idioma (es/en/…/it).
#voice / #voice:xxSaliente WhatsApp: TTS MP3; quitar marca; :xx = idioma o clave regional de voz.

Para muchos ejemplos listos para copiar (sobre todo encuestas), el repositorio incluye app/docs/interactive-messages-examples.md como recetario técnico.


Documentación relacionada