Skip to main content
A integração via Webhook permite comunicação em tempo quase real entre o Invenio Center, o Invenio Live e sistemas externos. Eventos importantes são enviados automaticamente para o endpoint configurado, permitindo que sua operação registre, trate e analise dados de forma ágil e integrada.
Os dados são enviados em lotes de até 30 arquivos JSON, com intervalo médio de 2 segundos entre os lotes.

Eventos Disponíveis

EventoDescrição
Mensagens enviadasStatus de entrega das mensagens saintes
Mensagens recebidasNotificação de mensagens entrantes
KPI EventosIndicadores inseridos no ambiente (manual ou sistema)
CampanhasCriação e atualização de status de campanhas
CarteirasEdições e atualizações de configuração de segmentos
Templates HSMStatus, qualidade e alterações de templates
Linhas WhatsAppStatus, qualidade e alterações das linhas
UsuáriosLogs e mudanças de usuários
ProtocolosEstatísticas e dados de protocolos de atendimento
Objetos JSON enviados: contact · event · messageincoming · messageoutgoing · campaign · template · protocol · wallet · whatsappnumbers · status

Linguagens Suportadas

Os webhooks do Invenio são baseados em HTTP — qualquer linguagem que suporte servidor web pode ser utilizada.
LinguagemFramework sugerido
JavaScript / Node.jsExpress
PythonFlask, Django ou FastAPI
C# (.NET)ASP.NET Core
JavaSpring Boot
PHPLaravel, Symfony ou nativo $_POST
Go, Ruby, Rust, ElixirQualquer lib HTTP nativa

Requisitos de Infraestrutura (Produção)

Configuração mínima recomendada para o servidor endpoint:
ComponenteRequisito mínimo
ArmazenamentoSSD de 250 GB
Memória RAM16 GB
CPU4 núcleos
⚠️ O uso de HD não é recomendado — pode gerar gargalos pelo alto volume de mensagens e eventos. Monitore a infraestrutura continuamente com possibilidade de escala futura.

Configurar o Webhook no Invenio Center

Caminho: Invenio Center > Configurações > Webhook > Gerenciar
Acesso direto: Configurações
1

Preparar o servidor endpoint

Configure e publique o endpoint na sua infraestrutura (servidor, banco de dados, firewall).Certifique-se de que os IPs do Invenio estão liberados no firewall.Consulte: Lista de IPs para liberação
2

Acessar configurações do Webhook

Acesse: Invenio Center > Configurações > Webhook > Gerenciar
3

Adicionar a URL do endpoint

Cole a URL gerada pelo seu servidor/ambiente de publicação no campo disponível e clique em Salvar.
Em até 60 minutos, as requisições começarão a ser disparadas para o endpoint configurado.
Fila paralela: O Invenio disponibiliza dois campos para URLs de Webhook por padrão. A inclusão de URLs adicionais (fila paralela) está sujeita a custo extra — consulte o gerente comercial responsável pela sua conta.

Diagrama de Funcionamento


Mapeamento de Campos

Message (Mensagem)

