SendGrid 커넥터

SendGrid 계정을 Tajo를 통해 Brevo에 연결하여 이메일 인프라 마이그레이션, 연락처 동기화, 캠페인 데이터 전송, 두 플랫폼 간의 통합된 참여 분석을 구현하십시오.

개요

속성
플랫폼SendGrid (Twilio)
카테고리Marketing
설정 복잡도쉬움
공식 통합
동기화 데이터연락처, 캠페인, 트랜잭션 이메일, 이벤트
API Base URLhttps://api.sendgrid.com/v3

기능

  • 연락처 마이그레이션 - 맞춤 필드와 함께 SendGrid Marketing 연락처를 Brevo로 마이그레이션
  • 트랜잭션 이메일 동기화 - 통합 보고를 위한 트랜잭션 이메일 이벤트 추적
  • 캠페인 데이터 - Single Send 및 Automation 캠페인 성능 데이터 동기화
  • 이벤트 웹훅 - 이메일 이벤트(배달, 오픈, 클릭, 반송)를 Brevo로 전달
  • 억제 동기화 - 규정 준수를 위해 반송, 차단, 구독 취소 목록 마이그레이션
  • 템플릿 마이그레이션 - Brevo에서 사용할 Dynamic Transactional Templates 내보내기
  • 발신자 검증 - 검증된 발신자 아이덴티티 및 도메인 인증 동기화
  • 통계 동기화 - Brevo 속성에 과거 참여 통계 가져오기

사전 요구 사항

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

  1. SendGrid 계정 (Free, Essentials, Pro 또는 Premier)
  2. 필수 권한이 있는 SendGrid API 키
  3. API 접근이 가능한 Brevo 계정
  4. Tajo 계정

인증

API 키 인증

SendGrid는 Bearer 토큰 인증을 사용합니다.

Terminal window
curl https://api.sendgrid.com/v3/marketing/contacts \
-H "Authorization: Bearer SG.YOUR_API_KEY" \
-H "Content-Type: application/json"

특정 권한 수준으로 SendGrid Settings > API Keys에서 API 키를 생성하십시오:

  • Full Access - 완전한 API 접근
  • Restricted Access - 세분화된 권한 제어
  • Billing Access - 청구 전용 작업

필수 권한

Marketing: Full Access
- Contacts (read)
- Single Sends (read)
- Automations (read)
Mail Send: Full Access
- Mail Send (read)
Stats: Read Access
Suppressions: Read Access
Tracking: Read Access

API 키 보안

SendGrid API 키는 생성 시 한 번만 표시됩니다. 안전하게 저장하십시오. 분실한 경우 새 키를 생성해야 합니다.

구성

기본 설정

connectors:
sendgrid:
enabled: true
api_key: "${SENDGRID_API_KEY}"
# 데이터 동기화 옵션
sync:
contacts: true
campaigns: true
transactional: true
suppressions: true
statistics: true
# Brevo로의 목록 매핑
list_mapping:
"All Contacts": 60
"Newsletter": 61
"Transactional": 62

필드 매핑

SendGrid 연락처 필드를 Brevo 연락처 속성에 매핑합니다.

기본 매핑

Parameter Type Description
email required
string

연락처 이메일 주소 (고유 식별자)

first_name optional
string

FIRSTNAME 속성에 매핑

last_name optional
string

LASTNAME 속성에 매핑

phone_number optional
string

SMS 속성에 매핑

city optional
string

연락처 도시

country optional
string

연락처 국가

custom_fields optional
object

맞춤 필드 키-값 쌍

list_ids optional
array

SendGrid 목록 멤버십

맞춤 필드 매핑

field_mapping:
# 표준 필드
email: email
first_name: FIRSTNAME
last_name: LASTNAME
phone_number: SMS
# 위치 필드
city: CITY
state_province_region: STATE
country: COUNTRY
postal_code: POSTAL_CODE
# 참여 지표
avg_open_rate: AVG_OPEN_RATE
avg_click_rate: AVG_CLICK_RATE
# 맞춤 필드
custom_fields.company: COMPANY_NAME
custom_fields.plan: PLAN_TYPE

API 엔드포인트

마케팅 연락처

메서드엔드포인트설명
PUT/v3/marketing/contacts연락처 추가 또는 업데이트
POST/v3/marketing/contacts/search연락처 검색
GET/v3/marketing/contacts/count연락처 수 가져오기
POST/v3/marketing/contacts/exports연락처 내보내기
DELETE/v3/marketing/contacts연락처 삭제
GET/v3/marketing/lists모든 연락처 목록

트랜잭션 이메일 (Mail Send)

메서드엔드포인트설명
POST/v3/mail/send이메일 전송
GET/v3/templatesDynamic Templates 목록
GET/v3/templates/{id}템플릿 세부 정보 가져오기

캠페인 (Single Sends)

메서드엔드포인트설명
GET/v3/marketing/singlesendsSingle Sends 목록
GET/v3/marketing/singlesends/{id}Single Send 세부 정보 가져오기
GET/v3/marketing/automationsAutomation 목록

통계

메서드엔드포인트설명
GET/v3/stats전역 이메일 통계 가져오기
GET/v3/categories/stats카테고리 통계 가져오기
GET/v3/marketing/stats/singlesendsSingle Send 통계 가져오기

