Pipedrive Connector
Pipedrive Connector
Verbinde Pipedrive über Tajo mit Brevo, um deine Vertriebspipeline mit der Marketingautomatisierung zu verknüpfen. Synchronisiere Kontakte, Deals, Organisationen und Aktivitäten, um Lifecycle-Kampagnen auf Basis von CRM-Phasenwechseln auszuspielen.
Überblick
| Eigenschaft | Wert |
|---|---|
| Plattform | Pipedrive |
| Kategorie | CRM |
| Einrichtungsaufwand | Einfach |
| Offizielle Integration | Nein |
| Synchronisierte Daten | Personen, Deals, Organisationen, Aktivitäten |
| Verfügbare Skills | 8 |
Funktionen
- Kontaktsynchronisierung - Bidirektionale Synchronisierung von Pipedrive-Personen mit Brevo-Kontakten
- Deal-Phasen-Tracking - Löse Brevo-Automatisierungen basierend auf Änderungen der Pipeline-Phase aus
- Organisationssynchronisierung - Ordne Pipedrive-Organisationen Brevo-Unternehmensattributen zu
- Aktivitäts-Tracking - Leite Pipedrive-Aktivitäten (Anrufe, E-Mails, Meetings) als Brevo-Events weiter
- Benutzerdefinierte Felder - Ordne benutzerdefinierte Pipedrive-Felder Brevo-Kontaktattributen zu
- Pipeline-Reporting - Rufe Deal-Pipeline-Daten für die Marketing-Attribution ab
- Lead-Synchronisierung - Importiere Pipedrive-Leads für Nurture-Kampagnen in Brevo
- Webhook-Automatisierung - Echtzeit-Updates über Pipedrive-Webhooks
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du Folgendes hast:
- Ein Pipedrive-Konto mit Administratorzugriff
- Dein Pipedrive-API-Token (zu finden unter Einstellungen > Persönliche Einstellungen > API)
- Für OAuth-Apps: eine registrierte Pipedrive-App mit Client-ID und Client-Secret
- Ein Brevo-Konto mit API-Zugriff
- Ein Tajo-Konto mit API-Zugangsdaten
Authentifizierung
API-Token
Die einfachste Authentifizierungsmethode. Du findest dein API-Token in Pipedrive unter Einstellungen > Persönliche Einstellungen > API.
curl "https://api.pipedrive.com/v1/persons?api_token=YOUR_API_TOKEN"OAuth 2.0 (Empfohlen für Apps)
Für produktive Anwendungen verwende 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"Nach dem Erhalt des Zugriffstokens:
curl "https://api.pipedrive.com/v1/persons" \ -H "Authorization: Bearer ACCESS_TOKEN"Konfiguration
Grundeinrichtung
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: 63Zuordnung von Personenfeldern
Ordne Pipedrive-Personenfelder Brevo-Kontaktattributen zu:
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_SIZEZuordnung von Deal-Phasen
Ordne Pipedrive-Pipeline-Phasen Brevo-Listenzuweisungen zu:
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 listWebhook-Konfiguration
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"API-Endpunkte
| Methode | Endpunkt | Beschreibung |
|---|---|---|
GET | /v1/persons | Personen auflisten |
POST | /v1/persons | Eine Person anlegen |
PUT | /v1/persons/{id} | Eine Person aktualisieren |
DELETE | /v1/persons/{id} | Eine Person löschen |
GET | /v1/deals | Deals auflisten |
POST | /v1/deals | Einen Deal anlegen |
PUT | /v1/deals/{id} | Einen Deal aktualisieren |
GET | /v1/organizations | Organisationen auflisten |
POST | /v1/organizations | Eine Organisation anlegen |
GET | /v1/activities | Aktivitäten auflisten |
POST | /v1/activities | Eine Aktivität anlegen |
GET | /v1/leads | Leads auflisten |
GET | /v1/pipelines | Pipelines auflisten |
GET | /v1/stages | Pipeline-Phasen auflisten |
GET | /v1/itemSearch | Über alle Objekte hinweg suchen |
POST | /v1/webhooks | Einen Webhook anlegen |
GET | /v1/recents | Kürzlich geänderte Objekte abrufen |
Code-Beispiele
Pipedrive-Connector initialisieren
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'});Personen mit Brevo synchronisieren
// 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 }Deal-Phasenwechsel verfolgen
// 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');});Pipedrive-weite Suche
// 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 organizationsRatenbegrenzungen
| Plan | Limit | Details |
|---|---|---|
| Essential | 80 Anfragen/10 Sek. | Pro API-Token |
| Advanced | 100 Anfragen/10 Sek. | Pro API-Token |
| Professional | 200 Anfragen/10 Sek. | Pro API-Token |
| Power | 200 Anfragen/10 Sek. | Pro API-Token |
| Enterprise | 400 Anfragen/10 Sek. | Pro API-Token |
| OAuth-Apps | 80 Anfragen/2 Sek. | Pro Zugriffstoken |
Weitere Begrenzungen:
| Ressource | Limit |
|---|---|
| Pro Seite | Max. 500 Datensätze |
| Webhooks | 40 pro Konto |
| Bulk-Löschung | 100 Objekte/Anfrage |
| Suche | Standard-Ratenbegrenzungen |
Rate-Limit-Header
Pipedrive gibt die Header X-RateLimit-Limit, X-RateLimit-Remaining und X-RateLimit-Reset zurück. Implementiere Backoff, wenn X-RateLimit-Remaining gegen null geht.
Fehlerbehebung
| Problem | Ursache | Lösung |
|---|---|---|
401 Unauthorized | Ungültiges API-Token | Token in Pipedrive-Einstellungen > API neu generieren |
403 Forbidden | Kontoberechtigungen | Sicherstellen, dass das Konto Administratorzugriff für die API-Nutzung hat |
| Personen ohne E-Mail | Keine E-Mail im Datensatz | Personen vor der Synchronisierung auf gültige E-Mail filtern |
| Benutzerdefinierte Felder werden nicht zugeordnet | Falscher Feld-Key | Pipedrive-Feld-Key (Hash) verwenden, nicht den Anzeigenamen |
| Webhooks werden nicht empfangen | Firewall blockiert | Sicherstellen, dass die Webhook-URL öffentlich per HTTPS erreichbar ist |
| Doppelte Personen | Mehrere E-Mail-Datensätze | Pipedrive-Merge-API vor der Synchronisierung nutzen |
429 Too Many Requests | Ratenbegrenzung überschritten | Backoff über den X-RateLimit-Reset-Header umsetzen |
Best Practices
- OAuth für die Produktion verwenden - Bevorzuge OAuth 2.0 gegenüber API-Tokens für produktive Anwendungen
- Deal-Phasenwechsel verfolgen - Nutze Webhooks, um Brevo-Automatisierungen bei Pipeline-Übergängen auszulösen
- Benutzerdefinierte Felder zuordnen - Verwende Pipedrive-Feld-Keys (nicht Namen) für eine zuverlässige Feldzuordnung
- Paginierung verarbeiten - Verwende die Parameter
startundlimit; prüfemore_items_in_collection - Recents-Endpunkt nutzen - Polle
/v1/recentsfür inkrementelle Synchronisierungen anstelle vollständiger Exporte - Vor der Synchronisierung deduplizieren - Führe doppelte Personen in Pipedrive zusammen, bevor du sie mit Brevo synchronisierst
- Sandbox-Konten verwenden - Lege ein Entwickler:innen-Sandbox-Konto für Integrationstests an
Sicherheit
- API-Token-Authentifizierung - Einfacher token-basierter Zugriff für die persönliche Nutzung
- OAuth 2.0 - Sicherer delegierter Zugriff für Drittanbieteranwendungen
- Nur HTTPS - Die gesamte API-Kommunikation erfordert TLS-Verschlüsselung
- Webhook-HTTPS - Webhooks werden nur an HTTPS-Endpunkte ausgeliefert
- Rollenbasierter Zugriff - Pipedrive-Berechtigungen berücksichtigen Nutzer:innen-Rollen
- SOC-2-zertifiziert - Pipedrive ist SOC-2-konform
- DSGVO-Konformität - Unterstützt Anträge auf Datenexport und -löschung