CampoDescriçãoTipo
MessageSentToProviderAtData/hora do envio ao provedorDatetime
MessageDeliveredAtData/hora da entregaDatetime
MessageReadAtData/hora da leituraDatetime
MessageFailedAtData/hora da falha na entregaDatetime
MessagemSentAtData/hora do envioDatetime
MessageReceivedAtData/hora do recebimentoDatetime
MessageCampaignidID da campanhaInt
MessageTypeTipo de envioString
MessageDirectionincoming (entrada) ou outgoing (saída)String
MessageIdID da mensagemLong
MessageChannelCanal (ver enumeração)Int
MessageTextTexto da mensagemString
MessageSourceCountryCodeCódigo do país do remetenteInt
MessageSourcePhoneNumberTelefone do remetenteLong
MessageSourceEmailE-mail do remetenteString
MessageDestinationCountryCodeCódigo do país do destinatárioInt
MessageDestinationPhoneNumberTelefone do destinatárioLong
MessageDestinationEmailE-mail do destinatárioString
ContactRobbuIdID do contato na RobbuLong
ContactNameNome do contatoString
ContactIDID do contatoString
ContactCustomCodeCódigo do clienteString
ContactMainEmailE-mail principalString
ContactMainWhatsAppCountryCodeCódigo do país (WhatsApp)Int
ContactMainWhatsAppPhoneNumberNúmero WhatsApp principalLong
ContactMainSmsCountryCodeCódigo do país (SMS)Int
ContactMainSmsPhoneNumberNúmero SMS principalLong
QueueWaitingSinceInício da espera na filaDatetime
QueueFirstAnswerAtPrimeira resposta ao contatoDatetime
ContactLastWalletCodeCódigo do último segmentoString
ContactLastWalletNameNome do último segmentoString
ContactLastChannelDescriptonÚltimo canal do contatoString
ContactCreatedAtData/hora de inclusão do contatoDatetime
ContactLastAnswearAtÚltima mensagem enviada ao contatoDatetime
ContactLastIncomingMessageAtÚltima mensagem recebida do contatoDatetime
DigitalPostmanEnvio via Carteiro DigitalBool
LocationLatitudeLatitude de localizaçãoDouble
LocationLongitudeLongitude de localizaçãoDouble
FileUrlURL do arquivoString
FileNameNome do arquivoString
FileExtensionExtensão do arquivoString
ProtocolMessageIdID do protocoloLong
ProtocolMessageNumberNúmero do protocoloString
MessageErrorCodeCódigo de falha na entregaString
ErrorMessageDescrição do erroString
MessageChannelDescriptionDescrição do canalString
MessageTemplateNameNome do templateString
MessageTemplateIdID do templateLong
Enumeração – MessageChannel: 1 E-mail · 2 SMS · 3 WhatsApp · 4 Chat · 5 Facebook · 6 Telegram · 7 Voz · 8 Instagram · 9 Viber
"message": {
  "receivedAt": "2020-01-31T02:01:03",
  "direction": "incoming",
  "id": 13232322244444,
  "channel": 3,
  "text": "Olá, teste whats!",
  "source": {
    "countryCode": 55,
    "phoneNumber": 11999999992
  },
  "destination": {
    "countryCode": 55,
    "phoneNumber": 11944497777
  },
  "location": {
    "latitude": -23.5535317,
    "longitude": -46.6631181
  },
  "file": {
    "url": "http://s.robbu.com.br/arquivo?hash=ROBBU",
    "name": "robbu",
    "extension": "pdf"
  },
  "contact": {
    "robbuid": 11111111111,
    "name": "TESTE ROBBU",
    "customCode": "1372511",
    "id": "00000000000",
    "mainWhatsapp": { "countryCode": 55, "phoneNumber": 11999999992 },
    "mainSMS": { "countryCode": 55, "phoneNumber": 11999999992 },
    "mainEmail": "teste@robbu.global"
  }
}
"message": {
  "sentAt": "2020-01-31T02:05:21.2900000",
  "direction": "outgoing",
  "id": 1323232224455555,
  "channel": 3,
  "type": "",
  "text": "Teste envio whats!",
  "campaignId": 1234,
  "source": {
    "countryCode": 55,
    "phoneNumber": 11944497777,
    "sender": ""
  },
  "destination": {
    "countryCode": 55,
    "phoneNumber": 11999999992
  },
  "file": {
    "url": "http://s.robbu.com.br/arquivo?hash=ROBBU",
    "name": "robbu",
    "extension": "pdf"
  },
  "contact": {
    "robbuid": 11111111111,
    "name": "TESTE ROBBU",
    "customCode": "1372511",
    "id": "00000000000",
    "mainWhatsapp": { "countryCode": 55, "phoneNumber": 11999999992 },
    "mainSMS": { "countryCode": 55, "phoneNumber": 11999999992 },
    "mainEmail": "teste@robbu.global",
    "queue": {
      "waitingSince": "2021-03-08 12:00:00",
      "firstAnswerAt": "2021-03-08 11:30:00"
    }
  }
}

