The TicketMessage object

A ticket-message represents a message (an email, an SMS, a Facebook comment, chat message, etc..) under a normalized format.
There are 3 types of messages:

  • Outgoing messages: messages sent by your company (by rules or support agents) to your customers.
  • Incoming messages: messages sent by your customers to your company.
  • Internal notes: internal messages sent between support agents (users). Internal notes are not sent/shared with your customers.

A ticket-message is associated with only one ticket.

TicketMessage properties

    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">id</label>
            
              <div class="custom-field-type">integer</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>ID of the message.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">uri</label>
            
              <div class="custom-field-type">string</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>URI of the message.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">message_id</label>
            
              <div class="custom-field-type">string | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>ID of the message on the service that sent the message.It can be the ID of an email, a Messenger message, a Facebook comment, etc...</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">ticket_id</label>
            
              <div class="custom-field-type">integer</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>The ID of the ticket the message is associated with.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">external_id</label>
            
              <div class="custom-field-type">string | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>ID of the message in a foreign system (Aircall, Zendesk, etc...). This field is not used by Gorgias, feel free to set it as you wish.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">public</label>
            
              <div class="custom-field-type">boolean</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>Whether the message was sent/receive by a customer. Internal notes are not public.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">channel</label>
            
              <div class="custom-field-type">LegacyChannelSlug | string</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>The channel used to send the message.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">via</label>
            
              <div class="custom-field-type">None</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>How the message has been received, or sent from Gorgias.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">source</label>
            
              <div class="custom-field-type">TicketMessageSource | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>Information used to route the message. It contains the names and the addresses of the sender and receivers.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">sender</label>
            
              <div class="custom-field-type">None</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>The person who sent the message. It can be a user or a customer.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">auth_customer_identity</label>
            
              <div class="custom-field-type">TicketMessageAuthCustomerIdentity | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>Identity of the authenticated customer, if any, in the context of a message sent on a channel that does not require authentication such as email, SMS or Gorgias chat.This attribute is used to differentiate messages sent by unauthenticated and authenticated customers.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">integration_id</label>
            
              <div class="custom-field-type">integer | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>ID of the integration that either received or sent the message.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">intents</label>
            
              <div class="custom-field-type">array</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body">None</div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">rule_id</label>
            
              <div class="custom-field-type">integer | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>ID of the rule which sent the message, if any.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">from_agent</label>
            
              <div class="custom-field-type">boolean</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>Whether the message was sent by your company to a customer, or the opposite.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">receiver</label>
            
              <div class="custom-field-type">TicketMessageUserOrCustomer | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>The primary receiver of the message. It can be a user or a customer. Optional when the source type is "internal-note".</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">subject</label>
            
              <div class="custom-field-type">string | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>The subject of the message.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">body_text</label>
            
              <div class="custom-field-type">string | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>The full text version of the body of the message, if any.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">body_html</label>
            
              <div class="custom-field-type">string | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>The full HTML version of the body of the message, if any.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">stripped_text</label>
            
              <div class="custom-field-type">string | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>The text version of the body of the message without email signatures and previous replies.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">stripped_html</label>
            
              <div class="custom-field-type">string | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>The HTML version of the body of the message without email signatures and previous replies.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">stripped_signature</label>
            
              <div class="custom-field-type">string | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body">None</div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">attachments</label>
            
              <div class="custom-field-type">array | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>A list of files attached to the message.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">macros</label>
            
              <div class="custom-field-type">array | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>A list of macros.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">actions</label>
            
              <div class="custom-field-type">array | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>A list of actions executed before the message was sent. These actions are set by macros.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">headers</label>
            
              <div class="custom-field-type">object | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>Message headers. Used for email messages.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">imported</label>
            
              <div class="custom-field-type">boolean | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>Whether the message was created by a historical import.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">meta</label>
            
              <div class="custom-field-type">null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>Metadata associated with the message.</p><p>You can use this field to store structured information (key-value data) about the message.</p><p>Reserved keys:</p><ul><li><code>current_page</code>: The page from where the user is currently chatting.</li><li><code>relevant_content_indexes</code>: Indexes containing relevant text of the message.</li><li><code>is_quick_reply</code>: Whether the message is a "quick reply".</li><li><code>campaigns</code>: ID of the chat campaign the message is replying to.</li><li><code>campaigns_id</code>: ID of the chat campaign that sent this message.</li><li><code>self_service_flow</code>: An object containing metadata of the self-service flow associated to the message.</li></ul></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">created_datetime</label>
            
              <div class="custom-field-type">ISO 8601 datetime</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>When the message was created.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">processed_datetime</label>
            
              <div class="custom-field-type">string | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>When the message was processed by Gorgias. Differs from <code>created_datetime</code> which refers to the external service.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">deleted_datetime</label>
            
              <div class="custom-field-type">string | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>When the message was deleted.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">sent_datetime</label>
            
              <div class="custom-field-type">string | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>When the message was sent. If omitted, the message will be sent by Gorgias.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">failed_datetime</label>
            
              <div class="custom-field-type">string | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>When the message failed to be sent. Messages that couldn't be sent can be resend.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">opened_datetime</label>
            
              <div class="custom-field-type">string | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>When the message was opened by the primary receiver.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">last_sending_error</label>
            
              <div class="custom-field-type">TicketMessageSendingError | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>Details of the last error encountered when Gorgias attempted to send the message.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">is_retriable</label>
            
              <div class="custom-field-type">boolean</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>It determines if the message can be retried or not.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">replied_by</label>
            
              <div class="custom-field-type">TicketMessageRepliedByOrTo | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>The message designated as a response to the current message. This field is temporary and only provided to the web app.</p></div>
        </div>
    </div>
    
    <div class="form-group field custom-field">
        <div class="custom-field-row">
            <label class="custom-field-name">replied_to</label>
            
              <div class="custom-field-type">TicketMessageRepliedByOrTo | null</div>
            
            
        </div>
        <div class="custom-field-description-container">
            <div class="field-description markdown-body"><p>The message designated as replied by the current message. This field is temporary and only provided to the web app.</p></div>
        </div>
    </div>
    
</form>

TicketMessage example object

{
  "id": 924712,
  "message_id": "<123345676453.2445.234@web>",
  "ticket_id": 12,
  "external_id": "MSG-78545",
  "public": true,
  "channel": "email",
  "via": "api",
  "source": {
    "from": {
      "address": "[email protected]",
      "id": 7,
      "name": "Sender Doe"
    },
    "to": [
      {
        "address": "[email protected]",
        "id": 8,
        "name": "Receiver Doe"
      }
    ],
    "type": "email"
  },
  "sender": {
    "id": 93
  },
  "integration_id": 28643,
  "rule_id": 89465,
  "from_agent": true,
  "receiver": {
    "id": 8
  },
  "subject": "Re:Refund request",
  "body_text": "Hello,\n\n        I can't place an order on your site, it says: I don't have enough credit.\n        How can I add some credits?\n\n        Cheers,\n        John Doe\n        ",
  "body_html": "Hello,<br><br>\n\n            I can't place an order on your site, it says: I don't have enough credit.<br>\n            How can I add some credits?<br><br>\n\n            Cheers,<br>\n            John Doe\n            ",
  "attachments": [],
  "macros": [],
  "actions": [],
  "headers": {
    "My-Header": "foo"
  },
  "imported": false,
  "meta": {},
  "created_datetime": "2020-01-27T10:42:21.468912",
  "processed_datetime": "2020-01-27T10:42:21.468912",
  "deleted_datetime": "2020-01-27T10:42:21.468912",
  "opened_datetime": "2019-07-05T15:22:46.472436"
}