개요
웹 푸시 Webhook을 사용하면 사용자가 푸시 알림과 상호 작용할 때마다 실시간 HTTP POST 알림을 받을 수 있습니다. 알림이 표시, 클릭 또는 해제되면 OneSignal은 알림 데이터와 모든 사용자 지정 매개변수를 지정된 webhook URL로 자동으로 전송합니다.Journey Webhook의 경우 Journey Webhook 페이지를 참조하세요.
- 실시간으로 알림 참여 추적
- 사용자 상호 작용을 기반으로 자동화된 워크플로 트리거
- 분석 플랫폼과 알림 데이터 동기화
- 알림 이벤트에 대한 사용자 지정 비즈니스 로직 구현
브라우저 지원
| 브라우저 | 플랫폼 지원 | 사용 가능한 Webhook 이벤트 |
|---|---|---|
| Chrome | macOS, Windows, Android | 모든 이벤트 (표시, 클릭, 해제) |
| Firefox | macOS, Windows, Android | 표시 및 클릭 이벤트 |
| Safari | 지원되지 않음 | 없음 |
사용 가능한 Webhook 이벤트
notification.willDisplay
알림이 사용자의 화면에 나타난 직후 트리거됩니다. 사용 사례: 전달률 추적, 노출 데이터 로그, 후속 캠페인 트리거notification.clicked
사용자가 알림 본문 또는 작업 버튼을 클릭할 때 트리거됩니다. 사용 사례: 참여율 추적, 전환 이벤트 트리거, 사용자를 특정 콘텐츠로 리디렉션notification.dismissed
사용자가 알림을 적극적으로 해제하거나 자동으로 만료될 때 트리거됩니다. 브라우저 지원: Chrome만 해당 사용 사례: 해제율 추적, 알림 타이밍 최적화, 알림 콘텐츠 A/B 테스트 중요: 알림 본문 또는 작업 버튼을 클릭해도 해제 webhook이 트리거되지 않습니다.설정 방법
- 대시보드 구성 (대부분의 사용자에게 권장)
- 사용자 지정 코드 통합
1
OneSignal 대시보드에서 설정 > 웹으로 이동합니다
2
“Enable webhooks” 토글을 활성화합니다
3
추적하려는 각 이벤트에 대한 webhook URL을 입력합니다

OneSignal 대시보드 설정에서 webhook 활성화
webhook URL이 HTTPS인지 확인하세요(Chrome의 보안 정책에 필요함).
CORS 구성
cors 설정은 webhook 엔드포인트가 수신하는 헤더와 데이터를 결정합니다:
cors: false(권장): 더 간단한 설정, 서버에서 CORS 구성이 필요하지 않음cors: true: 추가 헤더를 제공하지만 서버에서 CORS 지원이 필요함
cors: true를 사용하는 경우:
Content-Type: application/json헤더가 필요함- 더 쉬운 이벤트 식별을 위해
X-OneSignal-Event헤더를 원함 - 서버가 이미 비단순 요청에 대한 CORS를 지원함
Webhook 요청 형식
표준 요청 (cors: false)
webhook 엔드포인트는 다음 페이로드 구조로 POST 요청을 받습니다:향상된 요청 (cors: true)
위와 동일한 페이로드에 다음 추가 헤더가 포함됩니다:페이로드 필드 참조
| 필드 | 유형 | 설명 | 항상 존재 |
|---|---|---|---|
event | string | webhook을 트리거한 이벤트 유형 | ✅ |
notificationId | string | 고유한 OneSignal 알림 식별자 | ✅ |
heading | string | 알림 제목 | 제공된 경우에만 |
content | string | 알림 메시지 본문 | 제공된 경우에만 |
additionalData | object | 알림과 함께 전송된 사용자 지정 데이터 | 제공된 경우에만 |
actionId | string | 클릭한 작업 버튼의 ID (빈 문자열 = 알림 본문 클릭) | 클릭 이벤트만 |
url | string | 알림의 시작 URL | 제공된 경우에만 |
subscriptionId | string | OneSignal 사용자/구독 ID | CORS 활성화된 경우에만 |
구현 모범 사례
Webhook 엔드포인트 요구 사항
보안:- HTTPS URL만 사용(HTTP URL은 Chrome에서 차단됨)
- webhook 엔드포인트에 대한 적절한 인증/검증 구현
- 대량 알림을 처리하기 위해 속도 제한 고려
- 성공적인 처리를 위해 HTTP 200 상태 반환
- 시간 초과를 피하기 위해 10초 이내에 응답
- 중복 webhook 호출을 적절하게 처리(멱등성 구현)
오류 처리
일반적인 문제 및 해결 방법
Webhook이 실행되지 않음
가능한 원인:- OneSignal 초기화가 있는 모든 페이지에 webhook 코드가 없음
- 사용자가 webhook 코드를 추가한 후 webhook 코드가 있는 페이지를 방문하지 않음
- HTTPS 요구 사항이 충족되지 않음
- 서버가 200이 아닌 상태 코드를 반환함
Webhook에서 데이터 누락
원인: Webhook은 webhook 구성이 활성화된 페이지를 방문하는 사용자의 이벤트만 추적합니다. 해결 방법: 특정 랜딩 페이지뿐만 아니라 OneSignal이 있는 모든 페이지에 webhook 코드를 배포합니다.중복 Webhook 호출
원인: 네트워크 문제 또는 브라우저 동작으로 인해 중복 요청이 발생할 수 있습니다. 해결 방법:notificationId 필드를 사용하여 멱등성을 구현하여 이벤트를 중복 제거합니다.
Webhook 제한 사항
- 이벤트당 하나의 webhook URL: 동일한 이벤트 유형에 대해 여러 webhook URL을 설정할 수 없습니다
- HTTPS만 해당: 브라우저 보안 제한으로 인해 HTTP URL은 작동하지 않습니다
- Chrome 전용 해제 추적:
notification.dismissed이벤트는 Chrome에서만 작동합니다 - 페이지 종속성: 추적이 작동하려면 사용자가 webhook 코드가 활성화된 페이지를 방문해야 합니다
Webhook 테스트
- OneSignal 대시보드를 통해 테스트 알림 전송
- 들어오는 요청에 대해 webhook 엔드포인트 모니터링
- 페이로드 구조가 예상과 일치하는지 확인
- 다양한 시나리오 테스트:
- 알림 표시
- 알림 본문 클릭
- 작업 버튼 클릭(구성된 경우)
- 알림 해제(Chrome만 해당)
다음 단계
webhook을 설정한 후 다음을 고려하세요:- 분석 통합: webhook 데이터를 분석 플랫폼으로 전달
- 사용자 세분화: webhook 이벤트를 사용하여 참여를 기반으로 사용자 세그먼트 생성
- 자동화된 워크플로: 푸시 알림 상호 작용을 기반으로 이메일 캠페인 또는 앱 알림 트리거
- A/B 테스트: webhook 데이터를 사용하여 다양한 알림 전략의 효과 측정