ℹ️ IMPORTANT : La consultation des articles liés à votre méthode d'intégration est primordiale afin de bien comprendre comment réaliser votre migration.
La V2 de l'API Pinpo simplifie et restructure le format d'envoi des contacts. Si vous utilisez actuellement la V1, cet article vous guide pas à pas pour adapter vos appels au nouveau format.
Qu'est-ce qui change entre la V1 et la V2 ?
Qu'est-ce qui change entre la V1 et la V2 ?
La V2 apporte quatre changements majeurs :
La déclaration de l'agent est obligatoire. En V1, le champ
scenarioSelectionétait optionnel. En V2, chaque requête doit être envoyée à l'URL d'import spécifique de l'agent cible (https://api.pinpo.com/agents/{id_agent}/qualifications). Il n'est plus possible d'envoyer un contact sans préciser l'agent qui le traitera.Une structure plus claire. Le payload est réorganisé autour de trois objets principaux :
qualification,contactetsalesperson. Les champs éparpillés à la racine en V1 sont désormais regroupés logiquement.Des champs personnalisés simplifiés. Les trois tableaux
scriptData,statsDataetoutputData(format nom/valeur) sont remplacés par un unique objetcustomFieldsavec des paires clé/valeur typées.Des conventions de nommage harmonisées. Les noms de champs passent en lowercase (
firstName→firstname,salesPerson→salesperson).
Comment mettre à jour le JSON V1 vers le JSON V2 ?
Comment mettre à jour le JSON V1 vers le JSON V2 ?
L'objet qualification
L'objet qualification
Les champs qui décrivaient la qualification à la racine du payload V1 sont regroupés dans l'objet qualification :
Champ V1 | Champ V2 | Notes |
|
| L'identifiant de la qualification dans votre système. |
|
| Renommé. La source marketing du contact. |
| (supprimé) | L'agent cible est désormais déterminé par l'URL d'import (qui contient l'ID de l'agent). Ce champ n'existe plus. En V2, la déclaration de l'agent est obligatoire : chaque requête doit être envoyée à l'URL spécifique de l'agent cible ( |
(n'existait pas) |
| Nouveau. Booléen. Si |
L'objet contact
L'objet contact
Champ V1 | Champ V2 | Notes |
|
| Casse modifiée : camelCase → lowercase. |
|
| Casse modifiée : camelCase → lowercase. |
|
| Inchangé. Le format international avec |
|
| Inchangé. |
|
| Inchangé. L'identifiant du contact dans votre système. |
|
| Inchangé. |
L'objet salesperson
L'objet salesperson
Champ V1 | Champ V2 | Notes |
|
| Renommé : |
|
| Idem. |
|
| Inchangé. |
|
| Inchangé. |
|
| Inchangé. |
|
| Inchangé. |
(n'existait pas) |
| Nouveau. Le genre du commercial. |
Les champs personnalisés (customFields)
Les champs personnalisés (customFields)
C'est le changement le plus structurant. En V1, les données personnalisées étaient réparties dans trois tableaux distincts au format nom/valeur.
En V2, elles sont regroupées dans un unique objet
qualification.customFieldsavec des paires clé/valeur.
Avant (V1) :
{
"scriptData": [
{ "name": "location", "value": "Scranton" },
{ "name": "postalCode", "value": "18501" }
],
"statsData": [
{ "name": "day", "value": "Monday" }
],
"outputData": [
{ "name": "civility", "value": "Mr" }
]
}
Après (V2) :
{
"qualification": {
"customFields": {
"location": "Scranton",
"postalCode": "18501",
"day": "Monday",
"civility": "Mr"
}
}
}
Les champs supprimés
Les champs supprimés
Champ V1 | Statut en V2 |
| Supprimé. L'agent est déterminé par l'URL d'import. |
| Supprimé. Si vous avez besoin de transmettre des informations produit, utilisez |
| Supprimé. Si vous avez besoin de transmettre des informations entreprise, utilisez |
Exemple complet : Avant / Après
Exemple complet : Avant / Après
Payload JSON V1
{
"contact": {
"firstName": "John",
"lastName": "Doe",
"phone": "33606060606",
"mail": "[email protected]",
"externalId": "abcd1234",
"gender": "male"
},
"externalId": "efghi56789",
"providerName": "Facebook leads",
"scenarioSelection": "kopij876f",
"product": {
"name": "Ream of Paper",
"category": "new",
"externalId": "120paperream"
},
"salesPerson": {
"firstName": "Michael",
"lastName": "Scott",
"phone": "33707070707",
"mail": "[email protected]",
"externalId": "scrantonms111",
"iCalUrl": "https://michaelscott.dundermifflin.ical.fr"
},
"company": {
"name": "Dunder Mifflin Paper Company Inc",
"externalId": "huih89hhgh"
},
"scriptData": [
{ "name": "location", "value": "Scranton" },
{ "name": "postalCode", "value": "18501" }
],
"statsData": [
{ "name": "day", "value": "Monday" }
],
"outputData": [
{ "name": "civility", "value": "Mr" }
]
}
Payload JSON V2 équivalent
{
"qualification": {
"externalId": "efghi56789",
"source": "Facebook leads",
"customFields": {
"location": "Scranton",
"postalCode": "18501",
"day": "Monday",
"civility": "Mr",
"productName": "Ream of Paper",
"productCategory": "new",
"productExternalId": "120paperream",
"companyName": "Dunder Mifflin Paper Company Inc",
"companyExternalId": "huih89hhgh"
}
},
"contact": {
"firstname": "John",
"lastname": "Doe",
"phone": "+33606060606",
"mail": "[email protected]",
"externalId": "abcd1234",
"gender": "male"
},
"salesperson": {
"firstname": "Michael",
"lastname": "Scott",
"phone": "33707070707",
"mail": "[email protected]",
"externalId": "scrantonms111",
"iCalUrl": "https://michaelscott.dundermifflin.ical.fr"
}
}
Remarque : Les données de product et company ont été migrées dans qualification.customFields avec des noms de clés explicites (productName, companyName, etc.). Vous êtes libre de choisir les noms de clés qui correspondent à votre modèle de données.
Checklist de test migration
Checklist de test migration
Étape | Action |
1 | Remplacer |
2 | Déplacer |
3 | Supprimer |
4 | Renommer |
5 | Renommer |
6 | Fusionner |
7 | Migrer les données de |
8 | Ajouter le préfixe |
9 | Tester l'appel en V2 avec |
10 | Vérifier la qualification de test dans Pinpo (données du contact, champs personnalisés, commercial assigné). |
11 | Passer |
💡 Conseil : Utilisez le champ "test": true de la V2 pour valider votre nouveau format sans impacter vos données de production.
Envoyez quelques qualifications de test, vérifiez qu'elles apparaissent correctement dans l'onglet Qualifications de test, puis basculez en production une fois la migration validée.
🌟 - Bonnes pratiques
Migrez un agent à la fois. Ne basculez pas tous vos agents en V2 simultanément. Commencez par un agent secondaire, validez le fonctionnement de bout en bout, puis migrez les suivants.
Attention à la casse. Les erreurs les plus fréquentes lors de la migration sont des erreurs de casse :
firstNameau lieu defirstname,salesPersonau lieu desalesperson. Vérifiez chaque champ.Profitez des customFields typés. En V2, les valeurs de
customFieldssupportent les typesnumber,booleanetdateen plus destring. Utilisez-les pour transmettre des données structurées ("budget": 500000plutôt que"budget": "500000").Ne maintenez pas les deux versions en parallèle. Une fois la migration validée, basculez définitivement en V2 pour éviter les incohérences et simplifier la maintenance.
Consultez la documentation technique. La référence complète de l'API V2 est disponible dans la documentation en ligne (bouton Documentation sur la page Intégration API). En cas de doute sur un champ, c'est la source de vérité.
ID de l’agent. Les {{agentId}} sont présents sur la plateforme PINPO (Intégrations> Connexion via API KEY > ID de l’agent)
