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. 1

    Go to Phone Numbers

    Navigate to Dashboard → Phone Numbers in your LinkTime dashboard.

  2. 2

    Click "Enable WhatsApp"

    On any phone number card, click the "Enable WhatsApp" button to start the registration process.

  3. 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. 4

    Submit and wait for approval

    Status changes to "Pending" immediately. Meta reviews your business name (typically 1-3 business days).

  5. 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

StatusBadge ColorWhat It Means
Not registeredGrayWhatsApp not enabled on this number
PendingAmberRegistration submitted, awaiting Meta approval
ApprovedGreenWhatsApp active — agents can use this number
RejectedRedMeta 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. 1

    Go to Dashboard → Phone Numbers

    Navigate to Phone Numbers in your dashboard.

  2. 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.

WhatsApp

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

PlanMax Phone NumbersMax SMS AgentsMax WhatsApp AgentsMonthly SMS Quota
Free0000
Pro122100
Business51010500
Enterprise205050Unlimited

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. 1

    Navigate to SMS Agents

    Go to Dashboard → SMS Agents in your LinkTime dashboard.

  2. 2

    Click "Create SMS Agent"

    Select a phone number from your provisioned numbers, or provision a new one.

  3. 3

    Configure your agent

    Set the agent name, greeting message, tone (professional / friendly / casual / custom), language, and linked event types.

  4. 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. 1

    Enable WhatsApp on your phone number

    First, complete the WhatsApp Registration process above. Wait for Meta to approve your business display name.

  2. 2

    Navigate to WhatsApp Agents

    Go to Dashboard → WhatsApp Agents in your LinkTime dashboard.

  3. 3

    Click "Create WhatsApp Agent"

    Select a WhatsApp-enabled phone number (status must be "Approved").

  4. 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.

GET/api/agents/phone-numbers

Returns all your phone numbers with their capabilities and linked agents.

POST/api/agents/phone-numbers

Provision a new phone number.

Request Body

{
  "countryCode": "US",
  "label": "Main Office"
}
POST/api/agents/phone-numbers/{id}/whatsapp

Register for WhatsApp on a phone number.

Request Body

{
  "displayName": "Dr. Smith Dental"
}

Response

{
  "status": "pending",
  "senderSid": "XE..."
}
GET/api/agents/phone-numbers/{id}/whatsapp

Check WhatsApp registration status. Add ?refresh=true for a live Twilio fetch instead of returning cached status.

DELETE/api/agents/phone-numbers/{id}/whatsapp

Deregister from WhatsApp. Deactivates all WhatsApp agents on this number.

Messaging Agent CRUD

GET/api/agents/messaging

List all messaging agents for the current user.

POST/api/agents/messaging

Create 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..."]
}
GET/PUT/DELETE/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.