Interactive WhatsApp messages
Interactive outbound messages let contacts vote in polls, confirm events, pick list rows, receive locations or contact cards, and get custom link previews.
In WhatGHL, these are driven by structured tokens in the GoHighLevel message body.
What you can build
| Pattern | Typical use |
|---|---|
| Polls | Quick choices (“support / sales / billing”). |
| Events | Appointment proposals with confirm / decline. |
| Lists | Menus with sections and rows. |
| Contact cards | Share a name and phone as a vCard-style message. |
| Location | Share coordinates and title in one outbound. |
| Custom link preview | Send a rich link preview using JSON. |
Detection order (important)
If you combine formats, the parser tries to detect in this order:
#POLL#EVENT#LOCATION#LIST/#LISTJSON#LINKPREVIEW/#LCP#CONTACT
Once one format matches, later ones are usually not evaluated for that same outbound.
Supported formats
Polls
- Single choice:
#POLL|Question|Option 1|Option 2 - Multiple choice:
#POLL:MULTIPLE|Question|A|B|C - Limit: up to 12 options.
Event
#EVENT|Name|UNIX_TIMESTAMP|Description|Location|true_or_false
UNIX_TIMESTAMPis in seconds.- Last field accepts
trueorfalse.
List
- Simple format:
#LIST|Body|Button label|Section 1|Row 1*Description*id|Row 2*Description*id||Section 2|... - JSON format:
#LIST|{...}or#LISTJSON|{...} - Global limit: 10 rows across sections.
Location
- Format:
#LOCATION|latitude|longitude|optional_title - Example:
#LOCATION|19.4326|-99.1332|Main office
Custom link preview
- JSON format:
#LINKPREVIEW|{...}or#LCP|{...} - Requires valid JSON (
text,preview.url,preview.title, etc.).
Contact card
- Format:
#CONTACT|Name|Phone - Can appear anywhere in text.
- Only processed if no previous interactive format matched.
Copy-paste examples
#POLL|What do you need?|Support|Sales|Billing#POLL:MULTIPLE|Which channels do you prefer?|WhatsApp|Email|Call#LIST|Choose a service|See options|Services|Implementation*Initial setup*srv_impl|Support*Help desk*srv_sup#EVENT|Onboarding call|1738789200|Initial setup session|Google Meet|true#LOCATION|19.4326|-99.1332|Main officeThanks for contacting us #CONTACT|Support Team|5215512345678
Where configuration matters
- Sub-account must have a working WhatsApp session and permissions to send the payload type.
- Routing (
#WH, session priority) decides which line sends the interactive message — see Connection. - Translation can alter visible copy. If using
#traslate, verify labels/titles still read correctly.
Good practices
- Prototype new formats in a test sub-account or low-traffic number.
- Keep copy short; long labels are truncated on some devices.
- For lists, design for a 10-row max total.
- For
#CIRCLEvideo-note behavior, see Message codes from GoHighLevel.
Related
- Message codes from GoHighLevel — routing, translation, TTS,
#note, and#CIRCLE. - Voice (TTS) — TTS cannot share the same outbound with most interactive payloads.