# Text conversation ended

Starts a workflow when a customer's text conversation with your business number goes quiet, with the summary and the messages.

Updated Oct 28, 2026. Source: https://smallbusinesschatbot.com/docs/workflows/triggers/text-conversation-ended

## What this does

In Small Business Chatbot, this trigger starts a run in every published workflow that uses it, once for each text conversation a customer starts with your business number.

- **Label in the app:** Inbound text conversation ended
- **Fires:** 5 minutes after the customer's last text, or when they text "bye" or "goodbye"
- **Carries:** The fields below, as `{{trigger.…}}`
- **Settings:** None. Its window shows "No settings for this node yet."

## When it fires

- Each text from the customer restarts a 5-minute clock. When it runs out, the app summarises the conversation, saves it, and starts the runs.
- A text of "bye" or "goodbye" ends the conversation at once.
- It fires whether or not the texting agent replies. **Allow texting agent to reply to inbound texts** under **Voice Agent › Settings** decides if it answers.
- A conversation starts with a customer's text, a reply to a workflow's text included.

## What it carries

| Variable | Type | What it holds |
|---|---|---|
| `trigger.first_name` | text | The customer's first name, when they gave it. Empty otherwise. |
| `trigger.phone` | text | The number the customer texted from, as its last 10 digits |
| `trigger.email` | text | The email the customer gave. Empty when not given. |
| `trigger.action_items` | text | The conversation summary: what the customer wants and what to do next, written to you |
| `trigger.contact_information_collected` | true or false | `true` when the customer wrote a phone number or email in their texts |
| `trigger.session_key` | text | The customer's number and your number, joined by a colon, as the conversation's key |
| `trigger.company_name` | text | Your company name as your assistant has it |
| `trigger.chatbot_url` | text | The address of your assistant |
| `trigger.llm_model` | text | The AI model that answered |
| `trigger.conversation_history_id` | id | The saved conversation's id |
| `trigger.conversation_type` | text | Always `SMS_Agent` |
| `trigger.date_created` | date and time | When the conversation was summarised, as `2026-10-27 14:03:11` |
| `trigger.number_of_messages` | number | Texts in the conversation, both sides |
| `trigger.messages` | list | The texts. Each has `role` (`user` for the customer, `assistant` for the texting agent) and `content`. |
| `trigger.token_usage` | object | AI usage counts for the conversation |
| `trigger.event_name` | text | Always `inbound_text_conversation_ended`. Also in `trigger.event_type` and `trigger.event.name`. |
| `trigger.event_source` | text | Always `inbound_sms_session_manager` |
| `trigger.public_config_id` | id | Your account's id. Also in `trigger.workspace.public_config_id`. |
| `trigger.conversation.channel` | text | Always `sms` |
| `trigger.contact.*` | object | The CRM contact for the customer. All fields are empty when there isn't one. The fields are listed in [Contact events](https://smallbusinesschatbot.com/docs/workflows/triggers/contact-events#contact-fields). |
| `trigger.summary.*` | object | `first_name`, `phone`, `email`, `action_items` and `contact_information_collected`, grouped |
| `trigger.chatbot.*` | object | `chatbot_url`, `company_name` and `llm_model`, grouped |
| `trigger.conversation.*` | object | The conversation fields above, grouped |
| `trigger.conversation_record.*` | object | The conversation as saved, with its original field names. `Business_Number` is your number. |

`trigger.conversation_record.Lead_Quality_Score` holds A, B, C or D when **Allow Lead Grading in the Summary?** is **Yes** under **Chat Widget › Look and Feel**.

> **Note:** `trigger.contact` is filled only when **Save contacts** is on for **Text messages (SMS)** under **CRM › Contacts › Settings**. **Stop workflows when contact replies** and **Only enrol each contact once** match runs by this contact.

> **Careful:** A workflow on this trigger that texts the customer back can loop. Their reply starts a new conversation, which ends 5 minutes later and starts the workflow again. Turn on **Only enrol each contact once** before you publish. It needs `trigger.contact`: a conversation with no contact is blocked and shows **Blocked due to re-enrol**.

## Example

A trimmed run:

```json trigger
{
  "first_name": "Priya",
  "phone": "4165550142",
  "action_items": "Priya asked if you service gas fireplaces. Text her a time to come out.",
  "number_of_messages": 4,
  "conversation": { "channel": "sms" },
  "contact": { "contact_id": "c_2210", "phone": "+14165550142" }
}
```

## Used in

- [Triggers](https://smallbusinesschatbot.com/docs/user-guides/workflows/triggers): how to pick this trigger.
- [How texting works](https://smallbusinesschatbot.com/docs/user-guides/texting/how-texting-works): what the texting agent does with inbound texts.
- [HTTP request](https://smallbusinesschatbot.com/docs/integrations/automation/http-request): send the conversation's details to another tool.
