SMS & WhatsApp Messaging Agents
AI-powered text booking agents that handle SMS and WhatsApp conversations, check your availability, and book meetings for you. Powered by Claude AI and Twilio Messaging.
Overview
SMS and WhatsApp Messaging Agents are AI-powered booking assistants that handle text conversations. Powered by Claude AI and Twilio, they can:
- Respond to inbound SMS and WhatsApp messages
- List your available meeting types
- Check real-time calendar availability
- Book meetings, create contacts, and send confirmations
- Support multi-turn conversations with context carry-forward
- Respect STOP/HELP opt-out compliance
How It Works
When a customer texts your Twilio number, the message flows through a multi-step pipeline that routes it to the correct agent and generates an intelligent response.
Message Flow
Customer texts your Twilio number
→ Twilio webhooks to /api/webhooks/twilio/inbound
→ LinkTime routes to the correct MessagingAgent (by phone number + channel)
→ Claude AI processes the message with tools:
→ list_event_types (list meeting types)
→ get_available_slots (check calendar)
→ create_booking (book meeting)
→ Response sent back via Twilio SMS or WhatsApp API
→ Conversation state maintained across messages
Agent Configuration
Each agent has: a name, greeting message, tone preset (professional / friendly / casual / custom), language, linked event types, and a phone number. Tone presets control the personality of AI responses while keeping them on-task for booking.
SMS Agents
SMS agents work with any provisioned phone number and require no additional setup beyond provisioning the number itself.
- No extra setup: Works immediately after phone number provisioning. No registration or approval process.
- Standard SMS rates: ~$0.0079 per message (US). International rates vary by country.
- STOP/HELP compliance: Users can text STOP to opt out of all messages. HELP returns a support message. Both are required by Twilio and telecom regulations.
WhatsApp Agents
WhatsApp agents provide a richer messaging experience through the WhatsApp Business platform. They require additional setup compared to SMS agents.
- WhatsApp Business sender registration: Required on each phone number before WhatsApp agents can activate. Uses Twilio's Channels Senders API for automated registration.
- Meta approval: Typically takes 1-3 business days after submitting a business display name.
- Template-based notifications: Booking confirmations and reminders use Meta-approved message templates via Twilio Content API.
- Free-form conversations: The booking flow itself uses free-form conversation messages (within the 24-hour WhatsApp session window).
WhatsApp Registration
v2.44.0 — Self-service registration: WhatsApp Business sender registration is now fully automated. No need to contact support or use the Twilio Console manually.
Registration flow
- 1
Go to Phone Numbers
Navigate to Dashboard → Phone Numbers in your LinkTime dashboard.
- 2
Click "Enable WhatsApp"
On any phone number card, click the "Enable WhatsApp" button to start the registration process.
- 3
Enter your business display name
This name will appear as the sender in WhatsApp conversations. It must meet Meta's naming rules (see Display Name Rules below).
- 4
Submit and wait for approval
Status changes to "Pending" immediately. Meta reviews your business name (typically 1-3 business days).
- 5
Receive approval notification
You receive an email when approved ("Your WhatsApp number is ready!"). WhatsApp agents on this number can now activate.
Status states
| Status | Badge Color | What It Means |
|---|---|---|
| Not registered | Gray | WhatsApp not enabled on this number |
| Pending | Amber | Registration submitted, awaiting Meta approval |
| Approved | Green | WhatsApp active — agents can use this number |
| Rejected | Red | Meta didn't approve the display name — try a different one |
Rejected? Click "Try Again" to re-register with a different business name. The previous name is pre-filled for editing.
Status tracking
LinkTime checks registration status via webhook (instant) and cron polling (every 5 minutes as fallback). You can also click "Refresh Status" on the phone number card for an on-demand check.
Display Name Rules
Meta enforces strict rules for WhatsApp Business display names. LinkTime validates these rules in real time as you type, and again on the server when you submit.
Your name must:
- Be 3-256 characters
- Represent your actual business name as it appears publicly
- Contain at least one letter (not just numbers)
Your name must NOT:
- Contain special characters:
~!@#$%^&*()_+:;"'{}}[]|<>,/? - Contain URLs (e.g., "Visit example.com")
- Include Meta product names: WhatsApp, Facebook, Instagram, Messenger
- Include "Official" or "Verified"
- Be a generic term alone (e.g., "Fashion", "Retail")
Good examples
- "Dr. Smith Dental"
- "Acme Corp"
- "La Maison de Pain"
Bad examples
- "WhatsApp Business"
- "Official Store"
- "test@company"
Phone Numbers
Phone numbers are shared infrastructure in LinkTime. One number can serve voice, SMS, and WhatsApp simultaneously.
Provisioning
- 1
Go to Dashboard → Phone Numbers
Navigate to Phone Numbers in your dashboard.
- 2
Click "Provision Number"
Select country (US by default). Optionally add a label (e.g., "Main Office", "Sales").
Capabilities
Each phone number can have:
SMS
Always available after provisioning. No additional setup required.
Voice
Available when a voice agent is linked to this number.
Available after WhatsApp sender registration is approved by Meta.
Release
When you release a phone number: A 30-day hold period begins (prevents accidental loss). WhatsApp sender is automatically deregistered. All linked agents are deactivated. After 30 days, the number is recycled by Twilio.
Plan Limits
| Plan | Max Phone Numbers | Max SMS Agents | Max WhatsApp Agents | Monthly SMS Quota |
|---|---|---|---|---|
| Free | 0 | 0 | 0 | 0 |
| Pro | 1 | 2 | 2 | 100 |
| Business | 5 | 10 | 10 | 500 |
| Enterprise | 20 | 50 | 50 | Unlimited |
Shared quota: SMS and WhatsApp messages share the same monthly quota. If you have 100 messages on the Pro plan, those 100 messages are consumed by both SMS and WhatsApp conversations across all your agents.
Setup Guide
SMS Agent
- 1
Navigate to SMS Agents
Go to Dashboard → SMS Agents in your LinkTime dashboard.
- 2
Click "Create SMS Agent"
Select a phone number from your provisioned numbers, or provision a new one.
- 3
Configure your agent
Set the agent name, greeting message, tone (professional / friendly / casual / custom), language, and linked event types.
- 4
Toggle active
Your agent starts responding to texts immediately. Callers who text your number will be greeted and guided through booking.
WhatsApp Agent
- 1
Enable WhatsApp on your phone number
First, complete the WhatsApp Registration process above. Wait for Meta to approve your business display name.
- 2
Navigate to WhatsApp Agents
Go to Dashboard → WhatsApp Agents in your LinkTime dashboard.
- 3
Click "Create WhatsApp Agent"
Select a WhatsApp-enabled phone number (status must be "Approved").
- 4
Configure and activate
Set the agent name, greeting, tone, language, and linked event types. Toggle active — your agent starts responding on WhatsApp.
Note: WhatsApp agents can only activate on phone numbers where WhatsApp status is "Approved". If the number is still "Pending" or was "Rejected", the activate toggle will be disabled.
Agent API
All endpoints require Clerk session authentication.
/api/agents/phone-numbersReturns all your phone numbers with their capabilities and linked agents.
/api/agents/phone-numbersProvision a new phone number.
Request Body
{
"countryCode": "US",
"label": "Main Office"
}/api/agents/phone-numbers/{id}/whatsappRegister for WhatsApp on a phone number.
Request Body
{
"displayName": "Dr. Smith Dental"
}Response
{
"status": "pending",
"senderSid": "XE..."
}/api/agents/phone-numbers/{id}/whatsappCheck WhatsApp registration status. Add ?refresh=true for a live Twilio fetch instead of returning cached status.
/api/agents/phone-numbers/{id}/whatsappDeregister from WhatsApp. Deactivates all WhatsApp agents on this number.
Messaging Agent CRUD
/api/agents/messagingList all messaging agents for the current user.
/api/agents/messagingCreate a new messaging agent. Returns 403 if the user has reached their plan's agent limit.
Request Body
{
"name": "Booking Assistant",
"channel": "sms",
"phoneNumberId": "cm_abc...",
"greeting": "Hi! I'm your booking assistant.",
"tone": "friendly",
"language": "en",
"eventTypeIds": ["cm_evt1...", "cm_evt2..."]
}/api/agents/messaging/{id}Read, update, or delete a specific messaging agent.
Response Example (GET /api/agents/messaging)
{
"agents": [
{
"id": "cm_msg1...",
"name": "SMS Booking Agent",
"channel": "sms",
"phoneNumber": "+19143593794",
"tone": "professional",
"language": "en",
"isActive": true,
"createdAt": "2026-02-12T10:00:00.000Z"
},
{
"id": "cm_msg2...",
"name": "WhatsApp Assistant",
"channel": "whatsapp",
"phoneNumber": "+19143593794",
"tone": "friendly",
"language": "en",
"isActive": true,
"createdAt": "2026-02-14T15:00:00.000Z"
}
]
}Security
Twilio signature verification
All inbound webhooks verify the x-twilio-signature header using TWILIO_AUTH_TOKEN. This prevents forged webhook requests from reaching your agents.
WhatsApp sender status webhook
The WhatsApp sender status callback endpoint uses the same Twilio signature verification to ensure status updates (pending, approved, rejected) are authentic.
Rate limiting
API endpoints are rate-limited per user. The messaging agent itself includes an in-memory rate limiter and circuit breaker to prevent abuse and handle AI provider outages gracefully.
STOP/HELP compliance
Users can text STOP to opt out of all messages. HELP returns a support message. Both are required by Twilio and telecom regulations. Opt-out is checked before every outbound message.
User isolation
Agents only access their owner's calendar, event types, and bookings. A user's agent can never access another user's data.
Circuit breaker
If Claude AI is unavailable, the messaging agent gracefully degrades with a "temporarily unavailable" response instead of leaving the customer waiting or crashing.
Troubleshooting
"WhatsApp API not yet available"
A Twilio admin must register the first WhatsApp sender manually via the Twilio Console before API registration works. This is a one-time prerequisite per Twilio account. Contact support if you see this error.
WhatsApp stuck on "Pending"
Meta typically approves within 1-3 business days. Click "Refresh Status" to check for updates. If still pending after 5 days, the display name may need review — try deregistering and re-registering with a slightly different name.
WhatsApp "Rejected"
Meta didn't approve the display name. Common reasons: name doesn't match a real business, contains special characters, or uses restricted words (like "WhatsApp" or "Official"). Click "Try Again" with a different name.
Agent doesn't respond to texts
Check these in order: (1) The agent is active (toggle is on). (2) The phone number is provisioned and not released. (3) For WhatsApp: verify WhatsApp status is "Approved". (4) Check if the sender has opted out (STOP keyword).
Messages show as "failed"
Check Twilio geo-permissions for the destination country. International SMS requires explicit country enablement in Twilio Console → Messaging → Settings → Geo Permissions.
Need Help?
Our support team can help you set up and troubleshoot Messaging Agents.