Integrations
Highlevel CRM Integration
Change SMS tab to Whatsapp QR
4 min
introduction this customization updates the gohighlevel conversations ui by replacing the label “sms” with “whatsapp qr” in two places the main channel tab label in the composer the provider/channel selection popover this improves internal clarity by ensuring users immediately understand that messages are being sent via whatsapp (qr channel) rather than traditional sms installation in gohighlevel, go to settings → company → custom javascript paste the script below into the custom javascript field and click save script \<script> (function() { function trocartexto() { // selector 1 tab principal const smstab = document queryselector('#composer textarea > div > div flex flex col flex 1 min w 0 h full rounded md border none > div flex flex row\ py 1 items center justify end rounded t lg \\\\!h \\\\\[32px\\\\] bg gray 50 > div flex gap 6 items center w full > div > span'); if (smstab && smstab innertext trim() === 'sms') { smstab innertext = 'whatsapp qr'; } // selector 2 popover const smspopover = document queryselector('#provider select popover > div hr popover content > div > div > div flex items center justify between py 2 px 2 cursor pointer transition colors duration 150 hover\\\\\ bg gray 50 bg blue 50 > div > div'); if (smspopover && smspopover innertext trim() === 'sms') { smspopover innertext = 'whatsapp qr'; } } // primero intenta de inmediato trocartexto(); // observa cambios en el dom const observer = new mutationobserver(() => { trocartexto(); }); observer observe(document body, { childlist true, subtree true }); })(); \</script> validation / testing after saving the script open conversations in gohighlevel select any contact with an active messaging thread confirm the sms label now appears as whatsapp qr in the composer tab the provider/channel popover also shows whatsapp qr instead of sms navigate between contacts and reload the page to confirm persistence notes / operational considerations this is a ui only change it does not change routing, providers, deliverability, or message type the script uses specific css selectors ; if gohighlevel updates their ui structure, the selectors may break and require updates the mutationobserver is necessary because ghl re renders components dynamically