Connettore Pipedrive
Connettore Pipedrive
Collega Pipedrive a Brevo tramite Tajo per unire la tua sales pipeline all’automazione marketing. Sincronizza contatti, deal, organizzazioni e attività per alimentare campagne di lifecycle attivate dai cambiamenti di stage del CRM.
Panoramica
| Proprietà | Valore |
|---|---|
| Piattaforma | Pipedrive |
| Categoria | CRM |
| Complessità di setup | Facile |
| Integrazione ufficiale | No |
| Dati sincronizzati | Persone, Deal, Organizzazioni, Attività |
| Skill disponibili | 8 |
Funzionalità
- Sync contatti - Sincronizzazione bidirezionale delle persone Pipedrive con i contatti Brevo
- Tracciamento stage deal - Attiva automazioni Brevo basate sui cambiamenti di stage della pipeline
- Sync organizzazioni - Mappa le organizzazioni Pipedrive agli attributi azienda di Brevo
- Tracciamento attività - Inoltra le attività Pipedrive (chiamate, email, riunioni) come eventi Brevo
- Campi personalizzati - Mappa i campi personalizzati Pipedrive agli attributi di contatto Brevo
- Reportistica pipeline - Estrai i dati della pipeline deal per l’attribuzione marketing
- Sync lead - Importa i lead Pipedrive in Brevo per le campagne di nurture
- Automazione webhook - Aggiornamenti in tempo reale tramite i webhook di Pipedrive
Prerequisiti
Prima di iniziare, assicurati di avere:
- Un account Pipedrive con accesso admin
- Il tuo Pipedrive API Token (lo trovi in Settings > Personal preferences > API)
- Per le app OAuth: un’app Pipedrive registrata con Client ID e Client Secret
- Un account Brevo con accesso API
- Un account Tajo con credenziali API
Autenticazione
API Token
Il metodo di autenticazione più semplice. Trova il tuo API Token in Pipedrive sotto Settings > Personal preferences > API.
curl "https://api.pipedrive.com/v1/persons?api_token=YOUR_API_TOKEN"OAuth 2.0 (consigliato per le app)
Per le applicazioni in produzione, usa 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"Dopo aver ottenuto l’access token:
curl "https://api.pipedrive.com/v1/persons" \ -H "Authorization: Bearer ACCESS_TOKEN"Configurazione
Setup di 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: 63Mappatura campi persona
Mappa i campi persona di Pipedrive agli attributi di contatto 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_SIZEMappatura stage deal
Mappa gli stage della pipeline Pipedrive alle assegnazioni di liste 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 listConfigurazione webhook
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"Endpoint API
| Metodo | Endpoint | Descrizione |
|---|---|---|
GET | /v1/persons | Elenca le persone |
POST | /v1/persons | Crea una persona |
PUT | /v1/persons/{id} | Aggiorna una persona |
DELETE | /v1/persons/{id} | Elimina una persona |
GET | /v1/deals | Elenca i deal |
POST | /v1/deals | Crea un deal |
PUT | /v1/deals/{id} | Aggiorna un deal |
GET | /v1/organizations | Elenca le organizzazioni |
POST | /v1/organizations | Crea un’organizzazione |
GET | /v1/activities | Elenca le attività |
POST | /v1/activities | Crea un’attività |
GET | /v1/leads | Elenca i lead |
GET | /v1/pipelines | Elenca le pipeline |
GET | /v1/stages | Elenca gli stage della pipeline |
GET | /v1/itemSearch | Cerca tra tutti gli elementi |
POST | /v1/webhooks | Crea un webhook |
GET | /v1/recents | Ottieni elementi modificati di recente |
Esempi di codice
Inizializza il connettore 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'});Sincronizza le persone con 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 }Traccia cambiamenti di stage deal
// 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');});Ricerca globale in 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 organizationsLimiti di velocità
| Piano | Limite | Dettagli |
|---|---|---|
| Essential | 80 richieste/10 sec | Per API token |
| Advanced | 100 richieste/10 sec | Per API token |
| Professional | 200 richieste/10 sec | Per API token |
| Power | 200 richieste/10 sec | Per API token |
| Enterprise | 400 richieste/10 sec | Per API token |
| App OAuth | 80 richieste/2 sec | Per access token |
Limiti aggiuntivi:
| Risorsa | Limite |
|---|---|
| Per pagina | Max 500 record |
| Webhook | 40 per account |
| Bulk delete | 100 elementi/richiesta |
| Ricerca | Limiti di velocità standard |
Header dei limiti di velocità
Pipedrive restituisce gli header X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset. Implementa il backoff quando X-RateLimit-Remaining si avvicina a zero.
Risoluzione dei problemi
| Problema | Causa | Soluzione |
|---|---|---|
401 Unauthorized | API token non valido | Rigenera il token in Pipedrive Settings > API |
403 Forbidden | Permessi account | Assicurati che l’account abbia accesso admin per l’uso dell’API |
| Persone senza email | Nessuna email nel record | Filtra le persone con email valida prima di sincronizzare |
| Campi personalizzati non mappati | Chiave campo errata | Usa la field key di Pipedrive (hash), non il nome visualizzato |
| Webhook non ricevuti | Firewall che blocca | Assicurati che l’URL del webhook sia accessibile pubblicamente via HTTPS |
| Persone duplicate | Record email multipli | Usa l’API di merge di Pipedrive prima di sincronizzare |
429 Too Many Requests | Limite di velocità superato | Implementa il backoff usando l’header X-RateLimit-Reset |
Best practice
- Usa OAuth per la produzione - Preferisci OAuth 2.0 agli API token per le applicazioni in produzione
- Traccia i cambiamenti di stage deal - Usa i webhook per attivare automazioni Brevo sulle transizioni di stage
- Mappa i campi personalizzati - Usa le field key di Pipedrive (non i nomi) per una mappatura affidabile
- Gestisci la paginazione - Usa i parametri
startelimit; controllamore_items_in_collection - Usa l’endpoint Recents - Interroga
/v1/recentsper sync incrementali invece di export completi - Deduplica prima della sync - Unisci le persone duplicate in Pipedrive prima di sincronizzare con Brevo
- Usa account sandbox - Crea un account developer sandbox per testare le integrazioni
Sicurezza
- Autenticazione API token - Accesso semplice basato su token per uso personale
- OAuth 2.0 - Accesso delegato sicuro per applicazioni di terze parti
- Solo HTTPS - Tutte le comunicazioni API richiedono cifratura TLS
- Webhook HTTPS - I webhook vengono consegnati solo a endpoint HTTPS
- Accesso basato sui ruoli - I permessi Pipedrive rispettano i ruoli utente
- Certificazione SOC 2 - Pipedrive mantiene la conformità SOC 2
- Conformità GDPR - Supporta export dati e richieste di cancellazione