Skip to main content
Every message in every support conversation: who wrote it, when, on which channel, and the text.
  • Grain: one row per sm_message_key.
  • Date field: message_created_at_local_datetime.
  • Filters to start with: is_message_from_agent to separate customer messages from agent replies; is_message_public to drop internal notes.
  • Joins: obt_customer_support_tickets via sm_ticket_key.

Query examples

Columns

Platform notes

The Gorgias and Richpanel integrations fill this table today.
  • Gorgias.
    • Internal notes are the messages with is_message_public false, and most have no message_sent_at.
    • message_body_text is Gorgias’s stripped text, with quoted earlier replies removed.
    • Channels include email, chat, sms, phone, contact_form, help-center, instagram-direct-message, instagram-comment, facebook-messenger and internal-note. Entry methods include email, helpdesk (typed by an agent), rule (sent by a Gorgias rule), api, gorgias_chat and contact_form. Exclude message_entry_method = 'rule' to drop rule-sent replies.
    • Calls from the Aircall integration arrive on the aircall channel as call events (answered, ended, a recording link), not a transcript. Each call is logged as a customer message and an agent message minutes apart, so its first response time reads near zero. Other calls arrive on phone.
  • Richpanel.
    • Richpanel has no internal-note flag, so is_message_public is always true.
    • It records no send time, so message_sent_at is always NULL.
    • message_body_text can carry HTML markup where Richpanel supplies no plain-text version. Strip tags before matching keywords.
    • Channels use Richpanel’s own names, such as email, gmail, comment, klaviyosms, instagram_message, instagram_comment, messenger and text. Entry methods are comment, text and voicecomment, which do not separate agents from automations.