Events
One of the data structures are events. They are sent to a chat via thesend_event method. Apart from events, there are also Properties, Users, and Other common data structures.
These are the available event types:
File
File event indicates about a file being uploaded. Request| Parameter | Required | Data type | Notes |
|---|---|---|---|
custom_id | no | string | |
type | yes | string | file |
properties | no | object | Properties |
url | yes | string | Has to point to the Text CDN. It’s recommended to use the URL returned by upload_file. |
alternative_text | no | string | Only applicable to images |
| Field | Returned | Notes |
|---|---|---|
id | always | |
custom_id | optionally | |
created_at | always | Date & time format with a resolution of microseconds, UTC string. |
type | always | |
author_id | always | |
properties | optionally | |
name | always | |
url | always | |
thumbnail_url, thumbnail2x_url | only for images | |
content_type | always | |
size, width, height | only for images | |
alternative_text | only for images |
Sample File in response
Form
The Form event contains an empty form to be sent in the chat. It doesn’t matter how the form is configured or what fields it has — it can be any event of typeform. Currently, the Form events are not supported natively in Text, but you can leverage this feature in a custom chatting solution.
Request
| Field | Required | Data type | Notes |
|---|---|---|---|
custom_id | no | string | |
type | yes | string | form |
properties | no | object | Properties |
form_id | yes | string | |
fields | yes | array | The fields a form contains. See form fields for details. |
| Field | Returned | Notes |
|---|---|---|
id | always | |
custom_id | optionally | |
created_at | always | Date & time format with a resolution of microseconds, UTC string. |
type | always | |
author_id | optionally | If form is generated by system, then this field is omitted. |
properties | optionally | |
form_id | always | |
form_type | optionally | The most popular form types include: prechat, postchat, ask_for_email, but those aren’t the only possible options. If you don’t see this field in a chat, it means that chat had been started before we introduced this field. |
fields | always | An array of form fields |
Sample Form in response
Filled form
Filled form event contains data from a form (prechat or postchat survey). Request| Field | Required | Data type | Notes |
|---|---|---|---|
custom_id | no | string | |
type | yes | string | filled_form |
recipients | yes | string | Possible values: all (default), agents |
properties | no | object | Properties |
form_id | yes | string | |
fields | yes | array | The fields a form contains. See filled form fields for details. |
| Field | Returned | Notes |
|---|---|---|
id | always | |
custom_id | optionally | |
created_at | always | Date & time format with a resolution of microseconds, UTC string. |
type | always | |
author_id | always | |
properties | optionally | |
form_id | always | |
form_type | optionally | The most popular form types include: prechat, postchat, ask_for_email, but those aren’t the only possible options. If you don’t see this field in a chat, it means that chat had been started before we introduced this field. |
fields | always | The fields a form contains. See filled form fields for details. |
Sample Filled form in response
Message
Message event contains text message to other chat users. Request| Parameter | Required | Data type | Notes |
|---|---|---|---|
custom_id | no | string | |
text | yes | string | Max. raw text size is 16 KB (one UTF-8 char like emoji 😁 can use up to 4 B); to send more, split text into several messages. |
type | yes | string | message |
properties | no | object | Properties |
postback | no | object | Indicates that the message event was generated in response to a rich message event. |
postback.id | yes | string | ID of the postback from the rich message event. |
postback.thread_id | yes | string | ID of the thread with the rich message event. |
postback.event_id | yes | string | ID of the rich message event. |
postback.type | no | string | Should be used together with postback.value (when one of them is present, the other is required). |
postback.value | no | string | Should be used together with postback.type (when one of them is present, the other is required). |
postback.ecommerce | no | object | Object containing data specific to rich messages with ecommerce template, like product_id. |
postback.ecommerce.product_id | no | string | The ID of the product displayed by the rich message. Required when sending postback.ecommerce. |
postback.ecommerce.option_id | no | string | The ID of the selected option for the product. |
postback.ecommerce.quantity | no | number | Quantity of the product. |
| Field | Returned | Notes |
|---|---|---|
id | always | |
custom_id | optionally | |
created_at | always | Date & time format with a resolution of microseconds, UTC string. |
type | always | message |
author_id | always | |
text | always | |
postback | optionally | Appears in a message only when triggered by a rich message. |
postback.id | always | |
postback.thread_id | always | |
postback.event_id | always | |
postback.type | optionally | Appears only if postback.value is present. |
postback.value | optionally | Appears only if postback.type is present. |
postback.ecommerce | optionally | |
postback.ecommerce.product_id | optionally | |
postback.ecommerce.option_id | optionally | |
postback.ecommerce.quantity | optionally | |
properties | optionally | Properties |
Sample Message in response
Rich message
Rich message event contains rich message data structure. Read more in a document dedicated to Rich messages. Request| Parameter | Required | Data type | Notes |
|---|---|---|---|
custom_id | no | string | You can give your RM a custom ID. |
type | yes | string | Event type: rich_message |
properties | no | object | The properties data structure |
template_id | yes | string | Defines how every Rich Message will be presented. Values: cards, sticker, or quick_replies. |
elements | no | array | Can contain up to 10 element objects. |
elements.title | yes | string | Displays formatted text on RMs. |
elements.subtitle | yes | string | Displays formatted text on RMs. |
elements.image | yes | image | Displays images on RMs. Required param: url; Optional params: name, content_type, size, width, height, alternative_text. |
elements.buttons | no | array | Displays buttons. Can contain up to 13 button objects. |
elements.buttons.text | yes | string | Text displayed on a button. |
elements.buttons.type | yes | string | Defines the behavior after a user clicks the button. Should be used together with elements.buttons.value. Possible values: webview, message, url, phone. More… |
elements.buttons.value | yes | string | Should be used together with elements.buttons.type. You can use this field to give the rich message of a webview type (a Moment) a custom title. More… |
elements.buttons.webview_height | yes | string | Required only for the webview button type. Possible values: compact, full, tall. |
elements.buttons.postback_id | yes | string | A description of the sent action. Describes the action sent via send_rich_message_postback. More… |
elements.buttons.user_ids | yes | array | Describes users that sent the postback with "toggled": true. |
elements.buttons.target | no | string | Should be used for the url button type. Specifies if the URL should open in the current or a new tab. Possible values: new, current. |
| Field | Returned | Notes |
|---|---|---|
id | always | Generated server-side |
custom_id | optionally | |
type | always | |
author_id | always | Generated server-side |
created_at | always | Date & time format with a resolution of microseconds, UTC string. Generated server-side. |
properties | optionally | |
template_id | always | |
elements | optionally | |
elements.title | always | |
elements.subtitle | always | |
elements.image | always | |
elements.buttons | optionally | |
elements.buttons.text | always | |
elements.buttons.type | always | |
elements.buttons.value | always | |
elements.buttons.webview_height | always | Unless button type is different than webview. |
elements.buttons.postback_id | always | |
elements.buttons.user_ids | always | |
elements.buttons.target | optionally | |
elements.ecommerce | optionally | This element is only present for rich messages with template_id set to ecommerce. |
elements.ecommerce.view_type | optionally | Can be either tags, swatch, images or select. |
elements.ecommerce.product_id | optionally | |
elements.ecommerce.label | optionally | |
elements.ecommerce.options | optionally | Each option consists of option_id, label and optionally price, regular_price, currency, color, image_url, image_thumbnail_url, available, selected. |
elements.ecommerce.addons | optionally | Each addon consists of addon_type and optionally range_from, range_to, currency. |
Sample Rich message in response
Custom
Custom event is an event with customizable payload. Request| Parameter | Required | Data type | Notes |
|---|---|---|---|
custom_id | no | string | You can give the event a custom ID. |
type | yes | string | Event type: custom |
content | no | object | The content you define |
properties | no | object | The properties data structure |
| Field | Returned | Notes |
|---|---|---|
id | always | Generated server-side |
custom_id | optionally | |
type | always | |
author_id | always | Generated server-side |
created_at | always | Date & time format with a resolution of microseconds, UTC string; generated server-side |
content | optionally | |
properties | optionally |
Sample Custom event in response
System message
System message event is a native system event sent in specific situations. Request| Parameter | Required | Data type | Notes |
|---|---|---|---|
custom_id | no | string | You can give the system message a custom ID. |
type | yes | string | system_message |
text | no | string | Text displayed to recipients |
system_message_type | yes | string | System message type |
text_vars | no | object | Variables used in the text |
| Field | Returned | Notes |
|---|---|---|
id | always | Generated server-side |
custom_id | optionally | |
type | always | |
created_at | always | Date & time format with a resolution of microseconds, UTC string; generated server-side |
text | optionally | |
system_message_type | always |
Sample System message in response
System
System event is an extension and a future replacement for System message. Similarly, it is a native system event sent in specific situations. Request It is not possible to send a System event in API version 3.6. Response| Field | Returned | Notes |
|---|---|---|
id | always | Generated server-side |
custom_id | optionally | |
source | always | |
type | always | |
subtype | always | |
version | always | |
details | always | |
created_at | always | Date & time format with a resolution of microseconds, UTC string; generated server-side |
Sample System event in response
Users
Users are another important data structure. Within this data structure type, we can distinguish:Customer
| Field | Req./Opt. | Notes |
|---|---|---|
avatar | optional | |
email | optional | |
email_verified | optional | Specifies if the customer confirmed their email address. |
name | optional | |
phone_number | optional | |
session_fields | optional | An array of custom object-enclosed key-value pairs. Available for the session duration. |
omnichannel | optional | An object of the customer’s omnichannel data. |
address | optional | An object of the customer’s address data. |
Sample Customer data structure
Agent
Sample Agent data structure
Other common structures
Apart from Events and Users, there are also other common data structures you might work with. Those are:Access
| Field | Req./Opt. | Note |
|---|---|---|
group_ids | required | group 0 means that all agents can see it. |
Sample Access data structure
Chats
| Field | Req./Opt. | Note |
|---|---|---|
properties | optional | |
access | optional |
Sample Chat data structure
Chat summaries
Chat summary is similar to the Chat data structure. The difference is that Chat contains athread object, while Chat summary includes last_event_per_type.
Sample Chat summary data structure
Forms
A template of a prechat, postchat, or a ticket form.| Field | Required | Data type | Notes |
|---|---|---|---|
id | no | string | Form ID |
fields | yes | array of objects | The fields a form contains |
fields.type | yes | string | Possible values: header, checkbox, email, name, question, subject, textarea, group_chooser, radio, select |
fields.id | no | string | Field ID, for all field types |
fields.label | yes | string | Field label, for all field types |
fields.required | no | bool | Determines whether the answer for given field is required, for all field types except header |
fields.options | no | array of objects | For checkbox, group_chooser, radio and select |
fields.options.id | yes | string | An identifier of each option a customer can choose |
fields.options.label | yes | string | Answer label |
fields.options.group_id | yes | number | For group_chooser |
Sample Form data structure
Form fields
A component of the Form event.| Field | Required | Data type | Notes |
|---|---|---|---|
fields | yes | array of objects | The fields a form contains. |
type | yes | string | Possible values: checkbox, email, name, question, subject, textarea, group_chooser, radio, select |
id | yes | string | Field id, for all field types |
label | yes | string | Field label; for all field types |
Sample Form fields
Filled form fields
A component of the Filled form event.| Field | Required | Data type | Notes |
|---|---|---|---|
fields | yes | array of objects | The fields a form contains. |
type | yes | string | Possible values: checkbox, email, name, question, subject, textarea, group_chooser, radio, select |
id | yes | string | Field id, for all field types |
label | yes | string | Field label; for all field types |
answer | yes | any | For all field types |
answer.id | yes | string | An identifier of each option a customer can choose. For all field types. |
answer.label | yes | string | Answer label; for all field types |
answer.group_id | yes | number | For group_chooser |
Sample Filled form fields
Properties
Properties are key-value storages. They can be set within a chat, a thread, or an event. You can read more about properties in the Configuration API document.Sample Properties data structure
Threads
| Field | Req./Opt. | Note |
|---|---|---|
access | optional | |
active | required | Possible values: true (thread is still active) or false (thread no longer active). |
events | optional | |
properties | optional | |
queue | optional | Present only if the chat is in the queue. The wait time for an available agent is approximated in seconds. |
previous_thread_id | optional | Present only if there is a preceding thread. |
next_thread_id | optional | Present only if there is a following thread. |
created_at | required | Date & time format with a resolution of microseconds, UTC string. Generated server-side. |
Sample Thread data structure