메인 콘텐츠로 건너뛰기
OneSignal 사용자 지정 Outcomes를 사용하면 푸시 알림 및 인앱 메시지로 인한 의미 있는 사용자 작업을 추적할 수 있습니다. 이러한 작업(예: 구매, 가입 또는 앱 이벤트)은 개수, 합계 및 고유 메트릭으로 추적할 수 있어 메시징 캠페인의 영향에 대한 인사이트를 제공합니다.
사용자 지정 Outcomes는 ProfessionalEnterprise 플랜에서 사용할 수 있습니다. 가격에 대해 자세히 알아보세요.

Outcome 유형 및 SDK 메서드

사용자가 특정 작업(예: “장바구니에 추가” 또는 “업그레이드” 탭)을 완료할 때 코드 한 줄을 추가하여 Outcome을 트리거할 수 있습니다.
Outcome 유형Mobile SDK 메서드Web SDK 메서드설명
표준 개수addOutcomesendOutcome호출될 때마다 개수가 1씩 증가합니다. 값 추적 없음.
값(합계)addOutcomeWithValuesendOutcome개수가 1씩 증가하고 합계가 지정된 숫자 값만큼 증가합니다. 수익 추적에 유용합니다.
고유 개수addUniqueOutcomesendUniqueOutcome속성 창당 한 번만 개수가 1씩 증가합니다. “스와이프 세션 시작” 또는 “CTA 탭”과 같은 이진 사용자 작업에 가장 적합합니다.
Outcome 이벤트는 오프라인인 경우 로컬로 캐시되고 다음 OneSignal 초기화 시 다시 시도됩니다.

개수 vs 합계

Outcomes는 두 가지 주요 메트릭을 지원합니다:
메트릭설명
개수outcome 이벤트가 트리거된 횟수
합계outcome과 함께 전송된 모든 숫자 값의 합계(해당하는 경우)
값이 있는 Outcomes는 항상 가장 가까운 정수로 반올림됩니다. 예시: 구매에서 수익을 추적하려면:
// "Purchase" button pressed in the app
   ...
   OneSignal.Session.addOutcomeWithValue("Purchase", 18.76);

Outcome 속성

각 Outcome은 생성 방법을 설명하는 속성 유형과 함께 추적됩니다:
  • 직접 — 사용자가 메시지와 직접 상호 작용할 때 Outcome이 발생했습니다. os__clickos__confirmed_delivery와 같은 일부 Outcomes는 메시지의 결과로만 발생하기 때문에 직접 속성만 있습니다.
  • 영향을 받음 — 메시지가 전송된 후 속성 시간 창 내에서 Outcome이 발생했지만 사용자가 메시지와 직접 상호 작용하지 않았습니다.
  • 속성이 지정되지 않음 — 메시지와 직접 또는 영향을 받은 관계 없이 Outcome이 발생했습니다.
  • 전체 (기본값)직접 + 영향을 받음 + 속성이 지정되지 않음의 합계입니다.

사용 사례

전자상거래 사이트

온라인 스토어는 OneSignal 푸시 알림을 사용하여 사용자를 버려진 장바구니, 플래시 세일, 프로모션 등으로 다시 유도할 수 있습니다. Outcomes를 사용하면 스토어 소유자는 이제 푸시 알림을 장바구니에 추가, 구매 또는 쿠폰 사용과 같은 사용자 작업과 쉽게 연관시킬 수 있습니다. 구매의 경우 outcomes는 단순한 개수를 넘어 구매 금액을 추적할 수 있습니다. 이를 통해 사이트 소유자는 개별 푸시에서 생성된 수익의 총합을 쉽게 볼 수 있습니다.
OneSignal.Session.addOutcomeWithValue("Purchase", 18.76);

소셜 앱

소셜 앱은 푸시를 사용하여 사용자에게 매치나 친구 요청, 새로운 좋아요를 알리거나 단순히 스와이프하게 하여 사용자를 다시 참여시키고자 할 수 있습니다. Outcomes를 사용하면 개발자는 푸시 알림이 매치와 채팅을 시작하거나 34초 스와이프 세션과 같은 사용자 이벤트로 이어졌는지 확인할 수 있습니다. 그런 다음 이러한 데이터를 사용하여 알림 및 타겟팅 전략을 개선할 수 있습니다. 다음 예제에서는 사용자가 푸시 후 데이트 프로필을 스와이프하기 시작했는지 추적하려고 합니다. 모든 스와이프를 전환으로 계산하고 싶지 않으므로 sendUniqueOutcome을 사용합니다 이 “Swipe” outcome은 트리거한 푸시에 한 번만 속성이 지정됩니다. 예:
  • 사용자가 푸시를 클릭하고 이 메서드를 호출한 작업을 수행한 경우 직접 속성이 됩니다.
  • 사용자가 푸시를 받았지만 클릭하지 않고 속성 창 내에서 작업을 수행한 경우 영향을 받은 속성이 됩니다. 나중에 동일한 푸시를 클릭하고 작업을 다시 수행하더라도 여전히 영향을 받은 것으로만 표시됩니다.
  • 사용자가 속성 창 외부에서 메서드를 수행하는 경우 세션당 한 번 속성이 지정되지 않습니다.
OneSignal.Session.addUniqueOutcome("Swipe");

언어별로 클릭된 푸시

