발송 API를 통한 인터랙티브 트랜잭션 이메일

대부분의 트랜잭션 이메일 발송 서비스는 단순한 HTML만 렌더링합니다. 템플릿 모드의 POST /api/v1/send는 대신 자신의 스튜디오 프로젝트 중 하나를 렌더링합니다 — 전체 폴백 엔진과 인터랙티브 블록을 포함해서요. mergeData가 동적 값의 행을 대신하므로, 백엔드가 발동시키는 영수증이나 확인 이메일도 마케팅 발송과 정확히 똑같이 평점 블록이나 상품 업셀을 담을 수 있습니다.

제목

Your order receipt

대부분의 트랜잭션 이메일 발송 서비스는 단순한 HTML만 렌더링합니다. 템플릿 모드의 POST /api/v1/send는 대신 자신의 스튜디오 프로젝트 중 하나를 렌더링합니다. 전체 폴백 엔진과 인터랙티브 블록을 포함해서요. 백엔드가 발동시키는 영수증이나 확인 메일도 마케팅 발송과 정확히 똑같이 평점 블록이나 상품 업셀을 담을 수 있습니다.

영수증은 회사가 보내는 이메일 중 열람률이 가장 높은 축에 속합니다 — 그리고 거의 항상 가장 밋밋합니다. 디자인 시스템이 붙은 무언가가 아니라, 연결하기 가장 쉬웠던 트랜잭션 라이브러리가 만들어내는 대로이기 때문입니다.

한 번 디자인하고 백엔드에서 발동시키기

영수증이나 확인 메일을 일반 스튜디오 프로젝트로 만드세요 — 구매 후 CSAT를 위한 평점, 관련 상품의 상품 업셀 등 의미 있는 블록을 자유롭게 조합하면 됩니다. 이후 백엔드는 프로젝트 ID와 해당 주문의 동적 값을 대신하는 mergeData 객체를 담아 템플릿 모드로 발송 API를 호출합니다.

트랜잭션으로 올바르게 표시하기

type을 "transactional"로 설정하면 수신 거부 억제를 우회합니다 — 마케팅을 수신 거부한 사람에게도 영수증은 여전히 도착해야 합니다 — 하지만 반송 억제는 절대 우회하지 않습니다. 이메일 유형과 무관하게 정말로 잘못된 주소에는 계속 발송되어서는 안 되기 때문입니다.

다른 API 연동과 동일하게 인증됩니다

계정별로 이름이 붙은 API 키가 베어러 인증으로 대시보드의 개발자 섹션에서 발급되고 폐기됩니다. Idempotency-Key 헤더는 재시도된 요청이 영수증을 두 번 보내는 것을 막습니다.

이어지지 않는 것

자유 형식 모드(projectId 없이 원시 html/text만)는 렌더링 파이프라인을 완전히 건너뜁니다 — 병합 태그도, 폴백 엔진도 없이 주어진 그대로 발송됩니다. 일회성 OTP 코드 같은 경우에는 그것이 올바른 선택이며, 이메일 자체가 인터랙티브 블록의 혜택을 받을 만할 때 템플릿 모드를 쓸 가치가 있습니다.

시작하기

원하는 인터랙티브 블록으로 트랜잭션 템플릿을 스튜디오 프로젝트로 만들고, 개발자 메뉴에서 API 키를 발급한 다음, mergeData와 type: "transactional"을 담아 템플릿 모드로 POST /api/v1/send를 호출하세요.

일반적인 제작 및 발송 순서

  1. 1

    트랜잭션 템플릿을 스튜디오 프로젝트로 만들기

    영수증이나 확인 메일을 스튜디오에서 한 번 디자인하세요 — 평점, 관련 상품, 상태 버튼 등 의미 있는 인터랙티브 블록을 자유롭게 조합하면 됩니다.

  2. 2

    API 키 발급하기

    대시보드의 개발자 메뉴에서 이름을 붙인 API 키를 만드세요 — 이 키가 베어러 토큰으로 모든 발송 API 호출을 인증합니다.

  3. 3

    템플릿 모드로 발송 API 호출하기

    백엔드가 프로젝트 ID와 해당 주문·이벤트의 동적 값을 대신하는 mergeData 객체를 담아 /api/v1/send에 POST합니다.

  4. 4

    트랜잭션으로 표시하기

    type을 "transactional"로 설정하면 발송이 수신 거부 억제를 우회합니다(반송 억제는 여전히 적용됩니다) — 마케팅 수신 설정과 무관하게 수신자가 받아야 하는 영수증에 맞는 올바른 의미입니다.

자주 묻는 질문

API로 발송된 트랜잭션 이메일에도 일반 캠페인과 동일한 인터랙티브 블록을 포함할 수 있나요?

네 — 템플릿 모드는 기존 스튜디오 프로젝트를 다른 어떤 발송의 renderEmail()과도 정확히 똑같이 렌더링하므로, 모든 블록과 3단계 폴백 엔진 전체가 그대로 이어집니다.

API 호출에는 데이터 소스 행이 없는데, 수신자별 데이터는 템플릿에 어떻게 들어가나요?

요청 본문의 mergeData 객체가 데이터 소스 행을 대신합니다 — 최대 100개의 평면 키/값 필드가 그 한 번의 호출에 대해 프로젝트의 {{field}} 병합 태그로 해석됩니다.

같은 엔드포인트에서 "transactional" 타입과 "marketing" 타입의 차이는 무엇인가요?

type 필드는 어떤 억제 목록이 확인되는지를 제어합니다: transactional은 수신 거부 억제를 우회하지만(마케팅을 수신 거부한 사람에게도 영수증은 도착해야 합니다) 반송 억제는 절대 우회하지 않습니다. marketing은 둘 다 존중합니다.

발송 API에 속도 제한이 있나요?

네 — API 키당 분당 60개 요청에 더해, 모든 발송 경로가 공유하는 계정별 월간 발송량 한도가 적용됩니다. Idempotency-Key 헤더는 재시도된 요청이 두 번 발송되는 것을 막습니다.

스튜디오 프로젝트 대신 같은 엔드포인트로 자유 형식 HTML 이메일을 보낼 수 있나요?

네 — projectId를 생략하고 대신 html/text를 직접 보내면 자유 형식 모드가 사용되어, 렌더링 파이프라인이나 병합 태그 없이 있는 그대로 발송됩니다. 인터랙티브 블록과 폴백 엔진을 담는 것은 (projectId가 있는) 템플릿 모드입니다.

스튜디오에서 만들어보세요

무료 플랜으로 시작하세요 — 모든 인터랙티브 블록과 전체 폴백 엔진이 모든 플랜에 포함됩니다.