Konektor Pipedrive
Hubungkan Pipedrive ke Brevo melalui Tajo untuk menjembatani sales pipeline Anda dengan otomatisasi marketing. Sinkronkan kontak, deal, organisasi, dan aktivitas untuk menjalankan kampanye lifecycle yang dipicu oleh perubahan tahap CRM.
Ikhtisar
| Properti | Nilai |
|---|---|
| Platform | Pipedrive |
| Kategori | CRM |
| Kompleksitas setup | Mudah |
| Integrasi resmi | Tidak |
| Data yang disinkronkan | Person, Deal, Organisasi, Aktivitas |
| Skill tersedia | 8 |
Fitur
- Sinkronisasi kontak - Sinkronisasi dua arah dari person Pipedrive ke kontak Brevo
- Pelacakan tahap deal - Picu otomatisasi Brevo berdasarkan perubahan tahap pipeline deal
- Sinkronisasi organisasi - Petakan organisasi Pipedrive ke atribut perusahaan di Brevo
- Pelacakan aktivitas - Teruskan aktivitas Pipedrive (panggilan, email, meeting) sebagai event Brevo
- Field kustom - Petakan field kustom Pipedrive ke atribut kontak Brevo
- Pelaporan pipeline - Tarik data pipeline deal untuk atribusi marketing
- Sinkronisasi lead - Impor lead Pipedrive ke Brevo untuk kampanye nurture
- Otomatisasi webhook - Pembaruan real-time melalui webhook Pipedrive
Prasyarat
Sebelum memulai, pastikan Anda memiliki:
- Akun Pipedrive dengan akses admin
- API Token Pipedrive Anda (tersedia di Settings > Personal preferences > API)
- Untuk OAuth app: aplikasi Pipedrive terdaftar dengan Client ID dan Client Secret
- Akun Brevo dengan akses API
- Akun Tajo dengan kredensial API
Autentikasi
API Token
Metode autentikasi paling sederhana. Temukan API Token Anda di Pipedrive melalui Settings > Personal preferences > API.
curl "https://api.pipedrive.com/v1/persons?api_token=YOUR_API_TOKEN"OAuth 2.0 (direkomendasikan untuk aplikasi)
Untuk aplikasi produksi, gunakan 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"Setelah memperoleh access token:
curl "https://api.pipedrive.com/v1/persons" \ -H "Authorization: Bearer ACCESS_TOKEN"Konfigurasi
Setup dasar
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: 63Pemetaan field person
Petakan field person Pipedrive ke atribut kontak 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_SIZEPemetaan tahap deal
Petakan tahap pipeline Pipedrive ke penetapan daftar 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 listKonfigurasi 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
| Method | Endpoint | Deskripsi |
|---|---|---|
GET | /v1/persons | Menampilkan daftar person |
POST | /v1/persons | Membuat person |
PUT | /v1/persons/{id} | Memperbarui person |
DELETE | /v1/persons/{id} | Menghapus person |
GET | /v1/deals | Menampilkan daftar deal |
POST | /v1/deals | Membuat deal |
PUT | /v1/deals/{id} | Memperbarui deal |
GET | /v1/organizations | Menampilkan daftar organisasi |
POST | /v1/organizations | Membuat organisasi |
GET | /v1/activities | Menampilkan daftar aktivitas |
POST | /v1/activities | Membuat aktivitas |
GET | /v1/leads | Menampilkan daftar lead |
GET | /v1/pipelines | Menampilkan daftar pipeline |
GET | /v1/stages | Menampilkan daftar tahap pipeline |
GET | /v1/itemSearch | Mencari di seluruh item |
POST | /v1/webhooks | Membuat webhook |
GET | /v1/recents | Mengambil item yang baru diubah |
Contoh kode
Inisialisasi konektor 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'});Menyinkronkan person ke 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 }Melacak perubahan tahap 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');});Pencarian di seluruh 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 organizationsRate limit
| Paket | Batas | Detail |
|---|---|---|
| Essential | 80 request/10 detik | Per API token |
| Advanced | 100 request/10 detik | Per API token |
| Professional | 200 request/10 detik | Per API token |
| Power | 200 request/10 detik | Per API token |
| Enterprise | 400 request/10 detik | Per API token |
| OAuth app | 80 request/2 detik | Per access token |
Batasan tambahan:
| Resource | Batas |
|---|---|
| Per halaman | Maksimal 500 record |
| Webhook | 40 per akun |
| Bulk delete | 100 item/request |
| Pencarian | Mengikuti rate limit standar |
Header rate limit
Pipedrive mengembalikan header X-RateLimit-Limit, X-RateLimit-Remaining, dan X-RateLimit-Reset. Terapkan backoff ketika X-RateLimit-Remaining mendekati nol.
Pemecahan masalah
| Masalah | Penyebab | Solusi |
|---|---|---|
401 Unauthorized | API token tidak valid | Buat ulang token di Pipedrive Settings > API |
403 Forbidden | Izin akun kurang | Pastikan akun memiliki akses admin untuk penggunaan API |
| Person tanpa email | Tidak ada email pada record | Saring person dengan email valid sebelum sinkronisasi |
| Field kustom tidak terpetakan | Field key salah | Gunakan field key Pipedrive (hash), bukan nama tampilan |
| Webhook tidak diterima | Diblokir firewall | Pastikan URL webhook dapat diakses publik melalui HTTPS |
| Person duplikat | Beberapa record dengan email sama | Gunakan merge API Pipedrive sebelum sinkronisasi |
429 Too Many Requests | Rate limit terlampaui | Terapkan backoff menggunakan header X-RateLimit-Reset |
Praktik terbaik
- Gunakan OAuth untuk produksi - Utamakan OAuth 2.0 dibanding API token untuk aplikasi produksi
- Lacak perubahan tahap deal - Gunakan webhook untuk memicu otomatisasi Brevo pada transisi tahap pipeline
- Petakan field kustom - Gunakan field key kustom Pipedrive (bukan nama) agar pemetaan field andal
- Tangani paginasi - Gunakan parameter
startdanlimit; periksamore_items_in_collection - Gunakan endpoint Recents - Polling
/v1/recentsuntuk sinkronisasi inkremental alih-alih ekspor penuh - Deduplikasi sebelum sinkronisasi - Gabungkan person duplikat di Pipedrive sebelum sinkronisasi ke Brevo
- Gunakan akun sandbox - Buat akun developer sandbox untuk menguji integrasi
Keamanan
- Autentikasi API token - Akses berbasis token sederhana untuk penggunaan pribadi
- OAuth 2.0 - Akses terdelegasi yang aman untuk aplikasi pihak ketiga
- Hanya HTTPS - Seluruh komunikasi API mewajibkan enkripsi TLS
- Webhook HTTPS - Webhook hanya dikirim ke endpoint HTTPS
- Akses berbasis peran - Izin Pipedrive menghormati peran pengguna
- Bersertifikat SOC 2 - Pipedrive memelihara kepatuhan SOC 2
- Kepatuhan GDPR - Mendukung permintaan ekspor dan penghapusan data