SDK의 Notification Opened/Clicked 리스너 메서드 내에서 Outcomes를 설정하여 설정된 언어별로 푸시를 클릭한 기기 수를 증가시킬 수 있습니다. 기기의 언어를 감지하려면 일부 네이티브 코드가 필요하지만 다음과 같이 해당 언어를 Outcome에 전달할 수 있습니다:
  public void notificationOpened(OSNotificationOpenResult result) {
    String languageCode = Locale.getDefault().getLanguage();
    System.out.println("languageCode " + languageCode);
    OneSignal.Session.addOutcome(languageCode);
  }

운영 체제 및 브라우저별로 클릭된 푸시

SDK의 Notification Opened/Clicked 리스너 메서드 내에서 Outcomes를 설정하여 특정 플랫폼이 클릭된 것을 증가시킬 수 있습니다. 이것은 모바일 앱의 클릭 핸들러에서 OneSignal.addOutcome("iOS") 또는 OneSignal.addOutcome("Android")를 설정할 수 있으므로 iOS 및 Android에 대해 일반적이지만 웹 푸시 플랫폼도 추적하려면 예를 들어 다음을 사용할 수 있습니다:
// Example taken from Stackoverflow: https://stackoverflow.com/questions/11219582/how-to-detect-my-browser-version-and-operating-system-using-javascript
var os = "Unknown OS";
if (navigator.userAgent.indexOf("Win") != -1) os = "Windows";
if (navigator.userAgent.indexOf("Mac") != -1) os = "Macintosh";
if (navigator.userAgent.indexOf("Linux") != -1) os = "Linux";
if (navigator.userAgent.indexOf("Android") != -1) os = "Android";
if (navigator.userAgent.indexOf("like Mac") != -1) os = "iOS";
console.log('Your os: ' + os);

var browserType = "Unknown Browser Type";
if (navigator.userAgent.indexOf("Safari") != -1) browserType = "Safari";
if (navigator.userAgent.indexOf("Chrome") != -1) browserType = "Chrome";
if (navigator.userAgent.indexOf("OPR") != -1) browserType = "Opera";
if (navigator.userAgent.indexOf("Firefox") != -1) browserType = "Firefox";
console.log('Your Browser: ' + browserType);

OneSignal.push(["addListenerForNotificationOpened", function(data) {
OneSignal.Session.sendOutcome(os);
OneSignal.Session.sendOutcome(browserType);
}]);


Outcome 추적 비활성화

대시보드 Settings > Push & In-App > Outcomes Tracking에서 특정 Outcomes가 추적되지 않도록 비활성화하세요. 여기에서 Stop Tracking 버튼을 클릭하여 대시보드에서 추적을 중지할 outcome을 선택할 수 있습니다. Outcomes 추적을 중지하면 여기에 나열되고 Start Tracking 링크를 클릭하여 다시 추적을 시작할 수 있습니다.

FAQ

Outcome 데이터는 얼마나 오래 저장되나요?

  • 대시보드에서 보낸 알림은 Outcome 데이터를 영원히 보관합니다.
  • API를 통해 보낸 알림은 제거되기 전에 outcomes를 30일 동안 보관합니다.

어떤 채널이 사용자 지정 outcomes를 지원하나요?

현재 사용자 지정 outcomes는 푸시 및 인앱 메시지의 작업에만 추가할 수 있습니다. 인앱 메시지를 통해 보낸 Outcomes는 “Unattributed”로 표시되며 기기에 outcome name : true 형식으로 태그를 설정합니다.

Outcomes를 내보낼 수 있나요?

outcomes 세트 또는 모든 outcomes를 CSV로 내보낼 수 있습니다. 개별 알림 또는 모든 알림에 대한 outcomes에 대한 API 액세스도 제공합니다.

사용자 지정 Outcomes에 값으로 문자열을 저장할 수 있나요?

지원되지 않습니다.

기기가 오프라인이면 어떻게 되나요?

발생한 outcomes에 대한 데이터는 기기가 다시 온라인 상태가 되면 OneSignal로 전송되도록 대기열에 추가됩니다.

사용자가 알림을 클릭한 후 앱을 백그라운드로 보낸 다음 다시 돌아와 Outcome을 발생시키면 직접으로 계산되나요 아니면 영향을 받은 것으로 계산되나요?

사용자가 백그라운드로 보낸 후 30초 이내에 앱으로 돌아오는 한 세션은 여전히 원래 세션으로 간주되며 직접 속성을 받습니다.

새로운 Attribution Window는 언제 적용되나요?

예를 들어 속성 창을 24시간에서 1시간으로 변경하는 경우 각 기기가 새 세션에서 앱을 열면 기기별로 1시간 창이 적용됩니다. 이 새 세션은 앱 외부에 30초 후에 생성됩니다.

세션이 다른 분석과 일치하지 않는 이유는 무엇인가요?

OneSignal은 사용자가 30초 이상 앱을 떠난 후에만 세션을 계산합니다. 앱이나 웹사이트를 닫고 30초 이내에 다시 돌아오면 새 세션이 아닙니다. 예를 들어 Apple의 분석은 세션을 앱이 최소 2초 동안 사용된 횟수로 추적합니다. 앱이 백그라운드에 있다가 나중에 다시 사용되면 다른 세션으로 계산됩니다.