Unipile MCP · Webhooks
Configure webhooks de LinkedIn, WhatsApp e e-mail com um agente de código
O LinkedIn não tem webhook público para as mensagens de um membro. A Unipile as envia para o seu endpoint e, com o Servidor MCP da Unipile , seu agente escreve o handler.
Teste grátis de 7 dias, sem cartão de crédito.
Seu agente · crm-app
Unipile MCP conectado
Assine os webhooks de nova mensagem e atualize a timeline do contato.
Executar requisiçãoPOST /v2/webhooks/endpoints/201 · we_…
Criei o endpoint na aplicação Development e um handler idempotente, com fila.
Descreva o próximo recurso…
O objetivo
O que você quer construir
Mostrar uma nova mensagem ou um novo e-mail no seu produto assim que ele chega, e reagir quando uma conta se desconecta, sem polling. O LinkedIn não tem webhook público de mensagens para contas de membro; a Unipile envia o mesmo evento em todos os canais.
message.newmessage.newemail.new
Enfileirado, deduplicado, gravado uma vez
Sem isso
Loops de polling e pontos cegos
Um job que consulta todas as contas a cada trinta segundos, quase sempre à toa.
Nenhum evento de mensagem do LinkedIn, porque a plataforma não expõe um para conta de membro.
Uma conta desconectada descoberta pelo usuário, não pelo seu produto.
Com o servidor MCP da Unipile
O resultado na sua aplicação
Um endpoint de webhook inscrito nos eventos que você trata, criado na sua aplicação Development.
Um handler que responde na hora, processa a partir de uma fila e grava cada evento uma única vez.
Uma timeline de contato e um status de conta que atualizam em menos de um segundo, testados antes de você lançar.
Prompt, etapas, código
Entregue o prompt ao seu agente
Dois prompts, cada um com os endpoints Unipile que o agente lê e executa e o que chega ao seu projeto. Os paths estão completos, sobre a URL base da API
https://api.unipile.com, com sua chave com escopo no X-API-KEY como header.Assine os webhooks de nova mensagem da Unipile e atualize a timeline do contato: crie o endpoint de webhook para message.new e email.new, adicione um handler idempotente nesta aplicação e enfileire o processamento.
Ler endpointPOST /v2/webhooks/endpoints/schema carregado
Executar requisiçãoPOST /v2/webhooks/endpoints/201 · we_… + secret
Criei o endpoint com
trigger_events: ["message.new", "email.new"] e a URL pública do app, guardei o secret devolvido no servidor, adicionei POST /webhooks/unipile que valida a entrega, responde 200 na hora e enfileira o payload, e um worker que deduplica pelo ID do objeto antes de gravar na timeline do contato. Enviei uma mensagem de teste na aplicação Development: timeline atualizada.Confirme primeiro, processe depois, grave uma vez
O agente lê o contrato do endpoint pelo servidor:
trigger_events e url são obrigatórios, account_ids restringe o escopo, e a resposta traz o ID do endpoint e o secret dele. Depois ele escreve o handler como um webhook exige: 2xx imediato, processamento assíncrono, deduplicação pelo identificador do objeto e uma checagem do log de entregas quando algo parece faltar.Endpoints usados pelo agente
POST/v2/webhooks/endpoints/GET/v2/webhooks/endpoints/GET/v2/webhooks/conversations/GET/v2/{account_id}/chats/{chat_id}/messages/{message_id}
Erro comum: Fazer o trabalho dentro do handler. Responda 2xx imediatamente e processe o evento a partir de uma fila, senão as entregas expiram e são reenviadas.
Alimente uma caixa de entrada unificada com esses eventos
Trate os webhooks de ciclo de vida da conta: em account.status.disconnected, marque a conta como pendente de atenção e exiba um botão Reconectar; em account.add, guarde o novo account_id no workspace carregado em state.
Ler endpointPOST /v2/webhooks/endpoints/enum de eventos
Executar requisiçãoPATCH /v2/webhooks/endpoints/{id}200 · eventos atualizados
Adicionei
account.add, account.reconnect e account.status.disconnected ao endpoint. Em account.add o worker guarda o account_id no workspace encontrado em state; em account.status.disconnected ele sinaliza a conta e a página de configurações mostra o botão Reconectar, que chama a rota de reconexão do Hosted Auth. Verificado desconectando a conta mock na aplicação Development.Os eventos de conta fecham o ciclo com o Hosted Auth
account.add e account.reconnect carregam o state que você definiu ao criar o link de autenticação, o que faz do webhook a fonte de verdade de uma nova conexão. Os eventos de status avisam seu produto quando uma conta precisa de atenção antes de o usuário perceber. O agente liga os dois ao mesmo endpoint e mantém o handler idempotente.Endpoints usados pelo agente
PATCH/v2/webhooks/endpoints/{id}GET/v2/accounts/{account_id}POST/v2/auth/link
Erro comum: Assinar tudo. Existem trinta e nove eventos; um endpoint inscrito em todos recebe confirmações de leitura e aberturas de rastreamento sem parar. Assine só o que você trata.
Implementar o fluxo de reconexão com um agente
Payload
O body do endpoint, a resposta e os eventos
Extraído literalmente do contrato v2 que o agente lê pelo servidor. Dois campos são obrigatórios, a resposta traz o secret e os eventos vêm por famílias.
1Criar o endpointtrigger_events e url são obrigatórios. account_ids restringe o endpoint a algumas contas; vazio ou omitido, ele escuta todas as contas da aplicação.POST https://api.unipile.com/v2/webhooks/endpoints/
{ "trigger_events": ["message.new", "email.new", "account.add"],
"url": "https://app.example.com/webhooks/unipile",
"account_ids": ["acc_…"],
"description": "crm timeline" }
2A respostaUm WebhookEndpoint com seu id, a aplicação, o secret a manter no servidor e as contas que ele alcança.{ "object": "WebhookEndpoint", "id": "we_…", "application_id": "app_…",
"enabled": true, "secret": "…", "trigger_events": [ … ], "account_targets": [ … ] }
3Os eventos, por famíliaConta (status, add, reconnect, remove, sync), mensagem (new, update, delete, confirmações, reações), chat, e-mail (new, bounce, delete, rascunhos, pastas), calendário (create, update, delete, event.*), rastreamento e relações.message.new · message.update · message.receipt.read · chat.update
email.new · email.new.bounce · email.draft.new · email.folder.update
account.add · account.reconnect · account.status.disconnected · account.initial_sync.completed
Do Development para a Production
Teste primeiro em uma aplicação Development
Seu dashboard Unipile separa uma aplicação Development da Production. Dê ao agente uma chave com escopo de Development, uma conta de teste e uma URL de túnel: eventos reais, nenhum cliente real.
1Crie o endpoint na aplicação DevelopmentURL de túnel, trigger_events limitados ao que você trata.
2Receba um evento de ponta a pontaaccount.add a partir de um link Hosted Auth mock, depois message.new da conta de teste.
3Reenvie o evento e então troque a chaveO worker grava uma vez só; account_ids restrito ao cliente certo antes da Production.
crm-app · DevelopmentUsada pelo seu agente
Escopodev-tests · 2 contas
Chave
scoped Account API keyContasConta de teste LinkedIn, caixa de e-mail Gmail de teste
Webhooks1 endpoint · eventos de mensagem
crm-app · ProductionSem alterações
Escopouma por workspace
Chave
scoped keys, in your backend onlyContasas próprias contas dos seus usuários, via Hosted Auth
Solução de problemas
Erros comuns e o que eles significam
Os quatro erros que deixam os webhooks pouco confiáveis e a correção de cada um. Nenhum deles tem a ver com os eventos em si.
O endpoint responde devagar
As entregas expiram e se acumulam como retentativas.
CorreçãoResponda 2xx imediatamente e processe a partir de uma fila. Um handler que grava no banco antes de responder acaba reprocessando o próprio acúmulo.
Um handler que não é idempotente
A mesma mensagem aparece duas vezes na timeline.
CorreçãoO mesmo evento pode ser entregue mais de uma vez. Deduplique pelo identificador do objeto que vem no payload antes de gravar.
Inscrito em tudo
O endpoint recebe confirmações de leitura e aberturas de rastreamento sem parar.
Correçãotrigger_events aceita trinta e nove valores. Assine os eventos que você trata e crie vários endpoints quando o processamento for diferente.
account_ids esquecido em um produto multicliente
O worker de um cliente recebe os eventos de outro.
CorreçãoVazio ou omitido, account_ids escuta todas as contas da aplicação. Restrinja explicitamente por cliente, ou filtre pela conta do payload antes de gravar.
6000+
Empresas que inovam com a Unipile
Com a confiança dos líderes do setor
1 API
Simplificar as operações de todos os principais canais de comunicação
2 dias
Obtenha integração ao vivo rapidamente com o mínimo de configuração
30%
Redução dos esforços e recursos de manutenção
Segurança e conformidade incorporadas
Proteção de nível empresarial para seus dados e fluxos de trabalho Saiba mais sobre nossa segurança
SOC 2 Tipo II
Certificado
Controles de segurança auditados de forma independente, garantindo a proteção dos dados e a integridade operacional.
GDPR
Em conformidade
Conformidade total com os regulamentos europeus de proteção de dados para a privacidade do usuário.
99.9%
Tempo de atividade da plataforma nos últimos 24 meses
24/7
Suporte global com API de alto desempenho
FAQ de webhooks
Se o LinkedIn tem webhook de mensagens, como criar um endpoint, quais eventos existem, como limitar um endpoint a um cliente e como verificar uma entrega.
Não para conta de membro. Os webhooks públicos do LinkedIn cobrem ações sociais de organização e formulários de lead; as mensagens de membro ficam atrás de um programa de compliance que não aceita mais novos parceiros. Com a Unipile, o evento
message.new cobre o LinkedIn como qualquer outro canal, na conta que o próprio usuário conectou.POST https://api.unipile.com/v2/webhooks/endpoints/ com o X-API-KEY e um body carregando trigger_events e url. A resposta traz um id em we_… e um objeto secret.Trinta e nove valores nas famílias conta, mensagem, chat, e-mail, calendário, rastreamento e relações. Os mais usados são
message.new, email.new, account.add, account.reconnect e account.status.disconnected.Com
account_ids, um array de identificadores em acc_…. Omitido ou vazio, o endpoint escuta todas as contas da aplicação.Criar o endpoint devolve um
secret. Guarde-o no servidor e valide toda entrega antes de processar. Sua URL precisa ser HTTPS e acessível publicamente; o log de entregas fica disponível na rota de conversations dos webhooks.