File Format - Outreach Templated SMS
Outreach Templated SMS File Format
The Outreach Templated SMS file allows integrators to send SMS messages that use a pre-configured template through Tulip’s Outreach system. Templates are configured in Admin Console and support replacement terms (dynamic variables) that are populated at processing time using the provided context entities.
The first line of an Outreach Templated SMS CSV file must be the header row. Each subsequent row creates a separate outreach job.
File Prefix: TOTS
Feature Gate: The environment must have outreach-plus enabled; otherwise, the file will fail to upload any records successfully.
Spec
The following table shows the accepted CSV columns for the Outreach Templated SMS entity.
| CSV Header | Data Type | Required | Description |
|---|---|---|---|
Template ID | string | Yes | Template UUID or External ID |
Employee ID | string | Yes | Employee UUID or External ID — required if template has employee replacement terms, or if From is not provided |
Customer ID | string | Yes | Customer UUID or External ID — required if template has customer replacement terms, or if To is not provided |
Store ID | string | Yes | Store UUID or External ID — required if template has store replacement terms |
To | string | Yes | Recipient phone number override (E.164 format). If left blank, the system resolves the address from the Customer ID. |
From | string | Yes | Sender phone number override. If left blank, the system resolves the address from the Employee ID or template/configuration defaults. |
Campaign ID | string | No | Links the dispatch to a campaign |
Expiry Date | string | No | Expiration time in UTC ISO 8601 format (YYYY-MM-DDTHH:mm:ssZ). If the message has not been dispatched by this date, it will be marked as Expired. |
Start Date | string | No | Scheduled send time in UTC ISO 8601 format (YYYY-MM-DDTHH:mm:ssZ). If in the future, the message is held until this time. |
Sender and Recipient Resolution
For templated files, the To and From fields can be left blank. If not provided, the system resolves them from the context entities:
Recipient (To) fallback logic:
- If
Tois provided, use it directly - If not provided, get the customer’s primary phone number
- If no primary is set and multiple exist, use the one with the most recent
date_created - If the customer has no phone number, the request fails
Sender (From) fallback logic:
- If
Fromis provided, use it directly - If not provided, use the employee’s phone number
- If the employee has no phone number, fall back to the template’s configured sender
- Final fallback: use the default sender from the Outreach Configuration (
textMessageDefaultSender)
Replacement Terms
If a template contains replacement terms (e.g., {{employeename}}, {{customerfirstname}}, {{storename}}), the corresponding context entity must be provided. The template content is populated at the time the file is processed — the final resolved content is stored on the job record.
Important Notes
- All dates must be in UTC ISO 8601 format (
YYYY-MM-DDTHH:mm:ssZ). - Phone numbers must include country code (e.g.,
+12267903132). - If
ToorFromare left blank, the system resolves addresses from the Customer/Employee IDs. - Each CSV row creates a separate outreach job.
- Success/failure can be monitored in Admin Console under Outreach Jobs.
- A successfully processed row means the job has been accepted for sending. It does not guarantee delivery.
- Template replacement terms are resolved when the file is processed, not when the message is sent.
Outreach Templated SMS CSV Example
See the following Outreach Templated SMS CSV sample file.