Overview
The Horizontal-List-Item component displays items as a horizontally scrollable Media Card Carousel. This is ideal for showcasing multiple options in a compact, swipeable format.Perfect for:
Product categories, menu sections, room options, service packages - any list where visual browsing is key
Format
Requirements & Limitations
Minimum 2 Items
At least 2 items required for carousel
Maximum 10 Items
Up to 10 items per carousel. More items split into multiple carousels.
Image Required
Each item MUST have an image. A placeholder is used if missing.
Unique Titles
Each item must have a unique heading
Meta/WhatsApp Restrictions
| Restriction | Limit |
|---|---|
| Cards per carousel | 2-10 |
| Card body text | 160 characters max |
| Header text | 60 characters max |
| Image format | JPEG, PNG |
| Buttons per card | Up to 2 (quick reply, URL, or phone) |
Template Approval: Carousel templates require Meta approval. The system creates templates automatically when you first use this component. The first request falls back to list-item format while templates are pending approval (~30 seconds to a few minutes).
Current Implementation Defaults
These are current implementation choices that may become configurable in the future:
| Setting | Current Value |
|---|---|
| Button per card | 1 quick reply with text “Select” |
| Button payload | #Header (sent to agent when user taps) |
| Template body text | Results: {remainderText}. Browse below. |
| Card body format | Details: {header + subHeading + body}. Select below. |
| Default image | Lua placeholder when no image provided |
#Title - ##Subheading - Description) into a single parameter, truncated to 135 characters to fit WhatsApp’s 160 char limit with the static text.
When user taps “Select”, the agent receives: Select: *Item Title*
Complete Examples
Product Categories

Menu Items
Hotel Rooms
How It Works
First-Time Use
- Agent responds with
horizontal-list-itemcomponents - System checks if carousel templates exist
- If templates don’t exist:
- Creates templates in background (async)
- Falls back to list-item format for this request
- Templates submitted to Meta for approval (~30 sec to minutes)
- Next request uses the approved carousel templates
User Interaction
When a user taps “Select” on a carousel card:- The agent receives:
Select: *Item Title* - Example:
Select: *Caramel Latte*
How to Configure
In Persona
In Skill Context
Best Practices
✅ Use for Visual Browsing
✅ Use for Visual Browsing
✅ Keep Text Concise
✅ Keep Text Concise
✅ Use High-Quality Images
✅ Use High-Quality Images
- Square or landscape orientation works best
- Images are automatically cropped to wide ratio
- Use HTTPS URLs
- Ensure images load quickly
✅ Provide Meaningful Subheadings
✅ Provide Meaningful Subheadings
Comparison: List-Item vs Horizontal-List-Item
| Feature | List-Item | Horizontal-List-Item |
|---|---|---|
| Layout | Vertical (stacked) | Horizontal (carousel) |
| Channels | All channels | WhatsApp only |
| Min items | 1 | 2 |
| Max items | 10 | 10 (per carousel) |
| Image | Optional | Required |
| Interaction | View only | ”Select” button |
| Best for | Detailed listings | Visual browsing |
Fallback Behavior
When horizontal-list-item can’t render as a carousel:| Situation | Behavior |
|---|---|
| Non-WhatsApp channel | Falls back to list-item |
| Less than 2 items | Falls back to list-item |
| Templates pending approval | Falls back to list-item |
| More than 10 items | Splits into multiple carousels |
Troubleshooting
Carousel not showing on first use
Carousel not showing on first use
This is expected! The first request creates templates which need Meta approval.
The response falls back to list-item format. Try again in 30 seconds to a few minutes.
Getting list-item format instead of carousel
Getting list-item format instead of carousel
Check:
- Are you on WhatsApp? (carousel is WhatsApp-only)
- Do you have at least 2 items?
- Have templates been approved? (check agent logs)
Images not displaying
Images not displaying
Ensure images are:
- Using HTTPS URLs
- Publicly accessible
- In JPEG or PNG format
- Loading within reasonable time
Text being truncated
Text being truncated
WhatsApp limits card body to 160 characters. Keep descriptions concise.

