Pipedrive 커넥터
커넥터 상태: 예정 아직 구축되지 않았습니다. Tajo는 현재 이 커넥터를 실행하지 않습니다.
예시 그림 · 샘플 데이터
동기화 예시
원본
Pipedrive
커넥터 상태: 예정
대상
다른 도구
커넥터 상태: 사용자 지정 도구
필드 매핑
| 원본 필드 | 대상 필드 | 예시 값 |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- 초안
- 레코드 한 건 검토
- 이 버전 승인
상태는 개별 커넥터에 대한 것으로, 이 동기화가 준비됐다는 보장은 아닙니다. 표시된 필드는 예시입니다. 동기화 실행 전에 실제 스키마와 권한을 확인하세요.
Pipedrive를 Tajo를 통해 Brevo에 연결하여 영업 파이프라인과 마케팅 자동화를 이어주세요. 연락처, 거래, 조직, 활동을 동기화하여 CRM 단계 변경에 의해 트리거되는 라이프사이클 캠페인을 구동할 수 있습니다.
개요
| 속성 | 값 |
|---|---|
| 플랫폼 | Pipedrive |
| 카테고리 | CRM |
| 설정 난이도 | 쉬움 |
| 공식 통합 | 아니오 |
| 동기화되는 데이터 | 연락처(Persons), 거래, 조직, 활동 |
| 사용 가능한 스킬 | 8 |
주요 기능
- 연락처 동기화 - Pipedrive persons와 Brevo 연락처의 양방향 동기화
- 거래 단계 추적 - 거래 파이프라인 단계 변경을 기반으로 Brevo 자동화를 트리거합니다
- 조직 동기화 - Pipedrive 조직을 Brevo 회사 속성에 매핑합니다
- 활동 추적 - Pipedrive 활동(통화, 이메일, 미팅)을 Brevo 이벤트로 전달합니다
- 커스텀 필드 - Pipedrive 커스텀 필드를 Brevo 연락처 속성에 매핑합니다
- 파이프라인 리포팅 - 마케팅 기여도를 위해 거래 파이프라인 데이터를 가져옵니다
- 리드 동기화 - Pipedrive 리드를 Brevo로 가져와 육성 캠페인에 활용합니다
- 웹훅 자동화 - Pipedrive 웹훅을 통한 실시간 업데이트
사전 준비 사항
시작하기 전에 다음 사항이 준비되어 있어야 합니다.
- 관리자 액세스 권한이 있는 Pipedrive 계정
- Pipedrive API Token (Settings > Personal preferences > API에서 확인)
- OAuth 앱의 경우: Client ID와 Client Secret이 등록된 Pipedrive 앱
- API 액세스가 가능한 Brevo 계정
- API 자격 증명이 있는 Tajo 계정
인증
API 토큰
가장 간단한 인증 방법입니다. Pipedrive Settings > Personal preferences > API에서 API 토큰을 찾을 수 있습니다.
curl "https://api.pipedrive.com/v1/persons?api_token=YOUR_API_TOKEN"OAuth 2.0 (앱용 권장)
프로덕션 애플리케이션의 경우 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"액세스 토큰을 얻은 후:
curl "https://api.pipedrive.com/v1/persons" \ -H "Authorization: Bearer ACCESS_TOKEN"설정
기본 설정
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: 63Person 필드 매핑
Pipedrive person 필드를 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_SIZE거래 단계 매핑
Pipedrive 파이프라인 단계를 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 list웹훅 설정
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 엔드포인트
| Method | 엔드포인트 | 설명 |
|---|---|---|
GET | /v1/persons | persons 목록 조회 |
POST | /v1/persons | person 생성 |
PUT | /v1/persons/{id} | person 업데이트 |
DELETE | /v1/persons/{id} | person 삭제 |
GET | /v1/deals | 거래 목록 조회 |
POST | /v1/deals | 거래 생성 |
PUT | /v1/deals/{id} | 거래 업데이트 |
GET | /v1/organizations | 조직 목록 조회 |
POST | /v1/organizations | 조직 생성 |
GET | /v1/activities | 활동 목록 조회 |
POST | /v1/activities | 활동 생성 |
GET | /v1/leads | 리드 목록 조회 |
GET | /v1/pipelines | 파이프라인 목록 조회 |
GET | /v1/stages | 파이프라인 단계 목록 조회 |
GET | /v1/itemSearch | 모든 항목에서 검색 |
POST | /v1/webhooks | 웹훅 생성 |
GET | /v1/recents | 최근 수정된 항목 조회 |
코드 예제
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'});Persons를 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 }거래 단계 변경 추적
// 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 전체 검색
// 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 organizations요청 제한
| 플랜 | 제한 | 세부 사항 |
|---|---|---|
| Essential | 80회/10초 | API 토큰당 |
| Advanced | 100회/10초 | API 토큰당 |
| Professional | 200회/10초 | API 토큰당 |
| Power | 200회/10초 | API 토큰당 |
| Enterprise | 400회/10초 | API 토큰당 |
| OAuth apps | 80회/2초 | 액세스 토큰당 |
추가 제한 사항:
| 리소스 | 제한 |
|---|---|
| 페이지당 | 최대 500개 레코드 |
| 웹훅 | 계정당 40개 |
| 대량 삭제 | 요청당 100개 항목 |
| 검색 | 표준 요청 제한 |
요청 제한 헤더
Pipedrive는 X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset 헤더를 반환합니다. X-RateLimit-Remaining이 0에 가까워지면 백오프를 구현하세요.
문제 해결
| 문제 | 원인 | 해결 방법 |
|---|---|---|
401 Unauthorized | 유효하지 않은 API 토큰 | Pipedrive Settings > API에서 토큰을 재생성하세요 |
403 Forbidden | 계정 권한 | API 사용을 위해 계정에 관리자 권한이 있는지 확인하세요 |
| persons에 이메일 없음 | 레코드에 이메일 없음 | 동기화 전에 유효한 이메일이 있는 persons만 필터링하세요 |
| 커스텀 필드가 매핑되지 않음 | 잘못된 필드 키 | 표시 이름이 아닌 Pipedrive의 필드 키(해시)를 사용하세요 |
| 웹훅 수신 안 됨 | 방화벽 차단 | 웹훅 URL이 HTTPS를 통해 공개적으로 액세스 가능한지 확인하세요 |
| 중복 persons | 여러 이메일 레코드 | 동기화 전에 Pipedrive의 병합 API를 사용하세요 |
429 Too Many Requests | 요청 제한 초과 | X-RateLimit-Reset 헤더를 사용해 백오프를 구현하세요 |
모범 사례
- 프로덕션에는 OAuth 사용 - 프로덕션 애플리케이션에는 API 토큰보다 OAuth 2.0을 선호하세요
- 거래 단계 변경 추적 - 파이프라인 단계 전환 시 웹훅을 사용해 Brevo 자동화를 트리거하세요
- 커스텀 필드 매핑 - 안정적인 필드 매핑을 위해 이름이 아닌 Pipedrive 커스텀 필드 키를 사용하세요
- 페이지네이션 처리 -
start및limit파라미터를 사용하고more_items_in_collection을 확인하세요 - Recents 엔드포인트 사용 - 전체 내보내기 대신
/v1/recents를 폴링하여 증분 동기화하세요 - 동기화 전 중복 제거 - Brevo로 동기화하기 전에 Pipedrive에서 중복된 persons를 병합하세요
- 샌드박스 계정 사용 - 통합 테스트를 위해 개발자 샌드박스 계정을 생성하세요
보안
- API 토큰 인증 - 개인 용도의 간단한 토큰 기반 액세스
- OAuth 2.0 - 서드파티 애플리케이션을 위한 안전한 위임 액세스
- HTTPS 전용 - 모든 API 통신에는 TLS 암호화가 필요합니다
- 웹훅 HTTPS - 웹훅은 HTTPS 엔드포인트에만 전달됩니다
- 역할 기반 액세스 - Pipedrive 권한은 사용자 역할을 따릅니다
- SOC 2 인증 - Pipedrive는 SOC 2 규정 준수를 유지합니다
- GDPR 규정 준수 - 데이터 내보내기 및 삭제 요청을 지원합니다