Status

CampoDescriçãoTipo
MessageStatusIdID do statusLong
SourceStatusSenderRemetente do statusString
MessageStatusSentToProviderAtEnvio ao provedorDatetime
MessageStatusDeliveredAtEntregaDatetime
MessageStatusReadAtLeituraDatetime
MessageStatusSentAtEnvio da mensagemDatetime
MessageStatusFailedAtFalha no envioDatetime
MessageStatusDigitalPostmanEnvio via Carteiro DigitalBool
MessageStatusErrorCodeCódigo de erroString
MessageStatusErrorMessageDescrição do erroString
ContactStatusRobbuIdID do contato na RobbuLong
"status": {
  "message": {
    "id": 1323232224455555,
    "source": { "sender": "User1" },
    "sentToProviderAt": "2020-01-31T15:50:39.9312405",
    "deliveredAt": "2020-01-31T15:51:52.9707831",
    "readAt": "2020-01-31T15:53:14.6399299"
  }
}

Event (KPI Evento)

CampoDescriçãoTipo
IDID do eventoLong
DescriptionDescrição do eventoString
NoteObservaçãoString
CustomCodeCódigo customizadoString
SenderUsuário responsávelString
FinalizedEvento finalizadorBool
TypeTipo: negativo, neutro ou positivoString
ProtocolNumberNúmero do protocoloString
ProtocolIDID do protocoloLong
ContactRobbuIdID único do contatoLong
ContactNameNome do contatoString
ContactIDID do contatoString
ContactCustomCodeCódigo do clienteString
ContactMainEmailE-mail principalString
ContactMainWhatsAppCountryCodeCódigo do país (WhatsApp)Int
ContactMainWhatsAppPhoneNumberNúmero WhatsApp principalLong
ContactMainSmsCountryCodeCódigo do país (SMS)Int
ContactMainSmsPhoneNumberNúmero SMS principalLong
QueueWaitingSinceInício da espera na filaDatetime
QueueFirstAnswerAtPrimeira respostaDatetime
ContactLastWalletCodeCódigo do último segmentoString
ContactLastWalletNameNome do último segmentoString
ContactLastChannelDescriptonÚltimo canalString
ContactCreatedAtInclusão do contatoDatetime
ContactLastAnswearAtÚltima mensagem enviadaDatetime
ContactLastIncomingMessageAtÚltima mensagem recebidaDatetime
"event": {
  "createdAt": "2020-01-31T02:05:21.0566667",
  "id": 13232322244599998,
  "description": "[CR] Saudacao Final",
  "note": "Saudacao Final",
  "customCode": "298",
  "finalized": false,
  "sender": "",
  "type": "Neutro",
  "contact": {
    "robbuid": 11111111111,
    "name": "TESTE ROBBU",
    "customCode": "1372511",
    "id": "00000000000",
    "mainWhatsapp": { "countryCode": 55, "phoneNumber": 11999999992 },
    "mainSMS": { "countryCode": 55, "phoneNumber": 11999999992 },
    "mainEmail": "teste@robbu.global"
  }
}

Campaign (Campanha)

