- Accueil
- /
- Centre d'aide
- /
- API ReactIn
- /
- Payloads des webhooks et identification d'un lead
Payloads des webhooks et identification d'un lead
Un même événement webhook peut provenir d'une campagne, d'une automatisation ou d'un lead magnet, et le payload diffère. Découvrez comment distinguer les sources et quel identifiant désigne une personne dans tous les cas.
Les webhooks envoient un événement à votre endpoint chaque fois qu'il se passe quelque chose dans votre espace de travail : un lead est ajouté, une invitation est envoyée, une connexion est acceptée, un premier message part, un lead répond. La plupart de ces événements peuvent être produits par plusieurs sources, et le payload n'est pas identique dans tous les cas. Cette page documente ces différences, et en particulier comment identifier le lead.
Enveloppe
Chaque livraison a la même structure externe :
{
"event": "CONNECTION_ACCEPTED",
"timestamp": "2026-03-11T14:30:00.000Z",
"data": { },
"metadata": {
"organizationId": "org_abc123",
"campaignId": "campaign_xyz789",
"listId": "list_xyz789",
"linkedinAccountId": "li_acc_123",
"automationId": "automation_xyz789"
}
}
metadata ne contient que les clés pertinentes pour l'événement. C'est dans data que la structure varie.
Identifier la source d'un événement
CONNECTION_ACCEPTED, INVITATION_SENT, FIRST_MESSAGE_SENT et LEAD_ADDED peuvent chacun provenir de plusieurs endroits. Exactement une de ces clés est présente dans data, et elle vous indique laquelle :
Clé dans data | Source |
|---|---|
campaign | Une campagne que vous avez lancée |
list | Une SmartList |
automation | Une automatisation, par exemple l'auto-accept |
leadMagnet | Un lead magnet |
C'est important pour vos rapports. L'auto-accept produit des événements CONNECTION_ACCEPTED pour des invitations que d'autres personnes vous ont envoyées, pas pour des invitations envoyées par ReactIn en votre nom. Si vous calculez un taux d'acceptation, filtrez d'abord sur data.campaign : sinon les acceptations entrantes gonflent votre numérateur, et il n'existe aucun INVITATION_SENT correspondant au dénominateur.
Identifier le lead
L'objet data.lead porte toujours deux identifiants :
-
lead.leadId, l'identifiant du lead au niveau de l'organisation. Il signifie toujours la même chose, quelle que soit la source. C'est la clé à utiliser pour dédupliquer des personnes, ou pour rapprocher un événement d'un enregistrement que vous avez déjà stocké. -
lead.id, l'identifiant le plus spécifique disponible dans ce contexte. Quanddata.campaignoudata.listest présent, c'est l'identifiant du lead rattaché à la liste, le mêmeidque renvoie [Récupérer les leads de ReactIn via API] et le mêmeleadIdqu'accepte [Mettre à jour des leads via API]. Quanddata.automationoudata.leadMagnetest présent, il n'y a aucune liste impliquée :lead.idreprend alors la valeur delead.leadId.
⚠️ Une même personne ajoutée à deux SmartLists a deux
lead.iddifférents mais un seullead.leadId. Utilisezlead.leadIdpour réconcilier une personne entre campagnes, automatisations et lead magnets.
Les deux clés sont toujours présentes, et toutes deux peuvent valoir null si le lead n'a pas pu être résolu. Les payloads d'automatisation et de lead magnet exposent aussi lead.linkedinUrl, qui constitue une clé de repli fiable.
CONNECTION_ACCEPTED, les trois formes
Depuis une campagne. Le lead vient d'une SmartList, la fiche complète est donc disponible.
{
"type": "CONNECTION_ACCEPTED",
"conversation": null,
"lead": {
"id": "list_lead_XXX",
"leadId": "lead_YYY",
"firstName": "Jane",
"lastName": "Smith",
"email": "jane@example.com",
"linkedinUrl": "https://linkedin.com/in/janesmith",
"company": "Acme Inc",
"headline": "Product Manager",
"location": "New York, NY",
"customFields": { "Is Matching My Target": true }
},
"campaign": { "id": "campaign_xyz789", "name": "Q1 Outreach" },
"linkedinAccount": { "id": "li_acc_123", "name": "Sales Rep" }
}
Depuis l'automatisation auto-accept. Quelqu'un vous a envoyé une invitation et ReactIn l'a acceptée. Il n'y a ni liste, ni campagne, ni donnée enrichie : le bloc lead se limite à ce que LinkedIn renvoie sur l'invitation. lead.linkedinIdentifier est l'identifiant membre LinkedIn.
{
"type": "CONNECTION_ACCEPTED",
"lead": {
"id": "lead_YYY",
"leadId": "lead_YYY",
"linkedinIdentifier": "ACoAAABCDEFGHIJ",
"firstName": "Jane",
"lastName": "Smith",
"linkedinUrl": "https://www.linkedin.com/in/janesmith",
"headline": "Product Manager"
},
"automation": {
"id": "automation_xyz789",
"name": "[Automation - Auto accept] Sales Rep"
},
"linkedinAccount": { "id": "li_acc_123", "name": "Sales Rep" }
}
Depuis un lead magnet. Même bloc lead réduit, avec un bloc leadMagnet au lieu de automation.
{
"type": "CONNECTION_ACCEPTED",
"lead": {
"id": "lead_YYY",
"leadId": "lead_YYY",
"firstName": "Jane",
"lastName": "Smith",
"linkedinUrl": "https://linkedin.com/in/janesmith",
"headline": "Product Manager"
},
"leadMagnet": { "id": "lead_magnet_xyz789", "name": "LinkedIn Playbook" },
"linkedinAccount": { "id": "li_acc_123", "name": "Sales Rep" }
}
INVITATION_SENT, FIRST_MESSAGE_SENT et LEAD_ADDED suivent le même schéma : bloc lead complet depuis une campagne ou une liste, bloc lead réduit depuis une automatisation ou un lead magnet.
Voir les payloads dans l'app
Allez dans Paramètres → Webhooks, créez ou modifiez un webhook, puis cliquez sur Voir le payload sous n'importe quel événement. Les événements émis par plusieurs sources affichent un onglet par source.
Bonnes pratiques
-
Branchez sur
data.campaign/data.list/data.automation/data.leadMagnetplutôt que sur la présence d'un champ à l'intérieur delead. De nouveaux champs optionnels peuvent être ajoutés aux payloads au fil du temps : ignorez les clés que vous ne reconnaissez pas plutôt que de rejeter la livraison. -
Dédupliquez sur
lead.leadId, aveclead.linkedinUrlen repli. -
Les webhooks ne livrent que les événements survenus après leur création. Les données existantes ne déclenchent aucune livraison.