Zendesk 커넥터

Zendesk Support 인스턴스를 Tajo를 통해 Brevo에 연결하여 통합된 고객 지원 데이터, 티켓 기반 세그먼테이션, 만족도 점수 산출, 지원 트리거 마케팅 자동화를 구현하십시오.

개요

속성
플랫폼Zendesk
카테고리Support
설정 복잡도중간
공식 통합
동기화 데이터티켓, 사용자, 조직, 이벤트
API Base URLhttps://{subdomain}.zendesk.com/api/v2

기능

  • 사용자 동기화 - Zendesk 최종 사용자 및 상담원을 Brevo 연락처와 동기화
  • 티켓 추적 - 지원 인식 마케팅 세그먼테이션을 위한 티켓 데이터 동기화
  • 조직 매핑 - B2B 워크플로를 위해 연락처를 조직과 연결
  • 만족도 점수 - CSAT 및 NPS 데이터를 Brevo 속성에 동기화
  • 티켓 이벤트 - 자동화 트리거를 위해 티켓 생성, 해결, 에스컬레이션 추적
  • 헬프 센터 통합 - 아티클 조회수 및 검색 행동 추적
  • 다중 채널 지원 - 이메일, 채팅, 음성, 메시징 채널의 데이터 동기화
  • 맞춤 필드 - Zendesk 맞춤 티켓 및 사용자 필드를 Brevo에 매핑

사전 요구 사항

시작하기 전에 다음이 준비되어 있는지 확인하십시오.

  1. Zendesk Support 계정 (Team, Professional 또는 Enterprise)
  2. Zendesk 인스턴스에 대한 관리자 접근 권한
  3. API 토큰 또는 OAuth 앱이 구성됨
  4. API 접근이 가능한 Brevo 계정
  5. Tajo 계정

인증

API 토큰 인증

빠른 설정에 이메일/토큰 인증을 사용하십시오.

Terminal window
curl https://{subdomain}.zendesk.com/api/v2/users.json \
-u {email}/token:{api_token} \
-H "Content-Type: application/json"

Zendesk Admin > Apps and Integrations > APIs > Zendesk API에서 API 토큰을 생성하십시오.

OAuth 2.0

위임된 사용자 접근이 있는 다중 인스턴스 통합에 OAuth를 사용하십시오.

Terminal window
# 인증 URL
https://{subdomain}.zendesk.com/oauth/authorizations/new?
response_type=code&
client_id={client_id}&
redirect_uri={redirect_uri}&
scope=read%20write

필수 범위

read # 모든 리소스에 대한 읽기 접근
write # 모든 리소스에 대한 쓰기 접근
tickets:read # 티켓 읽기 (세분화)
users:read # 사용자 읽기 (세분화)
organizations:read # 조직 읽기 (세분화)

구성

기본 설정

connectors:
zendesk:
enabled: true
subdomain: "yourcompany"
auth:
api_token: "${ZENDESK_API_TOKEN}"
# 데이터 동기화 옵션
sync:
users: true
tickets: true
organizations: true
satisfaction_ratings: true
# Brevo 목록 할당
lists:
all_customers: 30
active_tickets: 31
satisfied_customers: 32

필드 매핑

Zendesk 사용자 필드를 Brevo 연락처 속성에 매핑합니다.

기본 매핑

Parameter Type Description
email required
string

사용자 이메일 주소 (고유 식별자)

name optional
string

전체 이름, FIRSTNAME/LASTNAME으로 분할됨

phone optional
string

WhatsApp/SMS용 SMS 속성에 매핑

organization_id optional
integer

B2B 매핑을 위한 연결된 조직

role optional
string

사용자 역할 (end-user, agent, admin)

tags optional
array

Zendesk의 사용자 태그

ticket_restriction optional
string

티켓 접근 수준

custom_fields optional
object

맞춤 사용자 필드 값

맞춤 필드 매핑

field_mapping:
# 표준 필드
email: email
name: FULLNAME
phone: SMS
# 지원 지표
open_tickets: OPEN_TICKETS
total_tickets: TOTAL_TICKETS
avg_satisfaction: CSAT_SCORE
last_ticket_date: LAST_SUPPORT_DATE
# 조직 필드
organization.name: COMPANY_NAME
organization.tags: COMPANY_TAGS
# 맞춤 필드
user_fields.customer_type: CUSTOMER_TYPE
user_fields.account_tier: ACCOUNT_TIER

API 엔드포인트

Ticketing API

메서드엔드포인트설명
GET/api/v2/tickets티켓 목록
POST/api/v2/tickets티켓 생성
PUT/api/v2/tickets/{id}티켓 업데이트
GET/api/v2/tickets/{id}티켓 표시
GET/api/v2/search.json?query={query}티켓 검색

Users API

메서드엔드포인트설명
GET/api/v2/users사용자 목록
POST/api/v2/users사용자 생성
PUT/api/v2/users/{id}사용자 업데이트
GET/api/v2/users/{id}사용자 표시
GET/api/v2/users/search.json?query={query}사용자 검색

Organizations API

메서드엔드포인트설명
GET/api/v2/organizations조직 목록
POST/api/v2/organizations조직 생성
GET/api/v2/organizations/{id}/users조직 멤버 목록