CampoDescriçãoTipo
CreatedAtData/hora de criaçãoDatetime
CreatedByUsuário responsávelString
IdID da campanhaInt
ChannelCanal (ver enumeração)Int
ChannelDescriptionDescrição do canalString
StartAtInício da campanhaDatetime
SizeQuantidade de mensagensInt
MessageTemplate enviadoString
HoursToDiscardHoras para descarte por atendimento ativoInt
TypeCampaignCodeCódigo interno do tipoString
TypeCampaignDescriptionTipo: SMS, WhatsApp, E-mail, VozString
SplitSendPercentage% de fracionamentoDouble
SplitSendMinutesIntervalo (min) entre enviosInt
MailingDescriptionDescrição do mailingString
MailingImportedAtImportação do mailingDatetime
MailingImportedByUsuário que importouString
MailingSizeRegistros no mailingInt
MailingWalletClientCodeCódigo da carteiraString
TotalSentTotal enviadoInt
CampaignLastSentAtÚltima mensagem enviadaDatetime
CampaignStatusCodeCódigo de statusString
CampaignDescriptionDescrição do tipo de campanhaString
Enumeração – Channel: 1 E-mail · 2 SMS · 3 WhatsApp · 4 Chat · 5 Facebook · 6 Telegram · 7 Voz · 8 Instagram · 9 Viber TypeCampaignCode: EM E-mail · SL SMS Long · SS SMS Short · VW Voz Way · WB WhatsApp Broadcast · WE WhatsApp Oficial Exclusivo · WP WhatsApp Prospect · WO/WC WhatsApp Oficial Compartilhado CampaignStatusCode: C Cancelada · E Não enviada · F Finalizada · I Iniciada · P Aguardando processamento
"campaign": {
  "createdAt": "2020-01-27T22:01:12.2766667",
  "createdBy": "User Robbu",
  "id": 994545,
  "channel": 1,
  "startAt": "2020-01-27T21:59:00",
  "size": 3102,
  "message": "<html><body>Envio campanha email!</body></html>",
  "hoursToDiscard": 0,
  "type": { "code": "EM", "description": "EMAIL" },
  "splitSend": { "percentage": 100.00, "minutes": 0 },
  "mailing": {
    "description": "disparo_email",
    "importedAt": "2020-01-27T21:54:16.5500000",
    "importedBy": "User Robbu",
    "size": 3102,
    "walletClientCode": "1000"
  }
}
"status": {
  "campaign": {
    "id": 994545,
    "totalSent": 91,
    "lastSentAt": "2020-01-31T16:10:12.0633333",
    "statusCode": "F"
  }
}

Template

CampoDescriçãoTipo
IdID do templateLong
NameNome do templateString
EventAção: Updated ou CreatedString
EventAtData/hora de inclusão/alteraçãoDatetime
StatusStatus na Meta: Approved · Reject · Deleted · DisabledString
QualityQualidade na Meta: Green · Yellow · Red · Deleted · DisabledString
CategoryCategoria: Utility · Marketing · Service · AuthenticationString
LanguageIdioma do templateString
"template": {
  "id": 53129216,
  "name": "bv_atualizar_informacoes_020",
  "event": "updated",
  "eventAt": "2025-02-28T12:10:24.2981975Z",
  "status": "APPROVED",
  "quality": "UNKNOWN",
  "category": "MARKETING",
  "language": "pt_BR"
}

Protocol (Protocolo)

CampoDescriçãoTipo
EventAção: Updated ou CreatedString
EventAtData/hora de inclusãoDatetime
IdID do protocoloLong
NumberNúmero do protocoloString
GeneratedAtData/hora de geraçãoDatetime
GenerationChannelDescriptionCanal do protocoloString
GenerationWalletNameNome do segmentoString
GenerationWalletCodeCódigo do segmentoString
GenerationWalletIdID do segmentoLong
SegmentIdID do segmentoLong
SegmentNameNome do segmentoString
ContactProtocolIdID do protocolo do contatoString
ContactProtocolRobbuIdID na RobbuLong
FirstMessageIdrAtPrimeira mensagem na IDRDatetime
LastMessageIdrAtÚltima mensagem na IDRDatetime
IdrClosedAtEncerramento na IDRDatetime
LastMessageContactIdrAtÚltima mensagem do contato para IDRDatetime
FirstMessageFromHumanAttendanceAtPrimeira mensagem da operaçãoDatetime
IdrMessagesCountTotal de mensagens da IDRLong
HumanAttendanceMessagesCountTotal de mensagens de atendentesLong
IncomingMessagesCountTotal de mensagens recebidasLong
HumanAttendanceAnswersCountTotal de respostas de atendentesLong
ContactAnswersCountTotal de respostas do contatoLong
HumanAttendanceAnswersTotalTimeInSecondsSoma (seg) das respostas da operaçãoLong
ContactAnswersTotalTimeInSecondsSoma (seg) das respostas do contatoLong
IdrAnswersTotalTimeInSecondsSoma (seg) das respostas da IDRLong
IdrAnswersCountTotal de respostas da IDRLong
ClosedAtEncerramento do protocoloDatetime
ClosingUserInfoUsuário que encerrouString
ClosingEventIdID do evento de encerramentoLong
ClosingEventNameNome do evento de encerramentoString
ClosingEventCodeCódigo do evento de encerramentoString
AbandonedAtAbandono do protocoloDatetime

