> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pulsyai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Build an SMS AI Agent

> Build an SMS AI agent in PulsyAI — handle SMS conversations, deploy a website chatbot widget, and automate text-based interactions. Step-by-step guide to script, conversation flow, and integrations.

An SMS AI agent in PulsyAI is a text-based assistant that handles SMS conversations and can be deployed as an embeddable chatbot widget on any website — operating entirely in chat, without any phone calls.

<Columns cols={3}>
  <Card title="Forgiving channel" icon="shield-check">
    No STT errors, no TTS quirks. Leads reply on their own time.
  </Card>

  <Card title="Three surfaces" icon="layout-grid">
    Standalone SMS, website widget, or fallback for an inbound voice agent.
  </Card>

  <Card title="Same methodology" icon="book-open">
    Capture-first script, never repeat info back, conditional fallbacks.
  </Card>
</Columns>

<Tip>
  **Before you start:** Read [Build a Script](/platform/build-your-agent/build-a-script) end-to-end. The principles on that page apply directly to SMS — short messages, fast capture, no useless confirmations, conditional fallback triggers. The SMS channel inherits the methodology with a few channel-specific tweaks called out in the steps below.
</Tip>

## The SMS conversion stack

SMS agents in PulsyAI typically run in one of three configurations:

| # | Configuration                               | What it is                                                                                      | Where the trigger lives                                               |
| - | ------------------------------------------- | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| 1 | **Standalone SMS agent**                    | A dedicated SMS flow (campaigns, database reactivation, support, nurture).                      | The SMS agent itself.                                                 |
| 2 | **Website chatbot widget**                  | Same SMS agent deployed as an embeddable chat widget on the client's site.                      | The widget surface. See [Website Chatbot](/platform/website-chatbot). |
| 3 | **SMS fallback for an Inbound voice agent** | The SMS agent receives the conversation when the inbound voice agent's Call Back trigger fires. | The **Inbound voice agent** (not the SMS agent).                      |

