Description
Sends an SMS message to the contact’s phone number. The SMS is scheduled for delivery and returnstrue if successfully queued.
A message sent this way appears in the call transcript, in the right place in the conversation, with its full text. It shows up while the call is still running, so you can watch it go out on a live call. A send that fails adds nothing to the transcript — it is recorded as a note on the call instead.
The number the text is sent from is your assistant’s own number, worked out from the call. On a web call there is no phone number on the caller’s side, so the tool handles that case explicitly rather than texting a placeholder: if there is no valid mobile number to send to, the step simply returns false and you route the Otherwise condition.
Manual Inputs
Global Inputs
This tool automatically uses:Manual Outputs
Global Outputs
Conditions
Success (true)
The tool returnstrue when:
- The SMS is successfully queued for delivery
Failure (false)
The tool returnsfalse when:
- The contact’s phone number is missing or invalid
- The assistant’s phone number is not configured
- The message content is empty
- Another error occurs when scheduling the SMS
Variables this tool writes
Send to Contact writes a single variable, and only in a narrow case: when an unexpected error interrupts the send attempt. The more common failures — a missing or invalid mobile number, an unconfigured assistant number, or an empty message — fail without writing anything. On success it writes nothing to thesms namespace; the only success signal is the boolean result output you route on. Nothing is written to any other namespace.
{{sms.send_error_spoken}} holds a raw diagnostic describing what went wrong, prefixed with SMS sending error:. Despite the name, the value is not a caller-ready sentence — do not speak it back verbatim. Treat it as a signal for logging or branching and speak your own fallback line to the caller. Because it is set only on an unexpected send error, and not on the everyday validation failures (missing or invalid number, empty message), it will be empty on those paths — so guard against both an empty value and a stale value left by an earlier step before you rely on it.
For the full list of namespaces and fields you can read and write, see Variables.
Example Usage
Best Practices
- Include key details — Confirmation numbers, times, links
- Handle failures gracefully — Always have a verbal fallback
- Use variables — Personalise with
{{contact.first_name}}and booking details - Validate phone first — Use a Code Step to check the number can receive SMS before sending
Next Steps
- SMS - Read from Contact — Read the recent SMS exchange with the contact
- Tool Steps — Learn how to configure tool steps
- Variables — See all available variables

