Unipile MCP · Webhooks
Câblez les webhooks LinkedIn, WhatsApp et email avec un agent de codage
LinkedIn n'a pas de webhook public pour les messages d'un membre. Unipile les pousse vers votre endpoint, et avec le serveur MCP Unipile , votre agent écrit le handler.
Essai gratuit de 7 jours, sans carte bancaire.
Votre agent · crm-app
MCP Unipile connecté
Abonne-toi aux webhooks de nouveaux messages et mets à jour la timeline du contact.
Exécution de la requêtePOST /v2/webhooks/endpoints/201 · we_…
Endpoint créé sur l'app Development, avec un handler idempotent et mis en file.
Décrivez la fonctionnalité suivante…
La mission
Ce que vous cherchez à faire
Afficher un nouveau message ou email dans votre produit dès son arrivée, et réagir quand un compte se déconnecte, sans polling. LinkedIn n'a pas de webhook public de messages pour un compte membre ; Unipile pousse le même événement pour tous les canaux.
message.newmessage.newemail.new
Mis en file, dédoublonné, écrit une fois
Sans lui
Boucles de polling et angles morts
Un job qui interroge chaque compte toutes les trente secondes, la plupart du temps pour rien.
Aucun événement de message LinkedIn, car la plateforme n'en expose pas pour un compte membre.
Un compte déconnecté découvert par l'utilisateur, pas par votre produit.
Avec le serveur MCP Unipile
Le résultat dans votre application
Un endpoint webhook abonné aux événements que vous traitez, créé sur votre application Development.
Un handler qui répond immédiatement, traite depuis une file et écrit chaque événement une seule fois.
Une timeline de contact et un statut de compte qui se mettent à jour en moins d'une seconde, testés avant la mise en production.
Prompt, étapes, code
Donnez le prompt à votre agent
Deux prompts, chacun avec les endpoints Unipile que l'agent lit et exécute, et ce qui arrive dans votre projet. Les chemins sont complets, sur l'URL de base de l'API
https://api.unipile.com, avec votre clé scopée dans l'en-tête X-API-KEY .Abonne-toi aux webhooks Unipile de nouveaux messages et mets à jour la timeline du contact : crée l'endpoint webhook pour message.new et email.new, ajoute un handler idempotent dans cette application et mets le traitement en file.
Lecture de l'endpointPOST /v2/webhooks/endpoints/schéma chargé
Exécution de la requêtePOST /v2/webhooks/endpoints/201 · we_… + secret
Endpoint créé avec
trigger_events: ["message.new", "email.new"] et l'URL publique de l'app, enregistrement du secret renvoyé côté serveur, ajout de POST /webhooks/unipile qui valide la livraison, répond 200 immédiatement et met le payload en file, et d'un worker qui dédoublonne sur l'ID de l'objet avant d'écrire dans la timeline du contact. Message de test envoyé sur l'app Development : timeline mise à jour.Accuser réception d'abord, traiter ensuite, écrire une seule fois
L'agent lit le contrat de l'endpoint via le serveur :
trigger_events et url sont obligatoires, account_ids restreint le périmètre, et la réponse contient l'ID de l'endpoint et son secret. Il écrit ensuite le handler comme un webhook l'exige : 2xx immédiat, traitement asynchrone, dédoublonnage sur l'identifiant de l'objet, et vérification du journal de livraison quand quelque chose semble manquer.Endpoints utilisés par l'agent
POST/v2/webhooks/endpoints/GET/v2/webhooks/endpoints/GET/v2/webhooks/conversations/GET/v2/{account_id}/chats/{chat_id}/messages/{message_id}
Erreur fréquente : Faire le travail dans le handler. Répondez tout de suite par un 2xx et traitez l'événement depuis une file, sinon les livraisons expirent et sont renvoyées.
Alimenter une inbox unifiée avec ces événements
Gère les webhooks du cycle de vie des comptes : sur account.status.disconnected, marque le compte comme nécessitant une action et affiche un bouton Reconnecter, et sur account.add, enregistre le nouvel account_id sur le workspace porté par state.
Lecture de l'endpointPOST /v2/webhooks/endpoints/enum des événements
Exécution de la requêtePATCH /v2/webhooks/endpoints/{id}200 · événements mis à jour
Ajout de
account.add, account.reconnect et account.status.disconnected à l'endpoint. Sur account.add le worker enregistre le champ account_id sur le workspace trouvé dans state ; sur account.status.disconnected il signale le compte et la page Paramètres affiche le bouton Reconnecter, qui appelle la route de reconnexion Hosted Auth. Vérifié en déconnectant le compte mock sur l'app Development.Les événements de compte bouclent la boucle avec Hosted Auth
account.add et account.reconnect portent le state que vous avez défini à la création du lien d'authentification : le webhook devient la source de vérité pour une nouvelle connexion. Les événements de statut signalent à votre produit qu'un compte demande une action avant que l'utilisateur ne s'en aperçoive. L'agent câble les deux sur le même endpoint et garde le handler idempotent.Endpoints utilisés par l'agent
PATCH/v2/webhooks/endpoints/{id}GET/v2/accounts/{account_id}POST/v2/auth/link
Erreur fréquente : S'abonner à tout. Il existe trente-neuf événements ; un endpoint abonné à tous reçoit sans arrêt des accusés de lecture et des ouvertures de tracking. Abonnez-vous à ce que vous traitez.
Implémenter le parcours de reconnexion avec un agent
Payload
Le body de l'endpoint, la réponse et les événements
Tel quel, depuis le contrat v2 que l'agent lit via le serveur. Deux champs sont obligatoires, la réponse contient le secret, et les événements sont regroupés par familles.
1Créer l'endpointtrigger_events et url sont obligatoires. account_ids limite l'endpoint à certains comptes ; vide ou omis, il écoute tous les comptes de l'application.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" }
2La réponseUn WebhookEndpoint avec son id, l'application, le secret à conserver côté serveur, et les comptes qu'il cible.{ "object": "WebhookEndpoint", "id": "we_…", "application_id": "app_…",
"enabled": true, "secret": "…", "trigger_events": [ … ], "account_targets": [ … ] }
3Les événements, par familleCompte (statut, ajout, reconnexion, suppression, synchro), message (nouveau, mise à jour, suppression, accusés, réactions), chat, email (nouveau, rebond, suppression, brouillons, dossiers), calendrier (création, mise à jour, suppression, event.*), tracking et relations.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
Du développement à la production
Testez d'abord sur une application Development
Votre dashboard Unipile sépare une application Development de la Production. Donnez à l'agent une clé scopée issue de Development, un compte de test et une URL de tunnel : de vrais événements, aucun vrai client.
1Créez l'endpoint sur l'app DevelopmentURL de tunnel, trigger_events limité à ce que vous traitez.
2Recevez un événement de bout en boutaccount.add depuis un lien Hosted Auth mock, puis message.new depuis le compte de test.
3Rejouez-le, puis changez de cléLe worker écrit une seule fois ; account_ids restreint au bon client avant la Production.
crm-app · DevelopmentUtilisée par votre agent
Scopedev-tests · 2 comptes
Clé
clé Account API scopéeComptesCompte LinkedIn de test, boîte mail Gmail de test
Webhooks1 endpoint · événements de message
crm-app · ProductionIntacte
Scopeun par workspace
Clé
clés scopées, uniquement dans votre backendComptesles propres comptes de vos utilisateurs, via Hosted Auth
Dépannage
Erreurs fréquentes et leur signification
Les quatre erreurs qui rendent les webhooks peu fiables, et la correction de chacune. Aucune ne concerne les événements eux-mêmes.
L'endpoint répond lentement
Les livraisons expirent et s'accumulent en renvois.
CorrectionRépondez 2xx immédiatement et traitez depuis une file. Un handler qui écrit en base avant de répondre finit par rejouer son propre retard.
Un handler non idempotent
Le même message apparaît deux fois dans la timeline.
CorrectionUn même événement peut être livré plusieurs fois. Dédoublonnez sur l'identifiant de l'objet porté par le payload avant d'écrire.
Abonné à tout
L'endpoint reçoit sans arrêt des accusés de lecture et des ouvertures de tracking.
Correctiontrigger_events accepte trente-neuf valeurs. Abonnez-vous aux événements que vous traitez, et créez plusieurs endpoints quand le traitement diffère.
account_ids oublié dans un produit multi-clients
Le worker d'un client reçoit les événements d'un autre client.
CorrectionVide ou omis, account_ids écoute tous les comptes de l'application. Restreignez-le explicitement par client, ou filtrez sur le compte du payload avant d'écrire.
6000+
Les entreprises qui innovent avec Unipile
Des entreprises leaders nous font confiance
1 API
Toutes les plateformes centralisées en une API
2 jours
Intégration très rapide
30%
Réduction des efforts et des ressources de maintenance
Sécurité et conformité
Une protection de niveau entreprise pour vos données et workflows En savoir plus sur notre sécurité
SOC 2 Type II
Certifié
Contrôles de sécurité vérifiés de manière indépendante garantissant la protection des données et l'intégrité opérationnelle.
GDPR
Conforme à la loi
Conformité totale avec les réglementations européennes en matière de protection des données pour le respect de la vie privée des utilisateurs.
99.9%
Temps de disponibilité de la plateforme au cours des 24 derniers mois
24/7
Support mondial avec API performante
FAQ webhooks
LinkedIn a-t-il un webhook de messages, comment créer un endpoint, quels événements existent, comment limiter un endpoint à un client, et comment vérifier une livraison.
Pas pour un compte membre. Les webhooks publics de LinkedIn couvrent les actions sociales des organisations et les formulaires de leads ; les messages des membres relèvent d'un programme de conformité qui n'accepte plus de nouveaux partenaires. Avec Unipile, l'événement
message.new couvre LinkedIn comme tous les autres canaux, sur le compte que votre utilisateur a lui-même connecté.POST https://api.unipile.com/v2/webhooks/endpoints/ avec l'en-tête X-API-KEY et un body contenant trigger_events et url. La réponse contient un id au format we_… et un secret.Trente-neuf valeurs réparties dans les familles account, message, chat, email, calendar, tracking et relation. Les plus utilisées sont
message.new, email.new, account.add, account.reconnect et account.status.disconnected.Avec
account_ids, un tableau d'identifiants au format acc_…. Omis ou vide, l'endpoint écoute tous les comptes de l'application.La création de l'endpoint renvoie un
secret. Conservez-le côté serveur et validez chaque livraison avant de la traiter. Votre URL doit être en HTTPS et accessible publiquement ; le journal de livraison est disponible sur la route des conversations webhook.