기술 · 출처 기반 답변

이메일 웹훅(Webhook)이란? 정의와 기술적 구현

이메일 웹훅은 이메일 서비스 제공업체가 특정 이벤트를 대상 서버에 알리기 위해 트리거하는 HTTP 콜백입니다. 애플리케이션이 API를 폴링해 상태 업데이트를 확인하는 대신, 제공업체가 전송 실패나 링크 클릭 같은 이벤트가 발생한 직후 미리 지정된 URL로 JSON 또는 XML 페이로드를 푸시합니다.

동작 원리

이벤트가 발생하면 이메일 제공업체가 HTTP POST 요청을 생성합니다. 이 요청에는 메시지 ID, 수신자 주소, 타임스탬프 등 이벤트 메타데이터가 담긴 페이로드가 들어 있습니다. 수신 서버는 공개 엔드포인트에서 요청을 받아 들어오는 요청을 검증하고, 수신을 확인하는 200 OK 응답을 반환해야 합니다. 서버가 오류를 반환하면 제공업체는 지수 백오프 전략으로 전송을 재시도할 수 있습니다.

발신자에게 중요한 이유

웹훅은 발신자 평판을 유지하는 데 매우 중요합니다. 하드 바운스나 스팸 신고를 실시간으로 알림받으면 개발자는 유효하지 않은 주소를 목록에서 자동으로 제거할 수 있습니다. 이렇게 하면 사용되지 않는 메일함으로 반복 발송하는 일을 막을 수 있는데, 이는 ISP가 발신자를 저품질로 분류하는 주된 신호입니다. 이런 신호에 빠르게 대응하면 전체 전달률이 높아집니다.

운영상 고려 사항

흔한 실패 원인은 수신 서버가 페이로드를 동기 방식으로 처리할 때 발생하는 타임아웃 오류입니다. 이를 피하려면 웹훅을 받아 Redis나 RabbitMQ 같은 시스템의 큐에 넣고 즉시 응답하는 비동기 아키텍처를 구현해야 합니다. 또한 보안이 무엇보다 중요합니다. 위조된 이벤트 알림을 막으려면 제공업체 서명을 검증하거나 발신 IP를 확인해야 합니다.

구체적인 구현 예시

일반적인 워크플로는 Resend나 Amazon SES 같은 제공업체에 URL을 설정하는 것입니다. 사용자가 이메일의 링크를 클릭하면 제공업체가 { event: click, email: user@example.com, link: https://site.com/offer } 같은 본문으로 /webhooks/email에 POST 요청을 보냅니다. 그러면 애플리케이션이 데이터베이스의 사용자 레코드를 업데이트해 캠페인을 성공으로 표시합니다.

도구 연동

웹훅을 설정하려면 공개 URL과 페이로드를 테스트할 방법이 필요합니다. 개발자는 SendHQ 또는 무료 도구(https://sendhq.cc/tools)를 사용해 이메일 인프라의 기술 요건을 관리하고 설정이 업계 표준에 맞는지 확인할 수 있습니다.

팀에서 자주 묻는 질문

API와 웹훅은 어떻게 다른가요?

API는 클라이언트가 서버에 데이터를 가져오기 위해 보내는 요청입니다. 웹훅은 이벤트가 발생했을 때 서버가 클라이언트에 데이터를 자동으로 푸시하기 위해 보내는 요청입니다.

이메일 웹훅 엔드포인트는 어떻게 보호하나요?

헤더에 시크릿 토큰을 사용하거나, 이메일 서비스가 제공하는 HMAC 서명을 검증하거나, 수신 트래픽을 제공업체가 소유한 특정 IP 범위로 제한하세요.

웹훅 이벤트가 발생했을 때 서버가 다운되어 있으면 어떻게 되나요?

대부분의 전문 제공업체는 이벤트를 큐에 보관하고, 몇 시간에서 며칠에 걸쳐 여러 번 재전송을 시도한 뒤에야 해당 이벤트를 전달 불가로 표시합니다.

1차 출처