Satisfaction Ratings API

메서드엔드포인트설명
GET/api/v2/satisfaction_ratings만족도 평가 목록
GET/api/v2/satisfaction_ratings/{id}평가 표시

이벤트

티켓 이벤트

이벤트트리거사용 사례
ticket.created새 티켓 제출됨지원 확인
ticket.updated티켓 상태 변경됨상태 알림
ticket.solved티켓 해결됨으로 표시CSAT 설문 트리거
ticket.reopened해결된 티켓 재오픈됨에스컬레이션 알림

사용자 이벤트

이벤트트리거사용 사례
user.created새 사용자 등록됨지원 환영
user.updated사용자 프로필 변경됨속성 동기화
user.merged사용자 병합됨중복 제거

만족도 이벤트

이벤트트리거사용 사례
satisfaction_rating.createdCSAT 제출됨피드백 처리
satisfaction_rating.bad부정적 평가복구 아웃리치
satisfaction_rating.good긍정적 평가옹호 캠페인

코드 예제

커넥터 초기화

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
// Zendesk 연결
await tajo.connectors.connect('zendesk', {
subdomain: 'yourcompany',
apiToken: process.env.ZENDESK_API_TOKEN
});

사용자 및 티켓 동기화

// 사용자 및 티켓 데이터 전체 동기화
await tajo.connectors.sync('zendesk', {
type: 'full',
resources: ['users', 'tickets', 'organizations'],
since: '2023-01-01'
});
// 동기화 상태 확인
const status = await tajo.connectors.status('zendesk');
console.log(status);
// {
// connected: true,
// lastSync: '2024-01-15T10:30:00Z',
// usersSynced: 8400,
// ticketsSynced: 34200,
// organizationsSynced: 1200
// }

Zendesk 웹훅 처리

app.post('/webhooks/zendesk', async (req, res) => {
const signature = req.get('X-Zendesk-Webhook-Signature');
// 웹훅 서명 확인
if (!verifyZendeskSignature(req.body, signature)) {
return res.status(401).send('Unauthorized');
}
await tajo.connectors.handleWebhook('zendesk', {
type: req.body.type,
ticketId: req.body.ticket_id,
userId: req.body.user_id,
payload: req.body
});
res.status(200).send('OK');
});

속도 제한

Zendesk 속도 제한은 요금제에 따라 다릅니다.

요금제속도 제한세부 사항
Team200 요청/분API 토큰당
Professional400 요청/분API 토큰당
Enterprise700 요청/분API 토큰당
High Volume Add-on2,500 요청/분API 토큰당

추가 제한:

  • Search API: 익명은 6 요청/분, 인증된 사용자는 100 요청/분
  • Incremental 내보내기: 10 요청/분
  • Batch API: 배치 요청당 100 레코드
  • 웹훅 배달: 지수 백오프를 사용한 자동 재시도

속도 제한 헤더

API 사용량을 관리하려면 X-Rate-Limit-RemainingRetry-After 헤더를 모니터링하십시오.

문제 해결

일반적인 문제

문제원인해결 방법
401 Unauthorized잘못된 API 토큰Zendesk Admin에서 토큰 재생성
403 Forbidden권한 부족상담원 또는 관리자 역할 요구 사항 확인
사용자가 동기화되지 않음사용자가 최종 사용자가 아닌 상담원임동기화 구성에서 역할별 필터링
웹훅이 수신되지 않음트리거/대상이 구성되지 않음Zendesk Admin에서 웹훅 대상 설정
검색이 비어 있음인덱싱 지연검색 인덱스 업데이트까지 1-2분 대기

디버그 모드

자세한 로깅 활성화:

connectors:
zendesk:
debug: true
log_level: verbose
log_webhooks: true

연결 테스트

Terminal window
tajo connectors test zendesk
# ✓ API 연결 성공
# ✓ 사용자 읽기 가능
# ✓ 티켓 읽기 가능
# ✓ 조직 읽기 가능
# ✓ 웹훅 구성됨

모범 사례

  1. Incremental 내보내기 사용 - 대규모 데이터 동기화에 Incremental API 사용
  2. 최종 사용자만 필터링 - Brevo 연락처 동기화에서 상담원 및 관리자 제외
  3. CSAT 데이터 동기화 - 고객 상태 세그먼테이션을 위한 만족도 점수 사용
  4. 조직 매핑 - B2B 마케팅 캠페인을 위해 조직 데이터 활용
  5. 웹훅 재시도 구현 - 일시적인 실패를 원활하게 처리
  6. Side-loading 사용 - 요청 수를 줄이기 위해 API 응답에 관련 레코드 포함

보안

  • API 토큰 인증 - 관리자 이메일에 연결된 토큰 기반 접근
  • OAuth 2.0 - 범위 제어가 있는 토큰 기반 위임 접근
  • 웹훅 서명 - 웹훅 페이로드에 대한 HMAC 서명 확인
  • TLS 암호화 - HTTPS를 통해 암호화된 모든 API 통신
  • IP 허용 목록 - IP 범위별 API 접근 제한

관련 리소스

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI 어시스턴트

안녕하세요! 문서에 대해 무엇이든 물어보세요.