メインコンテンツへスキップ
OneSignal Custom Outcomesを使用すると、プッシュ通知とアプリ内メッセージから生じる意味のあるユーザーアクションを追跡できます。これらのアクション(購入、サインアップ、アプリイベントなど)は、カウント、合計、ユニークメトリクスで追跡でき、メッセージングキャンペーンの影響についての洞察が得られます。
Custom Outcomesは、ProfessionalおよびEnterpriseプランで利用できます。料金の詳細をご覧ください。

Outcomeタイプ & SDKメソッド

ユーザーが特定のアクション(例:「カートに追加」または「アップグレード」をタップ)を完了したときに、コードの行を追加してOutcomeをトリガーできます。
OutcomeタイプMobile SDKメソッドWeb SDKメソッド説明
Standard CountaddOutcomesendOutcome呼び出されるたびにカウントを1ずつ増やします。値の追跡はありません。
Value (Sum)addOutcomeWithValuesendOutcomeカウントを1ずつ増やし、指定された数値で合計を増やします。収益追跡に便利です。
Unique CountaddUniqueOutcomesendUniqueOutcomeアトリビューションウィンドウごとに1回だけカウントを1ずつ増やします。「Swipeセッション開始」や「CTAをタップ」などのバイナリユーザーアクションに最適です。
Outcomeイベントは、オフラインの場合にローカルにキャッシュされ、次のOneSignal初期化時に再試行されます。

カウント vs 合計

Outcomesは2つの主要なメトリクスをサポートします:
メトリクス説明
Countoutcomeイベントがトリガーされた回数
Sumoutcomeで送信されたすべての数値の合計(該当する場合)
値を持つOutcomesは、常に最も近い整数に丸められます。 :購入からの収益を追跡するには:
// "Purchase" button pressed in the app
   ...
   OneSignal.Session.addOutcomeWithValue("Purchase", 18.76);

Outcomeアトリビューション

各Outcomeは、それがどのように生成されたかを説明するアトリビューションタイプで追跡されます:
  • direct — ユーザーがメッセージと直接やり取りしたときにOutcomeが発生しました。os__clickos__confirmed_deliveryなどの一部のOutcomesは、メッセージの結果としてのみ発生するため、直接アトリビューションのみを持ちます。
  • influenced — メッセージが送信された後、アトリビューション時間ウィンドウ内でOutcomeが発生しましたが、ユーザーはメッセージと直接やり取りしませんでした。
  • unattributed — メッセージとの直接的または影響関係なしにOutcomeが発生しました。
  • total (デフォルト)direct + influenced + unattributedの合計。

ユースケース

Eコマースサイト

オンラインストアは、OneSignalプッシュ通知を使用して、ユーザーを放棄されたカート、フラッシュセール、プロモーションなどに呼び戻すことができます。Outcomesを使用すると、ストアオーナーは、カートへの追加、購入、またはクーポンの引き換えなどのユーザーアクションとプッシュ通知を簡単に関連付けることができます。購入の場合、outcomesは単純なカウント以上に進み、購入金額を追跡できます。これにより、サイトオーナーは個々のプッシュから生成された収益の合計を簡単に表示できます。
OneSignal.Session.addOutcomeWithValue("Purchase", 18.76);

ソーシャルアプリ

ソーシャルアプリは、プッシュを使用してマッチまたは友達リクエスト、新しいいいね、または単にスワイプさせることでユーザーを再エンゲージしたい場合があります。Outcomesを使用することで、開発者は、プッシュ通知がマッチとのチャットの開始や34秒のスワイプセッションなどのユーザーイベントにつながったかどうかを確認できます。これらのデータは、通知とターゲティング戦略を改善するために使用できます。 次の例では、プッシュ後にユーザーがデートプロフィールのスワイプを開始したかどうかを追跡したいと考えています。すべてのスワイプをコンバージョンとしてカウントしたくないため、sendUniqueOutcomeを使用します。 この「Swipe」outcomeは、それをトリガーしたプッシュに1回だけアトリビューションされます。例:
  • ユーザーがプッシュをクリックし、このメソッドを呼び出すアクションを実行した場合、直接アトリビューションになります。
  • ユーザーがプッシュを受信したがクリックせず、アトリビューションウィンドウ内でアクションを実行した場合、影響アトリビューションになります。後で同じプッシュをクリックして再度アクションを実行しても、影響のままです。
  • ユーザーがアトリビューションウィンドウ外でメソッドを実行した場合、セッションごとに1回unattributedになります。
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では一般的ですが、Webプッシュプラットフォームも追跡したい場合は、たとえば次を使用できます:
// 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はPushとIn-App Messagesのアクションにのみ追加できます。 In-App messagesを介して送信されたOutcomesは「Unattributed」として表示され、デバイスにoutcome name : trueの形式でタグを設定します。

Outcomesをエクスポートできますか?

一連のoutcomesまたはすべてのoutcomesをCSVとしてエクスポートできます。個別の通知またはすべての通知のoutcomesへのAPIアクセスも提供しています。

Custom Outcomesの値として文字列を保存できますか?

これはサポートされていません。

デバイスがオフラインの場合はどうなりますか?

発火されたoutcomesのデータは、デバイスが再びオンラインになったときにOneSignalに送信されるようにキューに入れられます。

ユーザーが通知をクリックした後にアプリをバックグラウンドにし、その後戻ってOutcomeを発火した場合、それは直接または影響とカウントされますか?

ユーザーがバックグラウンドにした後30秒以内にアプリに戻る限り、セッションはまだ元のセッションと見なされ、直接アトリビューションを取得します。

新しいAttribution Windowはいつ有効になりますか?

たとえば、アトリビューションウィンドウを24時間から1時間に変更すると、各デバイスが新しいセッションからアプリを開くと、デバイスごとに1時間のウィンドウが有効になります。この新しいセッションは、アプリ外に30秒いた後に作成されます。

セッションが他の分析と一致しないのはなぜですか?

OneSignalは、ユーザーがアプリを30秒以上離れた後にのみセッションをカウントします。アプリまたはウェブサイトを閉じて30秒以内に戻った場合、新しいセッションにはなりません。 たとえば、Appleの分析は、アプリが少なくとも2秒間使用された回数としてセッションを追跡します。アプリがバックグラウンドにあり、後で再び使用された場合、それは別のセッションとしてカウントされます。