억제

메서드엔드포인트설명
GET/v3/suppression/bounces반송된 이메일 목록
GET/v3/suppression/blocks차단된 이메일 목록
GET/v3/suppression/spam_reports스팸 보고 목록
GET/v3/suppression/unsubscribes전역 구독 취소 목록

이벤트

이메일 이벤트 (Event Webhook을 통해)

이벤트트리거사용 사례
processedSendGrid가 이메일 수락전송 확인
delivered이메일이 수신자에게 배달됨배달 추적
open이메일 오픈됨참여 점수 산출
click링크 클릭됨관심사 추적
bounce이메일 반송됨목록 정리
dropped이메일 억제됨규정 준수 검토
deferred배달 지연됨재시도 모니터링
spam_report스팸으로 표시됨평판 관리
unsubscribe링크를 통해 구독 취소됨선호도 동기화

코드 예제

커넥터 초기화

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
// SendGrid 연결
await tajo.connectors.connect('sendgrid', {
apiKey: process.env.SENDGRID_API_KEY
});

연락처를 Brevo로 마이그레이션

// SendGrid에서 Brevo로의 전체 연락처 마이그레이션
await tajo.connectors.sync('sendgrid', {
type: 'full',
resources: ['contacts', 'suppressions'],
options: {
includeCustomFields: true,
migrateListMemberships: true,
migrateSuppressions: true
}
});
// 마이그레이션 상태 확인
const status = await tajo.connectors.status('sendgrid');
console.log(status);
// {
// connected: true,
// lastSync: '2024-01-15T10:30:00Z',
// contactsMigrated: 45000,
// suppressionsSynced: 3200,
// listsMapped: 8
// }

이메일 이벤트 전달

// SendGrid Event Webhook 처리
app.post('/webhooks/sendgrid', async (req, res) => {
const signature = req.get('X-Twilio-Email-Event-Webhook-Signature');
// 웹훅 서명 확인 (ECDSA)
if (!verifySendGridSignature(req.body, signature)) {
return res.status(401).send('Unauthorized');
}
// 이벤트 배치 처리
for (const event of req.body) {
await tajo.connectors.handleWebhook('sendgrid', {
type: event.event,
email: event.email,
timestamp: event.timestamp,
payload: event
});
}
res.status(200).send('OK');
});

속도 제한

SendGrid API 속도 제한:

엔드포인트제한세부 사항
Mail Send (/v3/mail/send)요금제에 따라 다름Free: 100/일, Essentials: 요금제 기반
Marketing Contacts PUT3 요청/초최대 30,000 연락처 배치
Marketing Contacts Search50 요청/초API 키당
일반 API1,000 요청/초API 키당
Event Webhook배치 배달POST당 최대 1,000 이벤트

Mail Send 제한

Mail Send 제한은 SendGrid 요금제에 따라 다릅니다. 무료 계정은 100 이메일/일로 제한됩니다. 정확한 발송 제한은 요금제 세부 정보를 확인하십시오.

문제 해결

일반적인 문제

문제원인해결 방법
401 Unauthorized잘못된 API 키SendGrid Settings에서 API 키 확인
403 ForbiddenAPI 키 권한 부족필수 범위로 새 키 생성
연락처 내보내기 대기 중대용량 데이터 세트 처리완료될 때까지 내보내기 상태 엔드포인트 폴링
억제 동기화 불완전페이지네이션 필요offset 매개변수로 페이지네이션 구현
이벤트 웹훅이 수신되지 않음URL이 검증되지 않음SendGrid에서 웹훅 URL 검증 완료

디버그 모드

자세한 로깅 활성화:

connectors:
sendgrid:
debug: true
log_level: verbose
log_webhooks: true

연결 테스트

Terminal window
tajo connectors test sendgrid
# ✓ API 연결 성공
# ✓ 연락처 읽기 가능
# ✓ 목록 접근 가능
# ✓ 통계 읽기 가능
# ✓ 억제 접근 가능

모범 사례

  1. 억제를 먼저 마이그레이션 - 발송 전에 Brevo에 반송, 차단, 구독 취소가 있는지 확인
  2. 배치 연락처 업로드 사용 - 효율성을 위해 요청당 최대 30,000 연락처 PUT
  3. Event Webhook 확인 - ECDSA 검증으로 서명된 웹훅 활성화
  4. 맞춤 필드 매핑 - 연락처 마이그레이션 전에 해당하는 Brevo 속성 생성
  5. 참여 데이터 동기화 - Brevo에서 세그먼테이션을 위한 과거 통계 가져오기
  6. 비동기 내보내기 처리 - 연락처 내보내기는 비동기; 완료를 위해 폴링

보안

  • API 키 인증 - 세분화된 권한 수준의 Bearer 토큰
  • Event Webhook 서명 - 웹훅 페이로드에 대한 ECDSA 서명 확인
  • TLS 암호화 - HTTPS를 통해 암호화된 모든 API 통신
  • IP 접근 관리 - IP별 대시보드 및 API 접근 제한
  • 이중 인증 - 계정 접근을 위한 2FA 사용 가능

관련 리소스

Subscribe to updates

developer-docs

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

auto-detect
AI 어시스턴트

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