Swipeable product carousel in chat
Stack multiple media cards behind a single header so the contact can swipe left and right between options. Each card carries its own image or video and its own buttons, giving you a tiny catalog inside the conversation.
Overview
The #Carousel command builds a horizontally scrollable group of cards. The
header sets a cover (image or video) and a title. After the header, each card is a
#ButtonMix block separated by exactly five slashes
(/////). Cards can mix rating buttons, copy-code buttons, call buttons and URL
buttons.
Carousel is in BETA and currently does not work on Android. Use it where you know the contact is on iOS, or fall back to a sequence of single image buttons messages.
Anatomy of a carousel
- A header declared with
#Carousel, followed by triple-pipe separators|||, a title, a subtitle, and a media reference. - One or more cards, each a
#ButtonMixblock. - Five slashes (
/////) between every two cards after the first.
Full example
A four-card carousel with a video cover and four different card types:
#Carousel|||Title|||Subtitle|||video*https://wazzap-files.sfo3.cdn.digitaloceanspaces.com/0104bf58-22ea-4b66-9454-79ebe69cdf6d.mp4||| #ButtonMix|Title|Subtitle|image*https://wisphub.io/static/img/wisp-bg-5.jpg|button*Good*id_good/button*Bad*id_bad/button*Terrible*id_terrible /////#ButtonMix|Title|Subtitle|image*https://wisphub.io/static/img/wisp-bg-5.jpg|copy*Copy Code*000011 /////#ButtonMix|Title|Subtitle|image*https://wisphub.io/static/img/wisp-bg-5.jpg|call*Call Now*id_call /////#ButtonMix|Title|Subtitle|video*https://wazzap-files.sfo3.cdn.digitaloceanspaces.com/0104bf58-22ea-4b66-9454-79ebe69cdf6d.mp4|url*Visit Web*https%3A%2F%2Fwww.google.com/url*Contact*https%3A%2F%2Fwww.facebook.com Cards explained
Header (carousel cover)
#Carousel|||Title|||Subtitle|||video*https://wazzap-files.sfo3.cdn.digitaloceanspaces.com/0104bf58-22ea-4b66-9454-79ebe69cdf6d.mp4||| Card 1, rating buttons
#ButtonMix|Title|Subtitle|image*https://wisphub.io/static/img/wisp-bg-5.jpg|button*Good*id_good/button*Bad*id_bad/button*Terrible*id_terrible Card 2, copy-code button
/////#ButtonMix|Title|Subtitle|image*https://wisphub.io/static/img/wisp-bg-5.jpg|copy*Copy Code*000011 Card 3, call button
/////#ButtonMix|Title|Subtitle|image*https://wisphub.io/static/img/wisp-bg-5.jpg|call*Call Now*id_call Card 4, URL buttons over a video
/////#ButtonMix|Title|Subtitle|video*https://wazzap-files.sfo3.cdn.digitaloceanspaces.com/0104bf58-22ea-4b66-9454-79ebe69cdf6d.mp4|url*Visit Web*https%3A%2F%2Fwww.google.com/url*Contact*https%3A%2F%2Fwww.facebook.com Result
- The contact sees a single chat bubble with a cover, then swipes horizontally across four cards.
- Each card behaves like its specific button type:
- Image buttons: records the tapped ID.
- Copy code button: copies the value and shows a toast.
- Call button: opens the dialer.
- URL button: opens the encoded link.
- Your CRM logs each response. In HighLevel the reply ID lands in the conversation thread so workflows can branch on it.
Important notes
- Carousel is BETA and does not work on Android. Always test on the target device before scaling.
- Images must be .jpg. Videos must be .mp4. File-size limits come from your CRM, commonly 5 MB per file.
- Use exactly five slashes
/////between cards after the second. - Every button ID must be unique and stable across the whole carousel, not just within a single card.
- Keep button labels short, the carousel viewport is narrow.
- URL buttons require URL-encoded links pasted as plain text.
Troubleshooting
The carousel shows only the first card
The separator is wrong. Cards after the first must start with exactly five slashes
(/////). Four or six slashes break the parser.
URL buttons open a broken link
The link wasn't URL-encoded. Convert https://...?q=hello world to
https%3A%2F%2F...%3Fq%3Dhello%20world before pasting.
Carousels are also useful for menu-style replies: pair them with tag triggers so the chosen card auto-applies a contact tag in your CRM.