The setup steps below walk you through configuring a standalone SMS agent. For the fallback configuration, see [Build an Inbound AI Agent](/platform/build-an-inbound-ai-agent#step-5-configure-call-back-and-stale-conversation-recovery).

## Setup walkthrough

<Steps>
  <Step title="Assign a phone number (or deploy as a widget)" icon="phone">
    SMS agents need either a phone number capable of sending and receiving SMS, or a website chatbot widget deployment — or both.

    <Columns cols={2}>
      <Card title="Purchase in-app" icon="shopping-cart">
        Buy a new SMS-capable number directly from PulsyAI.
      </Card>

      <Card title="Import from Twilio" icon="download">
        Bring a number you already own on Twilio (SMS enabled).
      </Card>

      <Card title="Import from Telnyx" icon="download">
        Bring a number you already own on Telnyx (SMS enabled).
      </Card>

      <Card title="Website widget" icon="globe">
        Deploy as an embeddable chat widget — no phone number required.
      </Card>
    </Columns>

    For full details on each phone-number option, see the [Phone Numbers](/platform/phone-numbers) page. For the website chatbot widget surface, see the [Website Chatbot](/platform/website-chatbot) page.
  </Step>

  <Step title="Build the agent and paste your script" icon="file-text">
    Inside your agent builder, create a new agent of type **SMS**. Paste the script you drafted using the [Build a Script](/platform/build-your-agent/build-a-script) methodology into the agent's prompt.

    The four-step structure (**greeting → need identification → capture → closure**) applies as-is for SMS, with the following channel-specific tweaks:

    <Columns cols={2}>
      <Card title="Greeting — keep it short" icon="hand">
        SMS doesn't need the "you're online with Luna the virtual assistant" voice disclosure pattern. A simple `"Hi, this is Luna from {company_name} — how can I help?"` is enough.
      </Card>

      <Card title="Message length — one or two sentences" icon="message-square">
        Long SMS messages get split into multiple parts and feel robotic. If you need to capture multiple fields, ask for them one at a time across multiple short messages, not all at once.
      </Card>

      <Card title="No read-back — applies to SMS too" icon="eye-off">
        The "never repeat user information back" principle from Principle 3 applies to SMS. Acknowledge captures with "noted" or "got it" and move on. The lead can see what they typed in their own message history; repeating it back wastes turns and triggers exit intent.
      </Card>

      <Card title="Knowledge base — inline fits well" icon="book">
        Inline knowledge fits well in SMS prompts because there's no TTS latency to worry about. For larger knowledge bases, use the dedicated [Knowledge Base](/platform/knowledge-base) section.
      </Card>
    </Columns>
  </Step>

  <Step title="Configure Stale Conversation Recovery" icon="rotate-cw">
    For SMS agents, **Stale Conversation Recovery is the single most important integration to configure**. It handles the automatic retries when an SMS thread goes silent — the lead opened the message, maybe even responded once or twice, then dropped off without booking or capturing.

    Configure it in the SMS agent's Integrations tab:

    <Columns cols={3}>
      <Card title="Trigger condition" icon="zap">
        Activate when the lead hasn't responded within a configurable window (1-4 h for warm leads, 24-48 h for colder reactivation).
      </Card>

      <Card title="Relaunch delay" icon="timer">
        Speed-to-lead: 30 min – 1 h. Database reactivation: 24 h between attempts.
      </Card>

      <Card title="Max attempts" icon="repeat">
        2-3 attempts maximum. Beyond this, recovery becomes spam and damages sender reputation.
      </Card>
    </Columns>

    For the full configuration walkthrough, see the dedicated [Stale Conversations](/platform/integrations/stale-conversations) page.

    <Accordion title="Note: Call Back is not needed on standalone SMS agents" defaultOpen={false} icon="info">
      The Call Back integration in the Integrations tab is the trigger that initiates an SMS fallback from a voice agent — it's how an inbound voice agent decides to switch to SMS when a caller hangs up before completing the capture. **Standalone SMS agents don't need Call Back configured on themselves**, because they're already operating in SMS — there's no voice-to-SMS transition to trigger.

      Call Back only becomes relevant for SMS agents in one scenario: when you're using an SMS agent (either a standalone one, or the voice agent itself acting as its own SMS fallback) as the fallback target for an Inbound voice agent. In that case, the Call Back integration is configured on the **Inbound voice agent**, not on the SMS agent. The SMS agent simply receives the conversation thread when the inbound trigger fires.

      For details, see [Call Back](/platform/integrations/call-back) and the [Build an Inbound AI Agent](/platform/build-an-inbound-ai-agent#step-5-configure-call-back-and-stale-conversation-recovery) guide.
    </Accordion>
  </Step>

  <Step title="Set up campaigns (for standalone SMS agents)" icon="megaphone">
    Standalone SMS agents support **SMS Campaigns** — exactly the same mechanics as Outbound Campaigns but over SMS. Upload an Excel (XLSX) file with a `PHONE_NUMBER` column and any additional columns you want as dynamic variables (`{first_name}`, `{email_address}`, `{last_purchase}`, etc.), schedule the campaign for a chosen date, time, and timezone, and PulsyAI fires the SMS sequence on schedule.

    **Use cases where SMS Campaigns shine:**

    * **Database reactivation** — Re-engage cold leads from the client's existing CRM database with a personalized SMS sequence. A casual SMS ("Hey `{first_name}`, it's been a while — still interested in `{service}`?") combined with Stale Conversation Recovery converts dormant database entries into booked appointments at a fraction of the cost of paid ads.
    * **Promo and offer campaigns** — One-off blasts tied to a specific offer, time window, or event. Excel column for the promo code, the offer expiration, or any other dynamic content the agent should reference.
    * **Follow-up nurture sequences** — Scheduled multi-touch SMS sequences for leads who engaged once but didn't convert. The Excel file holds the contact list, Stale Conversation Recovery handles the retries between touches.
    * **Speed-to-lead via SMS** — When voice is not appropriate for the audience (younger demographics, B2C verticals where texting is the dominant channel), running speed-to-lead over SMS instead of voice can outperform voice on response rate.
    * **Appointment reminders** — A batch reminder to upcoming appointment holders, with the agent ready to handle reschedule requests inline.

    <Info>
      The Excel format, the strict `PHONE_NUMBER` column rule, dynamic variable syntax, scheduling, and lifecycle states are **identical to Outbound Campaigns**. For the full walkthrough, see [Outbound Campaigns](/platform/campaigns) — every detail there applies to SMS Campaigns, just over text instead of voice.
    </Info>
  </Step>

  <Step title="Connect integrations and test" icon="plug">
    The last step is wiring up where the captured leads should land. SMS agents typically integrate with:

    <Columns cols={3}>
      <Card title="CRM connectors" icon="database">
        HubSpot, GoHighLevel, and other native connectors push lead data directly into your client's CRM.
      </Card>

      <Card title="Webhooks" icon="webhook">
        Custom destinations for clients with bespoke systems.
      </Card>

      <Card title="Email or Slack" icon="bell">
        Simple notification channels for smaller operations.
      </Card>
    </Columns>

    For the full list of available integrations and setup guides, see the [Integrations](/platform/integrations) section.

    <Check>
      **Final test:** send a test SMS to the agent's number (or open the widget on the client's site), run through the full capture flow, and verify two things:

      1. The captured data lands correctly in the configured destination.
      2. If you deliberately stop replying mid-thread, the Stale Conversation Recovery SMS arrives at the expected interval.
    </Check>
  </Step>
</Steps>

## Common SMS use cases

<CardGroup cols={2}>
  <Card title="Database reactivation" icon="rotate-cw" href="/platform/campaigns">
    Re-engage cold leads sitting in the client's CRM. A casual SMS sequence ("Hey, it's been a while — still interested in {service}?") combined with Stale Conversation Recovery converts dormant database entries into booked appointments at a fraction of the cost of paid ads.
  </Card>

  <Card title="Website chatbot widget" icon="message-circle" href="/platform/website-chatbot">
    Deploy the SMS agent as an embeddable chat widget on the client's website. Visitors who wouldn't have picked up the phone or filled out a form will engage in chat — capturing leads from the same traffic the client is already paying to attract.
  </Card>

  <Card title="Inbound voice agent SMS fallback" icon="phone-incoming" href="/platform/integrations/call-back">
    Configured via Call Back on the Inbound voice agent. Catches callers who hung up before completing the capture and follows up via text, where they're far more likely to respond than to a second call.
  </Card>

  <Card title="Speed-to-lead via SMS" icon="zap">
    For paid-ad lead forms where SMS converts better than voice. The agent texts the lead within seconds of form submission, captures intent and contact info, and books the human callback.
  </Card>

  <Card title="Customer support intake" icon="life-buoy" href="/platform/knowledge-base">
    Handle first-line support questions via SMS, deflect repetitive queries using the inline knowledge base, and escalate complex cases to the human team with full conversation context attached.
  </Card>

  <Card title="Multi-touch nurture sequences" icon="calendar-days">
    Scheduled multi-message sequences for leads who engaged once but didn't convert. The agent paces the touches over days or weeks, with Stale Conversation Recovery handling silent-thread retries between touches.
  </Card>
</CardGroup>

## Next step

<CardGroup cols={2}>
  <Card title="Build an Inbound AI Agent" icon="phone-incoming" href="/platform/build-an-inbound-ai-agent">
    The implementation guide for inbound voice agents — pre-call intro, Verify User Information, and the Call Back + Stale Recovery fallback stack.
  </Card>

  <Card title="Build an Outbound AI Agent" icon="phone-outgoing" href="/platform/build-an-outbound-ai-agent">
    The implementation guide for outbound agents — speed-to-lead, the {name} greeting variant, Auto Call Back, and SMS fallback.
  </Card>
</CardGroup>
