Zapier 커넥터
Tajo를 통해 Zapier를 Brevo에 연결하여 수천 개의 타사 애플리케이션을 마케팅 자동화 워크플로와 연결하고, 전체 기술 스택에서 코드 없는 데이터 플로 및 이벤트 기반 트리거를 가능하게 하십시오.
개요
| 속성 | 값 |
|---|---|
| 플랫폼 | Zapier |
| 카테고리 | 자동화 (Custom) |
| 설정 복잡도 | 쉬움 |
| 공식 통합 | 아니오 |
| 동기화 데이터 | 이벤트, 연락처, 워크플로, 트리거 |
| 인증 방법 | API Key / OAuth 2.0 |
기능
- 다중 앱 오케스트레이션 - Zap 워크플로를 통해 6,000개 이상의 앱을 Brevo에 연결
- 웹훅 트리거 - Zapier에 연결된 모든 앱에서 실시간 이벤트 수신
- 연락처 동기화 - Zapier에 연결된 플랫폼과 Brevo 간에 연락처 푸시 및 풀
- 이벤트 전달 - Tajo를 통해 애플리케이션 이벤트를 Brevo 자동화로 라우팅
- 멀티스텝 Zap - 필터, 포매터, 지연으로 복잡한 워크플로 구축
- 맞춤 Zapier 앱 - Zapier Platform CLI를 사용하여 맞춤 통합 구축
사전 요구 사항
시작하기 전에 다음이 준비되어 있는지 확인하십시오.
- Zapier 계정 (Free 티어 이상)
- API 접근이 가능한 Brevo 계정
- 커넥터 권한이 있는 Tajo 계정
- Node.js 18+ 설치 (CLI 기반 통합 개발용)
인증
API 키 인증
# Zapier 플랫폼 자격 증명 설정export ZAPIER_DEPLOY_KEY=your_deploy_keyexport TAJO_API_KEY=your_tajo_api_keyexport BREVO_API_KEY=your_brevo_api_keyOAuth 2.0
Zapier는 Zap 내에서 타사 서비스를 연결하기 위한 OAuth 2.0을 지원합니다.
const authentication = { type: 'oauth2', oauth2Config: { authorizeUrl: { url: 'https://your-app.com/oauth/authorize', params: { client_id: '{{process.env.CLIENT_ID}}', state: '{{bundle.inputData.state}}', redirect_uri: '{{bundle.inputData.redirect_uri}}', response_type: 'code' } }, getAccessToken: { url: 'https://your-app.com/oauth/token', method: 'POST', body: { code: '{{bundle.inputData.code}}', client_id: '{{process.env.CLIENT_ID}}', client_secret: '{{process.env.CLIENT_SECRET}}', grant_type: 'authorization_code', redirect_uri: '{{bundle.inputData.redirect_uri}}' } }, refreshAccessToken: { url: 'https://your-app.com/oauth/token', method: 'POST', body: { refresh_token: '{{bundle.authData.refresh_token}}', client_id: '{{process.env.CLIENT_ID}}', client_secret: '{{process.env.CLIENT_SECRET}}', grant_type: 'refresh_token' } } }};구성
기본 설정
connectors: zapier: enabled: true webhook_url: "https://hooks.zapier.com/hooks/catch/YOUR_HOOK_ID"
sync: contacts: true events: true workflows: true
triggers: - contact_created - order_placed - form_submitted
mapping: email: email first_name: FIRSTNAME last_name: LASTNAME웹훅 구성
Tajo가 Zapier 웹훅으로 이벤트를 보내도록 구성합니다.
webhooks: zapier: url: "https://hooks.zapier.com/hooks/catch/YOUR_HOOK_ID" events: - contact.created - contact.updated - order.completed - cart.abandoned retry: max_attempts: 3 backoff: exponentialAPI 엔드포인트
| 엔드포인트 | 메서드 | 설명 |
|---|---|---|
https://hooks.zapier.com/hooks/catch/{id} | POST | 웹훅 캐치 후크 |
https://nla.zapier.com/api/v1/dynamic/exposed/ | GET | 노출된 액션 목록 |
https://nla.zapier.com/api/v1/dynamic/exposed/{action_id}/execute/ | POST | 액션 실행 |
https://zapier.com/api/platform/cli/apps | GET | 등록된 앱 목록 |
https://zapier.com/api/platform/cli/push | POST | 통합 배포 |
코드 예제
커넥터 초기화
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// 웹훅을 통해 Zapier 연결await tajo.connectors.connect('zapier', { webhookUrl: process.env.ZAPIER_WEBHOOK_URL, events: ['contact.created', 'order.completed']});Platform CLI로 맞춤 Zapier 통합 구축
const { version: platformVersion } = require('zapier-platform-core');
const App = { version: require('./package.json').version, platformVersion, authentication, triggers: { new_contact: { key: 'new_contact', noun: 'Contact', display: { label: 'New Contact in Tajo', description: 'Triggers when a new contact is synced.' }, operation: { perform: async (z, bundle) => { const response = await z.request({ url: 'https://api.tajo.io/v1/contacts', params: { since: bundle.meta.lastPoll } }); return response.data; } } } }, creates: { sync_contact: { key: 'sync_contact', noun: 'Contact', display: { label: 'Sync Contact to Brevo', description: 'Syncs a contact to Brevo via Tajo.' }, operation: { inputFields: [ { key: 'email', required: true, type: 'string' }, { key: 'firstName', type: 'string' }, { key: 'lastName', type: 'string' } ], perform: async (z, bundle) => { const response = await z.request({ method: 'POST', url: 'https://api.tajo.io/v1/contacts/sync', body: bundle.inputData }); return response.data; } } } }};
module.exports = App;들어오는 Zapier 웹훅 처리
app.post('/webhooks/zapier', async (req, res) => { const { event, data } = req.body;
await tajo.connectors.handleWebhook('zapier', { topic: event, payload: data });
res.status(200).json({ status: 'received' });});속도 제한
| 요금제 | 요청 | 월간 태스크 | 폴링 간격 |
|---|---|---|---|
| Free | 100/일 | 100 | 15분 |
| Starter | 1,000/일 | 750 | 15분 |
| Professional | 5,000/일 | 2,000 | 2분 |
| Team | 10,000/일 | 50,000 | 1분 |
Zapier 태스크 한도
각 Zap 단계는 하나의 태스크로 계산됩니다. 멀티스텝 Zap은 실행당 여러 태스크를 소비합니다. 초과 사용을 피하려면 Zapier 대시보드에서 태스크 사용량을 모니터링하십시오.
문제 해결
| 문제 | 원인 | 해결 방법 |
|---|---|---|
| 웹훅이 실행되지 않음 | Zap이 꺼짐 | Zapier 대시보드에서 Zap 상태 확인 |
| 데이터가 매핑되지 않음 | 필드 이름 불일치 | 앱 간 필드 키가 일치하는지 확인 |
| 중복 연락처 | 중복 제거가 구성되지 않음 | Tajo에서 이메일 기반 중복 제거 활성화 |
| Zap 오류 | API 속도 제한 도달 | 지연 단계 추가 또는 Zapier 요금제 업그레이드 |
| 인증 만료 | 토큰이 새로 고침되지 않음 | Zapier에서 연결 재인증 |
디버그 모드
connectors: zapier: debug: true log_level: verbose log_webhooks: true모범 사례
- 폴링보다 웹훅 사용 - 웹훅은 폴링 지연에 비해 실시간 데이터 플로 제공
- 오류 처리 추가 - 성공/실패 시나리오를 처리하려면 Zapier Paths 사용
- 데이터 중복 제거 - 중복 레코드를 방지하려면 중복 제거 키 활성화
- 태스크 사용량 모니터링 - 태스크 한도에 도달하기 전에 알림 설정
- 필터를 현명하게 사용 - 불필요한 태스크 소비를 줄이기 위해 Zap에서 일찍 필터링
- CLI 통합 버전 관리 - Platform CLI 앱에 시맨틱 버전 관리 사용
보안
- HTTPS 전용 - 모든 웹훅 URL은 HTTPS 사용 필요
- API 키 교체 - Zapier 대시보드를 통해 주기적으로 키 교체
- OAuth 2.0 - 타사 서비스 인증에 OAuth 사용
- 웹훅 검증 - 들어오는 웹훅 서명 검증
- 범위 지정 권한 - Zap별 최소 필요 접근 권한 부여