Mensagens enviadas e recebidas
A tabela dim_message armazena as mensagens das conversas: as que o consumidor envia, as que a loja envia (atendente, bot, campanha ou template), as anotações internas e os avisos do sistema, como transferências e finalizações. Cada linha é uma mensagem, identificada pela coluna message_id. Com dados atualizados de hora em hora, entre 6h e 22h (horário de Brasília); de madrugada não há atualização.
Exemplo
Em um atendimento em que o consumidor pergunta, a atendente assume e responde, a conversa chat789 ganha estas linhas, todas com o mesmo csr_id = abc123:
• type = TEXT e status = INCOMING_READ às 10:00: a pergunta do consumidor, já lida pela loja.
• type = ROUTING e system_message_type = Pickup às 10:05: o aviso do sistema de que a atendente assumiu o atendimento.
• type = TEXT, status = OUTGOING_READ e user_id da atendente às 10:06: a resposta, que chegou e foi lida (delivered_at e read_at preenchidos).
• type = TEXT e is_annotation = true às 10:07: uma anotação interna, que o consumidor não vê.
O status junta direção e situação: INCOMING_ para mensagens do consumidor e OUTGOING_ para mensagens da loja (CREATED, SENT, DELIVERED, READ, ERROR). OUTGOING_SILENT marca registros internos, que não são enviados ao consumidor: avisos do sistema, resumos, anotações e adiamentos (snooze). Quando há falha no envio, error_code e error_description explicam o motivo.
Para contar mensagens trocadas, tire os avisos do sistema (type = ROUTING, com o evento em system_message_type), os resumos (type = SUMMARY) e as anotações (is_annotation = true). Nos avisos do sistema, is_annotation vem vazio, não false. Mensagens de campanha têm campaign_id preenchido; templates têm template_id e os valores das variáveis em template_tokens.
Uma conversa (chat_id) pode ter vários atendimentos; o csr_id liga cada mensagem ao atendimento e vem vazio em parte das mensagens, como os disparos de campanha feitos fora de um atendimento. As colunas billing_category e is_billable indicam a categoria cobrada pela Meta quando a mensagem é cobrável.
Atenção: Os registros desta tabela utilizam o fuso horário UTC, ou seja, para que as datas sejam referentes ao fuso horário brasileiro, é preciso inserir nas queries o fuso horário brasileiro.
SET TIME ZONE '-03:00';
SELECT tb.status
,tb.type
,count(tb.message_id) AS qtd_mensagens
FROM dim_message AS tb
WHERE tb.created_at >= '2025-04-01'
AND tb.is_annotation = FALSE
AND tb.campaign_id IS NULL
GROUP BY ALL
;
Dicionário de dados
Variável | Tipo | Descrição | Obs |
assisted_by_feature | string | Funcionalidade que auxiliou na geração ou no envio da mensagem. Vazio quando não se aplica | |
assistedbyfeature | string | Mesmo conteúdo de assisted_by_feature (coluna duplicada) | |
attachment_caption | string | Legenda do anexo. Vazio quando não há legenda | |
attachment_name | string | Nome do anexo enviado | |
attachment_url | string | Link da web que o anexo foi armazenado | |
billing_category | string | Categoria de cobrança da mensagem (ex.: service, marketing). Vazio quando não disponível | |
campaign_id | string | Id da campanha que essa mensagem está vinculada (Pode ser vinculada com outras tabelas pela coluna campaign_id). | Chave estrangeira para a tabela dim_campaign |
chat_id | string | Id do chat que essa mensagem faz parte (Pode ser vinculada com outras tabelas pela coluna chat_id) | Chave estrangeira para a tabela dim_customer_support_request |
content | string | Texto da mensagem. | |
created_at | timestamp | Data da criação desse registro | |
csr_id | string | Represents the customer support request associated with the message, allowing tracking of customer support issues. | Chave estrangeira para a tabela dim_customer_support_request |
delivered_at | timestamp | Horário da entrega realizada | |
error_code | string | Código do erro caso tenha acontecido | |
error_description | string | Descrição do erro caso tenha acontecido | The requested phone number has been deleted. User phone number is part of an experiment from Meta for user experience and engagement. The error is related to usage or engament policies. Please, check the usage terms and policies. Length of the parameters and the template text exceeds the allowed length of 1024. The payload sent to the broker problably has wrong parameters. The integration is misconfigured or the broker changed something that started to crash for one or more accounts. Broker returning 5XX error. Problem with customer equipment, too old, update required, not compatible. The media trying to be sent is not supported. Too many requests. Message not supported or too long. Template is disabled. Unknown error. Template is paused. |
is_annotation | boolean | Flag para controle se essa mensagem é uma anotação | |
is_billable | boolean | Indica se a mensagem é cobrada. Vazio quando não disponível | |
message_id | string | Id interno da mensagem, utilizado para vincular à outras tabelas (pela coluna message_id das mesmas) | |
platform | string | Indica o canal que ocorreu a troca de mensagem | |
read_at | timestamp | Data da leitura da mensagem | |
replied_at | string | Data da resposta da mensagem | |
retailer_id | string | Id interno do cliente | |
status | string | Status da mensagem | INCOMING_READ, OUTGOING_CREATED, OUTGOING_READ, INCOMING_DELETED, OUTGOING_SENT, OUTGOING_SILENT, OUTGOING_DELIVERED, EXTERNAL_OUTGOING_SILENT, INCOMING_RECEIVED, OUTGOING_ERROR |
structured_data | string | Apresentação dos dados estruturados | |
structuredData | string | O campo structuredData foi criado fora do padrão, esse será removido até 28/11/2025, favor utilizar o campo structured_data | |
system_message_type | string | Tipo da mensagem de sistema (ex.: Route, Finish). Vazio quando não é mensagem de sistema | |
template_id | string | Id do template utilizado nessa mensagem (Pode ser vinculada com outras tabelas pela coluna template_id) | Chave estrangeira para a tabela dim_templates |
template_tokens | string | Variáveis utilizadas na mensagem substituem {{1}} no texto. | |
type | string | Tipo da mensagem | GROUPED, AUDIO, STICKER, VARIANT, LOCATION, VCARD, SNOOZE_END, PAYMENT_REQUEST, IMAGE, ROUTING, REACTION, SNOOZE_START, BUTTON, ORDER_STATUS, INTERACTIVE, TEMPLATE, VIDEO, ORDER_PREVIEW, TEXT, COLLECTION, FILE, SUMMARY, DOCUMENT |
updated_at | timestamp | Data da ultima atualização desse registro | |
user_id | string | Id do atendente responsável por aquela mensagem (pode ser vinculada a outras tabelas pela coluna user_id) | Chave estrangeira para a tabela dim_user |
