Complete documentation for Smart Follow-ups across all OpenClaw channels
Smart Follow-ups works on every OpenClaw channel, with adaptive formatting:
| Channel | Mode | Format | Interaction |
|---|---|---|---|
| Telegram | Interactive | Inline buttons | Tap to ask |
| Discord | Interactive | Inline buttons | Click to ask |
| Slack | Interactive | Inline buttons | Click to ask |
| Signal | Text | Numbered list | Reply with 1-3 |
| Text | Numbered list | Reply with 1-3 | |
| iMessage | Text | Numbered list | Reply with 1-3 |
| SMS | Text | Numbered list | Reply with 1-3 |
| Matrix | Text | Numbered list | Reply with 1-3 |
| Text | Numbered list | Reply with number |
Best experience — full inline button support with callbacks.
💡 What would you like to explore next?
[⚡ How do I install Docker? ] ← tap
[🧠 Explain Docker's architecture ] ← tap
[🔗 Compare Docker to Kubernetes ] ← tap
Requirements:
capabilities: ["inlineButtons"]in channel config- Bot must have inline button permissions
Callback handling: When user taps a button, the question is sent as a new message automatically.
Full button component support.
💡 What would you like to explore next?
[⚡ How do I install Docker?]
[🧠 Explain Docker's architecture]
[🔗 Compare Docker to Kubernetes]
Requirements:
- Bot must have
Send MessagesandUse Buttonspermissions - Application commands enabled
Block Kit button support.
💡 What would you like to explore next?
[⚡ How do I install Docker?]
[🧠 Explain Docker's architecture]
[🔗 Compare Docker to Kubernetes]
Requirements:
- Slack app with
chat:writescope - Interactive components enabled
For channels without button support, a numbered list is displayed:
💡 Smart Follow-up Suggestions
⚡ Quick
1. How do I install Docker?
🧠 Deep Dive
2. Explain Docker's architecture
🔗 Related
3. Compare Docker to Kubernetes
Reply with 1, 2, or 3 to ask that question.
How to use: Simply reply with the number (1, 2, or 3).
💡 Smart Follow-up Suggestions
⚡ Quick
1. How do I install Docker?
🧠 Deep Dive
2. Explain Docker's architecture
🔗 Related
3. Compare Docker to Kubernetes
Reply 1, 2, or 3
How to use: Reply with the number.
Note: WhatsApp has limited button support for business accounts. The skill uses text mode for reliability.
💡 Smart Follow-up Suggestions
⚡ Quick
1. How do I install Docker?
🧠 Deep Dive
2. Explain Docker's architecture
🔗 Related
3. Compare Docker to Kubernetes
Reply with 1, 2, or 3
How to use: Reply with the number.
Smart Follow-ups
1. How do I install Docker?
2. Explain Docker's architecture
3. Compare Docker to Kubernetes
Reply 1, 2, or 3
Note: Simplified formatting for SMS character limits. Emojis may be stripped depending on carrier.
💡 Smart Follow-up Suggestions
⚡ Quick
1. How do I install Docker?
🧠 Deep Dive
2. Explain Docker's architecture
🔗 Related
3. Compare Docker to Kubernetes
Reply with 1, 2, or 3
Subject: Re: Your conversation
💡 Smart Follow-up Suggestions
⚡ Quick
1. How do I install Docker?
🧠 Deep Dive
2. Explain Docker's architecture
🔗 Related
3. Compare Docker to Kubernetes
Reply with the number of your choice (1, 2, or 3).
The handler automatically detects the channel and formats appropriately:
// Channels with button support
const BUTTON_CHANNELS = ['telegram', 'discord', 'slack'];
// Check channel capability
function supportsButtons(channel, capabilities) {
return BUTTON_CHANNELS.includes(channel) &&
capabilities?.includes('inlineButtons');
}Priority:
- Check if channel is in
BUTTON_CHANNELSlist - Verify
inlineButtonscapability is enabled - Fall back to text mode if either check fails
You can override settings per channel in openclaw.json:
{
"skills": {
"smart-followups": {
"channels": {
"telegram": {
"mode": "buttons",
"showCategory": true
},
"signal": {
"mode": "text",
"compact": false
},
"sms": {
"mode": "text",
"compact": true,
"stripEmoji": true
}
}
}
}
}| Option | Default | Description |
|---|---|---|
mode |
auto | buttons, text, or auto |
compact |
false | Use compact formatting |
showCategory |
true | Show category labels (⚡🧠🔗) |
stripEmoji |
false | Remove emojis (for SMS) |
When a user clicks a button:
- Button sends
callback_datacontaining the question - OpenClaw receives it as a new user message
- OpenClaw answers the question normally
When a user replies with a number:
- OpenClaw receives "1", "2", or "3"
- Handler maps number to the corresponding question
- OpenClaw processes as if user typed the full question
Implementation Note: The handler stores recent suggestions in session context to map numbers back to questions.
- Check channel config has
capabilities: ["inlineButtons"] - Verify bot has inline button permissions
- Try restarting OpenClaw
- Make sure you're replying with just the number (1, 2, or 3)
- Don't include other text
- Check OpenClaw logs for errors
WhatsApp formatting is limited. If buttons don't work:
- Check if you have a WhatsApp Business account
- The skill defaults to text mode for reliability
Some carriers strip emojis. Enable stripEmoji: true in SMS channel config:
{
"skills": {
"smart-followups": {
"channels": {
"sms": {
"stripEmoji": true
}
}
}
}
}To add support for a new channel:
- Check button support — Does the platform support interactive buttons?
- Add to handler — Update
BUTTON_CHANNELSarray if supported - Test formatting — Verify text/button output looks correct
- Document — Add section to this file
Pull requests welcome! See CONTRIBUTING.md.
| Feature | Telegram | Discord | Slack | Signal | iMessage | SMS | |
|---|---|---|---|---|---|---|---|
| Inline buttons | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | |
| Emoji support | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| Markdown | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Number replies | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Rich formatting | ✅ | ✅ | ✅ | ❌ |
Legend: ✅ Full support |
Last updated: January 20, 2026