Skip to main content

Outbound SMS via CSV list

Updated this week

Launch automated outbound SMS batches by creating structured CSV items in the Outbound SMS CSV files column on the Workflow Builder page β€” queue messages and define conversation reasons for each recipient.

Define the outbound SMS list

To start a batch of SMS messages, create a new item on the Workflow Builder page under the Outbound SMS CSV files column containing your CSV data.

  1. Navigate to the Workflow Builder page in the Builder.

  2. Locate the Outbound SMS CSV files column.

  3. Click the + (plus) button at the top of the column to create a new item.

  4. Enter a Title for the batch (e.g., "Leads Batch 1").

  5. Paste your structured CSV data into the Body field.

  6. Click Save.

Once saved, the AI Employee analyzes the data and queues the SMS messages. You can create multiple batches by adding new items to the Outbound SMS CSV files column.

CSV format requirements

Your data in the Body field must be formatted as standard CSV.

  • Header row: Include a header row to define column names (e.g., Phone Number,Reason). This helps the agent accurately identify the data.

  • Phone numbers: Ensure phone numbers are in a valid international format (e.g., include the country code like +1...). Invalid formats may prevent the SMS from being sent.

  • Commas inside field values: Because CSV uses commas as delimiters, any field value that contains a comma must be wrapped in double quotes ("). Without quotes, everything after the first comma in that value is treated as a new column and gets silently dropped.

  • To include a literal double-quote character inside a quoted field, escape it by doubling it ("").

❗❗ IMPORTANT

Avoid duplicate phone numbers in the CSV. Duplicates can cause issues with messaging logic and result tracking.

Example CSV data

Basic example (no commas in field values):

Phone,Name,Reason
+1234567890,Jane,Follow up regarding the recent laptop purchase. Ask if they are satisfied with the service.
+1987654321,John,Check in regarding their account. Inform them the account has been upgraded to premium status.

Example with commas in the Reason field:

If the reason text contains commas (for example, a specific SMS script), wrap the field in double quotes. To include a literal " inside the quoted value, write it as "".

Phone,Name,Reason
+12314123846,Das,"send this exact sms: Hi {first_name} remember exploring Bargain Books? We've created a new way to work with our expert team, and we're revealing it in a free Author Strategy Webinar. Save your seat: https://example.com/webinar"

Without the surrounding quotes, everything after the first comma in the reason text would be silently dropped β€” the agent would only receive the partial string up to that comma.

How SMS dispatch works

When the AI Employee processes an SMS batch, it follows this sequence for each row in the CSV:

  1. Greeting generation: The AI Employee reads the Reason column for the recipient and generates a personalized opening message. The greeting reflects the agent's configured name, business context, tone, and language.

  2. Initial SMS sent: The generated greeting is sent to the recipient's phone number.

  3. Session opens: A conversation session begins and remains active for the configured session duration (default 60 minutes). During this window, the recipient can reply and the AI Employee will respond, conducting a two-way SMS conversation.

  4. Session ends: When the session duration expires or the conversation concludes naturally, the AI Employee analyzes the full conversation, generates a summary, and records the result.

πŸ—’οΈ NOTE

The AI Employee acts as the conversational agent during the SMS session. It uses the reason text from the CSV to guide the conversation toward the intended goal.

Session duration

The attribute project_attributes_setting_outbound_sms_session_duration controls how long each SMS conversation session stays active, in minutes.

Attribute

Default

Type

project_attributes_setting_outbound_sms_session_duration

60 (minutes)

Number

If the recipient does not reply within the session window, the conversation is marked as failed with a "customer-did-not-answer" status.

To adjust the session duration:

  1. Navigate to the Attributes page.

  2. Search for project_attributes_setting_outbound_sms_session_duration.

  3. Set the value to the desired duration in minutes.

Retrieve SMS results

Once the AI Employee processes the SMS batch, the results are written to a shared project attribute used for both outbound calls and SMS.

  1. Navigate to the Attributes page.

  2. Search for the project_attributes_outbound_call_table_csv_result attribute.

  3. Copy the content from the attribute value.

  4. Save the content as a .csv file (e.g., results.csv) to open it in spreadsheet software for analysis.

πŸ—’οΈ NOTE

If your list contains many entries (typically more than 50), the system will automatically generate multiple result attributes (e.g., ..._batch_1, ..._batch_2) to store the data.

Webhook payloads

You can configure the AI Employee to send conversation results to an external endpoint after each SMS session completes. This is useful for syncing results with a CRM or analytics platform.

Attribute

Description

project_attributes_setting_outbound_request_endpoint

The URL to receive the POST payload after each SMS session ends.

project_attributes_setting_outbound_payload_schema

A JSON schema defining additional fields to extract from the conversation.

project_attributes_setting_outbound_request_headers

Custom HTTP headers to include with the webhook request (JSON format).

When an endpoint is configured, the system sends a POST request containing:

  • phone_number β€” the recipient's phone number

  • transcript β€” the full SMS conversation text

  • status β€” finished (customer replied) or failed (no reply)

  • task_id β€” the unique task identifier

  • user_id β€” the unique user identifier for the recipient

  • Any additional fields defined in the payload schema

To configure webhook delivery:

  1. Navigate to the Attributes page.

  2. Set project_attributes_setting_outbound_request_endpoint to your webhook URL.

  3. Optionally, define project_attributes_setting_outbound_payload_schema with a JSON object describing additional data fields to extract from the conversation.

  4. Optionally, set project_attributes_setting_outbound_request_headers with any required authentication headers in JSON format.

Did this answer your question?