User (Usuário)

CampoDescriçãoTipo
IdID do usuárioLong
NameNome de loginString
EventAção: Updated ou CreatedString
EventAtData/hora de criação/ediçãoDatetime
CompletenameNome completoString
AcessGroupGrupo de acessoString
AcessGroupDescriptionDescrição do grupoString
EmailAddressE-mail do usuárioString
LastLoginAtÚltimo loginDatetime
IsActiveAtivo/inativoBool
LastQueueUpdateAtÚltima atualização da filaDatetime
LastPasswordChangeATÚltima troca de senhaDatetime
IsLoggedLogado no momentoBool

Wallet (Carteira / Segmento)

CampoDescriçãoTipo
IdID do segmentoLong
NameNome do segmentoString
CodeCódigo do segmentoString
EventAção: Updated · Created · DeletedString
EventAtData/horaDatetime
DistributionMethodMétodo de distribuiçãoString
DistributionMethodDescriptionDescrição do métodoString

WhatsApp Numbers (Linhas WhatsApp)

CampoDescriçãoTipo
EventAção: Created ou UpdatedString
EventAtData/horaDatetime
IdID da linhaLong
WalletIdID do segmentoLong
StatusQualidade na Meta: Green · Yellow · Red · UnknownString
CountryCodeCódigo do paísString
AreaCodeCódigo de áreaString
PhoneNumberNúmero de telefoneString
IsActiveLinha ativaBool
BroadCastLimitPerDayLimite diário de envios (Meta)Int
CanSendHsmHabilitada para HSMBool
"whatsappNumber": {
  "event": "updated",
  "eventAt": "2025-02-26T19:18:48.5888674+00:00",
  "id": 1234567,
  "walletId": 7654321,
  "status": "YELLOW",
  "countryCode": "55",
  "areaCode": "11",
  "phoneNumber": "11111111",
  "isActive": true,
  "broadcastLimitPerDay": 1000,
  "canSendHsm": true
}


⁉️ Perguntas Frequentes (FAQ)

São enviados blocos JSON dos seguintes objetos: contact · event · messageincoming · messageoutgoing · campaign · template · protocol · wallet · whatsappnumbers · status
Em lotes de até 30 arquivos JSON com intervalo médio de 2 segundos entre os lotes.
Em até 60 minutos após o salvamento da URL do endpoint no Invenio Center.
É altamente recomendado usar HTTPS para segurança no transporte dos dados. Além disso, libere os IPs oficiais do Invenio no firewall para garantir conectividade.Consulte: Lista de IPs
Para ambientes de produção: SSD 250 GB · 16 GB RAM · CPU 4 núcleos.⚠️ HD não é recomendado pelo alto volume de eventos. Preveja escalabilidade futura.
Sim. A solução é compatível com ambos — a tecnologia do banco de dados e infraestrutura ficam a critério do cliente, desde que a TI garanta operação e manutenção.
A fila paralela permite configurar URLs adicionais além das duas padrão. Essa configuração pode gerar cobrança adicional — consulte o gerente comercial responsável pela sua conta.
Caminho: Invenio Center > Configurações > Webhook > GerenciarApós publicar o serviço e liberar o firewall, informe a URL do endpoint e salve.