Intercom 커넥터
Intercom 워크스페이스를 Tajo를 통해 Brevo에 연결하여 통합된 고객 메시징, 대화 추적, 지원 및 제품 데이터로 구동되는 참여 기반 마케팅 자동화를 구현하십시오.
개요
| 속성 | 값 |
|---|---|
| 플랫폼 | Intercom |
| 카테고리 | Support |
| 설정 복잡도 | 중간 |
| 공식 통합 | 예 |
| 동기화 데이터 | 연락처, 대화, 회사, 이벤트 |
| API Base URL | https://api.intercom.io |
기능
- 연락처 동기화 - Intercom 사용자 및 리드를 Brevo 연락처와 양방향 동기화
- 대화 추적 - 지원 기반 세그먼테이션을 위한 대화 데이터 동기화
- 회사 매핑 - 계정 기반 워크플로를 위해 연락처를 회사와 연결
- 맞춤 속성 - Intercom 맞춤 속성을 Brevo 연락처 필드에 매핑
- 이벤트 추적 - 행동 타겟팅을 위한 맞춤 이벤트 및 사용자 활동 동기화
- 태그 동기화 - Intercom 태그를 Brevo 목록 멤버십 또는 속성에 매핑
- Messenger 데이터 - 앱 내 메시징 참여 및 채팅 상호작용 추적
- AI 에이전트 통합 - AI 에이전트 대화 결과를 Brevo와 동기화
사전 요구 사항
시작하기 전에 다음이 준비되어 있는지 확인하십시오.
- Intercom 워크스페이스 (Starter, Pro 또는 Premium 요금제)
- 액세스 토큰이 있는 Intercom 앱(비공개 앱) 또는 OAuth가 구성된(공개 앱)
- API 접근이 가능한 Brevo 계정
- Tajo 계정
인증
액세스 토큰 (비공개 앱)
자신의 워크스페이스 데이터에 접근하는 비공개 통합의 경우.
- Developer Hub > Your Apps > Create new app으로 이동
- Intercom 워크스페이스와 연결
- 액세스 토큰 복사
curl https://api.intercom.io/contacts \ -H "Authorization: Bearer {access_token}" \ -H "Content-Type: application/json" \ -H "Intercom-Version: 2.11"OAuth 2.0 (공개 앱)
다른 고객의 Intercom 데이터에 접근하는 통합의 경우.
# 인증 URLhttps://app.intercom.com/oauth?client_id={client_id}&state={state}
# 토큰 교환curl -X POST https://api.intercom.io/auth/eagle/token \ -d "client_id={client_id}" \ -d "client_secret={client_secret}" \ -d "code={auth_code}"API 버전 관리
요청에 항상 Intercom-Version 헤더를 포함하십시오. Tajo는 기본적으로 API 버전 2.11을 사용합니다. 호환성 손상 변경 사항은 Intercom 변경 로그를 확인하십시오.
구성
기본 설정
connectors: intercom: enabled: true access_token: "${INTERCOM_ACCESS_TOKEN}" api_version: "2.11"
# 데이터 동기화 옵션 sync: contacts: true conversations: true companies: true events: true tags: true
# 동기화 방향 direction: intercom_to_brevo
# Brevo 목록 할당 lists: all_users: 35 active_conversations: 36 leads: 37필드 매핑
Intercom 연락처 데이터를 Brevo 연락처 속성에 매핑합니다.
기본 매핑
| Parameter | Type | Description |
|---|---|---|
email required | string | 연락처 이메일 주소 (고유 식별자) |
name optional | string | 전체 이름, FIRSTNAME/LASTNAME으로 분할됨 |
phone optional | string | WhatsApp/SMS용 SMS 속성에 매핑 |
role optional | string | 연락처 유형: user 또는 lead |
company.name optional | string | 연결된 회사 이름 |
signed_up_at optional | timestamp | 사용자 가입 날짜 |
last_seen_at optional | timestamp | 마지막 활성 타임스탬프 |
custom_attributes optional | object | 맞춤 속성 키-값 쌍 |
맞춤 속성 매핑
field_mapping: # 표준 필드 email: email name: FULLNAME phone: SMS
# 참여 필드 signed_up_at: SIGNUP_DATE last_seen_at: LAST_ACTIVE session_count: SESSION_COUNT unsubscribed_from_emails: UNSUBSCRIBED
# 회사 필드 company.name: COMPANY_NAME company.plan: COMPANY_PLAN company.size: COMPANY_SIZE
# 맞춤 속성 custom_attributes.plan_tier: PLAN_TIER custom_attributes.feature_usage: FEATURE_USAGEAPI 엔드포인트
Contacts API
| 메서드 | 엔드포인트 | 설명 |
|---|---|---|
GET | /contacts | 모든 연락처 목록 |
POST | /contacts | 연락처 생성 |
PUT | /contacts/{id} | 연락처 업데이트 |
GET | /contacts/{id} | 연락처 가져오기 |
POST | /contacts/search | 연락처 검색 |
DELETE | /contacts/{id} | 연락처 아카이브 |
Conversations API
| 메서드 | 엔드포인트 | 설명 |
|---|---|---|
GET | /conversations | 대화 목록 |
GET | /conversations/{id} | 대화 가져오기 |
POST | /conversations | 대화 생성 |
POST | /conversations/{id}/reply | 대화에 응답 |
POST | /conversations/{id}/parts | 대화 부분 추가 |
Companies API
| 메서드 | 엔드포인트 | 설명 |
|---|---|---|
GET | /companies | 회사 목록 |
POST | /companies | 회사 생성 또는 업데이트 |
GET | /companies/{id} | 회사 가져오기 |
GET | /companies/{id}/contacts | 회사 연락처 목록 |
Events API
| 메서드 | 엔드포인트 | 설명 |
|---|---|---|
POST | /events | 이벤트 제출 |
GET | /events?type=user&intercom_user_id={id} | 사용자 이벤트 목록 |
이벤트
대화 이벤트
| 이벤트 | 트리거 | 사용 사례 |
|---|---|---|
conversation.created | 새 대화 시작됨 | 지원 티켓 알림 |
conversation.closed | 대화 해결됨 | CSAT 설문 트리거 |
conversation.rating.added | 평가 제출됨 | 만족도 추적 |
conversation.snoozed | 대화 일시 중지됨 | 후속 조치 일정 |
연락처 이벤트
| 이벤트 | 트리거 | 사용 사례 |
|---|---|---|
contact.created | 새 연락처 추가됨 | 환영 시퀀스 |
contact.updated | 연락처 데이터 변경됨 | 속성 동기화 |
contact.deleted | 연락처 아카이브됨 | 정리 |
contact.tag.created | 연락처에 태그 추가됨 | 세그먼트 업데이트 |
사용자 이벤트
| 이벤트 | 트리거 | 사용 사례 |
|---|---|---|
user.created | 새 사용자 가입 | 온보딩 플로 |
user.email.updated | 이메일 변경됨 | 연락처 병합 |
user.unsubscribed | 이메일 구독 취소됨 | 선호도 업데이트 |
코드 예제
커넥터 초기화
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Intercom 연결await tajo.connectors.connect('intercom', { accessToken: process.env.INTERCOM_ACCESS_TOKEN, apiVersion: '2.11'});연락처 및 대화 동기화
// 연락처 및 대화 데이터 전체 동기화await tajo.connectors.sync('intercom', { type: 'full', resources: ['contacts', 'conversations', 'companies'], since: '2023-01-01'});
// 동기화 상태 확인const status = await tajo.connectors.status('intercom');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// contactsSynced: 14200,// conversationsSynced: 28400,// companiesSynced: 2100// }Intercom 웹훅 처리
import crypto from 'crypto';
app.post('/webhooks/intercom', async (req, res) => { const signature = req.get('X-Hub-Signature'); const expectedSig = 'sha1=' + crypto .createHmac('sha1', process.env.INTERCOM_CLIENT_SECRET) .update(JSON.stringify(req.body)) .digest('hex');
if (signature !== expectedSig) { return res.status(401).send('Unauthorized'); }
await tajo.connectors.handleWebhook('intercom', { topic: req.body.topic, data: req.body.data });
res.status(200).send('OK');});속도 제한
Intercom은 요금제에 따라 속도 제한을 적용합니다.
| 요금제 | 속도 제한 | 세부 사항 |
|---|---|---|
| Starter | 20 요청/10초 | 앱당 |
| Pro | 50 요청/10초 | 앱당 |
| Premium | 100 요청/10초 | 앱당 |
| 검색 엔드포인트 | 1 요청/초 | 앱당 |
| 스크롤 엔드포인트 | 1 요청/분 | 앱당 |
추가 제한:
- Bulk 작업: 대량 요청당 15 연락처
- 이벤트 제출: 워크스페이스당 500 이벤트/초
- 웹훅 배달: 24시간 동안 자동 재시도
- 데이터 내보내기: 1개 동시 내보내기
속도 제한 응답
Intercom은 Retry-After 헤더와 함께 429 Too Many Requests를 반환합니다. 지수 백오프를 구현하고 재시도 기간을 준수하십시오.
문제 해결
일반적인 문제
| 문제 | 원인 | 해결 방법 |
|---|---|---|
| 401 Unauthorized | 잘못되거나 만료된 토큰 | Developer Hub에서 액세스 토큰 재생성 |
| 연락처가 동기화되지 않음 | 이메일 필드 누락 | Intercom 리드는 이메일이 없을 수 있음; 역할별 필터링 |
| 대화 데이터 비어 있음 | 앱에 대화 범위가 없음 | 대화 읽기 권한으로 재인증 |
| 웹훅이 수신되지 않음 | 웹훅이 등록되지 않음 | Developer Hub 설정에서 웹훅 구성 |
| API 버전 불일치 | 새 버전의 호환성 손상 변경 | Intercom-Version 헤더로 API 버전 고정 |
디버그 모드
자세한 로깅 활성화:
connectors: intercom: debug: true log_level: verbose log_webhooks: true연결 테스트
tajo connectors test intercom# ✓ API 연결 성공# ✓ 연락처 읽기 가능# ✓ 대화 읽기 가능# ✓ 회사 읽기 가능# ✓ 웹훅 등록됨모범 사례
- API 버전 고정 - 호환성 손상 변경을 피하려면 항상
Intercom-Version지정 - 검색 API 효율적 사용 - 데이터 전송을 줄이려면 필터 및 페이지네이션 사용
- 사용자 및 리드 모두 동기화 - Brevo에서 전체 퍼널 캡처
- 대화 태그 매핑 - 지원 후 마케팅 세그먼트에 대화 태그 사용
- 맞춤 이벤트 추적 - 행동 타겟팅을 위해 주요 제품 이벤트를 Intercom에 제출
- 연락처 병합 처리 - 중복 연락처에 대한 병합 로직 구현
보안
- 액세스 토큰 - 비공개 앱을 위한 Bearer 토큰 인증
- OAuth 2.0 - 클라이언트 시크릿이 있는 공개 앱을 위한 위임된 인증
- 웹훅 확인 -
X-Hub-Signature를 통한 HMAC SHA-1 서명 검증 - TLS 암호화 - HTTPS를 통해 암호화된 모든 API 통신
- 데이터 접근 제어 - 앱 구성별 세분화된 데이터 접근