Connecteur Pipedrive
Connecteur Pipedrive
Connectez Pipedrive à Brevo via Tajo pour faire le pont entre votre pipeline commercial et l’automatisation marketing. Synchronisez contacts, transactions, organisations et activités afin d’alimenter les campagnes du cycle de vie déclenchées par les changements d’étape dans le CRM.
Vue d’ensemble
| Propriété | Valeur |
|---|---|
| Plateforme | Pipedrive |
| Catégorie | CRM |
| Complexité d’installation | Facile |
| Intégration officielle | Non |
| Données synchronisées | Personnes, transactions, organisations, activités |
| Skills disponibles | 8 |
Fonctionnalités
- Synchronisation des contacts, Synchronisation bidirectionnelle des personnes Pipedrive vers les contacts Brevo
- Suivi des étapes de transaction, Déclenchez des automatisations Brevo en fonction des changements d’étape du pipeline
- Synchronisation des organisations, Mappez les organisations Pipedrive vers les attributs d’entreprise Brevo
- Suivi des activités, Transmettez les activités Pipedrive (appels, e-mails, réunions) en tant qu’événements Brevo
- Champs personnalisés, Mappez les champs personnalisés Pipedrive vers les attributs de contact Brevo
- Reporting du pipeline, Récupérez les données du pipeline de transactions pour l’attribution marketing
- Synchronisation des leads, Importez les leads Pipedrive dans Brevo pour les campagnes de nurturing
- Automatisation via webhook, Mises à jour en temps réel via les webhooks Pipedrive
Prérequis
Avant de commencer, assurez-vous de disposer de :
- Un compte Pipedrive avec accès administrateur
- Votre jeton API Pipedrive (disponible dans Settings > Personal preferences > API)
- Pour les applications OAuth : une application Pipedrive enregistrée avec Client ID et Client Secret
- Un compte Brevo avec accès API
- Un compte Tajo avec des identifiants API
Authentification
Jeton API
La méthode d’authentification la plus simple. Retrouvez votre jeton API dans Pipedrive sous Settings > Personal preferences > API.
curl "https://api.pipedrive.com/v1/persons?api_token=YOUR_API_TOKEN"OAuth 2.0 (recommandé pour les applications)
Pour les applications de production, utilisez OAuth 2.0 :
# Authorization URLhttps://oauth.pipedrive.com/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI
# Token exchangecurl -X POST https://oauth.pipedrive.com/oauth/token \ -d "grant_type=authorization_code" \ -d "code=AUTH_CODE" \ -d "redirect_uri=REDIRECT_URI" \ -u "CLIENT_ID:CLIENT_SECRET"Après obtention du jeton d’accès :
curl "https://api.pipedrive.com/v1/persons" \ -H "Authorization: Bearer ACCESS_TOKEN"Configuration
Configuration de base
connectors: pipedrive: enabled: true api_token: "your-pipedrive-api-token" company_domain: "yourcompany" # yourcompany.pipedrive.com
# Data sync options sync: persons: true deals: true organizations: true activities: true leads: true
# Brevo list assignment lists: all_contacts: 60 qualified_leads: 61 customers: 62 churned: 63Mappage des champs de personne
Mappez les champs de personne Pipedrive vers les attributs de contact Brevo :
person_mapping: email: email name: FULLNAME first_name: FIRSTNAME last_name: LASTNAME phone: SMS org_id.name: COMPANY
# Deal-related computed fields won_deals_count: WON_DEALS lost_deals_count: LOST_DEALS open_deals_count: OPEN_DEALS closed_deals_count: CLOSED_DEALS total_revenue: LTV
# Custom fields (use Pipedrive field key) custom_fields.lead_source: LEAD_SOURCE custom_fields.industry: INDUSTRY custom_fields.company_size: COMPANY_SIZEMappage des étapes de transaction
Mappez les étapes du pipeline Pipedrive vers les affectations de listes Brevo :
deal_stage_mapping: # stage_id -> brevo_list_id 1: 61 # Lead In 2: 61 # Contact Made 3: 62 # Proposal Made 4: 62 # Negotiations Started "won": 63 # Won -> Customers list "lost": 64 # Lost -> Win-back listConfiguration des webhooks
webhooks: - event_action: "added" event_object: "person" brevo_event: "contact_created" - event_action: "updated" event_object: "person" brevo_event: "contact_updated" - event_action: "added" event_object: "deal" brevo_event: "deal_created" - event_action: "updated" event_object: "deal" brevo_event: "deal_updated" - event_action: "merged" event_object: "person" brevo_event: "contact_merged" - event_action: "added" event_object: "activity" brevo_event: "activity_logged"Endpoints API
| Méthode | Endpoint | Description |
|---|---|---|
GET | /v1/persons | Lister les personnes |
POST | /v1/persons | Créer une personne |
PUT | /v1/persons/{id} | Mettre à jour une personne |
DELETE | /v1/persons/{id} | Supprimer une personne |
GET | /v1/deals | Lister les transactions |
POST | /v1/deals | Créer une transaction |
PUT | /v1/deals/{id} | Mettre à jour une transaction |
GET | /v1/organizations | Lister les organisations |
POST | /v1/organizations | Créer une organisation |
GET | /v1/activities | Lister les activités |
POST | /v1/activities | Créer une activité |
GET | /v1/leads | Lister les leads |
GET | /v1/pipelines | Lister les pipelines |
GET | /v1/stages | Lister les étapes de pipeline |
GET | /v1/itemSearch | Rechercher parmi tous les éléments |
POST | /v1/webhooks | Créer un webhook |
GET | /v1/recents | Récupérer les éléments récemment modifiés |
Exemples de code
Initialiser le connecteur Pipedrive
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Pipedrive accountawait tajo.connectors.connect('pipedrive', { apiToken: process.env.PIPEDRIVE_API_TOKEN, companyDomain: 'yourcompany'});Synchroniser les personnes vers Brevo
// Fetch persons from Pipedriveconst response = await fetch( `https://api.pipedrive.com/v1/persons?start=0&limit=100&api_token=${API_TOKEN}`);
const { data, additional_data } = await response.json();// data: [{ id, name, first_name, last_name, email, phone, org_id, ... }]// additional_data.pagination: { start, limit, more_items_in_collection }Suivre les changements d’étape de transaction
// Webhook handler for deal updatesapp.post('/webhooks/pipedrive', async (req, res) => { const { meta, current, previous } = req.body;
if (meta.object === 'deal' && meta.action === 'updated') { // Detect stage change if (current.stage_id !== previous.stage_id) { await tajo.connectors.handleWebhook('pipedrive', { topic: 'deal.stage_changed', payload: { dealId: current.id, dealTitle: current.title, previousStage: previous.stage_id, newStage: current.stage_id, personId: current.person_id, value: current.value, currency: current.currency } }); } }
res.status(200).send('OK');});Rechercher dans Pipedrive
// Global search across persons, deals, and organizationsconst response = await fetch( `https://api.pipedrive.com/v1/itemSearch?term=${query}&item_types=person,deal&api_token=${API_TOKEN}`);
const { data } = await response.json();// Returns matching persons, deals, and organizationsLimites de débit
| Plan | Limite | Détails |
|---|---|---|
| Essential | 80 requêtes/10 s | Par jeton API |
| Advanced | 100 requêtes/10 s | Par jeton API |
| Professional | 200 requêtes/10 s | Par jeton API |
| Power | 200 requêtes/10 s | Par jeton API |
| Enterprise | 400 requêtes/10 s | Par jeton API |
| Applications OAuth | 80 requêtes/2 s | Par jeton d’accès |
Limites supplémentaires :
| Ressource | Limite |
|---|---|
| Par page | 500 enregistrements max |
| Webhooks | 40 par compte |
| Suppression en masse | 100 éléments/requête |
| Recherche | Limites de débit standard |
En-têtes de limite de débit
Pipedrive renvoie les en-têtes X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset. Implémentez un backoff lorsque X-RateLimit-Remaining approche de zéro.
Dépannage
| Problème | Cause | Solution |
|---|---|---|
401 Unauthorized | Jeton API invalide | Régénérez le jeton dans Pipedrive Settings > API |
403 Forbidden | Permissions du compte | Assurez-vous que le compte dispose d’un accès administrateur pour l’API |
| Personnes sans e-mail | Aucun e-mail dans l’enregistrement | Filtrez les personnes avec un e-mail valide avant la synchronisation |
| Champs personnalisés non mappés | Mauvaise clé de champ | Utilisez la clé de champ Pipedrive (hash), pas le nom affiché |
| Webhooks non reçus | Pare-feu bloquant | Assurez-vous que l’URL du webhook est accessible publiquement via HTTPS |
| Personnes dupliquées | Plusieurs enregistrements d’e-mail | Utilisez l’API de fusion Pipedrive avant la synchronisation |
429 Too Many Requests | Limite de débit dépassée | Implémentez un backoff en utilisant l’en-tête X-RateLimit-Reset |
Bonnes pratiques
- Utilisez OAuth en production, Privilégiez OAuth 2.0 aux jetons API pour les applications de production
- Suivez les changements d’étape de transaction, Utilisez les webhooks pour déclencher des automatisations Brevo lors des transitions d’étape
- Mappez les champs personnalisés, Utilisez les clés de champ personnalisé Pipedrive (pas les noms) pour un mappage fiable
- Gérez la pagination, Utilisez les paramètres
startetlimit; vérifiezmore_items_in_collection - Utilisez l’endpoint Recents, Interrogez
/v1/recentspour les synchronisations incrémentales plutôt que des exports complets - Dédupliquez avant la synchronisation, Fusionnez les personnes dupliquées dans Pipedrive avant la synchronisation vers Brevo
- Utilisez des comptes sandbox, Créez un compte sandbox développeur pour tester les intégrations
Sécurité
- Authentification par jeton API, Accès simple basé sur un jeton pour un usage personnel
- OAuth 2.0, Accès délégué sécurisé pour les applications tierces
- HTTPS uniquement, Toutes les communications API requièrent un chiffrement TLS
- Webhooks HTTPS, Les webhooks ne sont livrés qu’aux endpoints HTTPS
- Accès basé sur les rôles, Les permissions Pipedrive respectent les rôles utilisateur
- Certifié SOC 2, Pipedrive maintient sa conformité SOC 2
- Conformité RGPD, Prise en charge des demandes d’export et de suppression de données