KARTE for Appでのviewイベント送信のベストプラクティス

KARTE for Appでのviewイベント送信の目的

KARTE for Appでは、エンドユーザーがどの画面を閲覧しているかについてviewイベントとして送信することを期待しています。

このviewイベントは、SDKやKARTE上で以下の役割を持っています。

  • KARTE側にエンドユーザーがどのような画面を見ているかを認識させる
  • 認識されたviewイベントをpopup等の接客サービス配信のトリガーとして利用する
  • 既に画面上にpopupの接客サービスが表示されている場合に、新たにviewイベントが発生した場合にSDKが画面境界を認識し、popupを非表示化させる

viewイベントは原則として、すべての画面の描画時に送信してくだたくことを想定しています。viewイベントの設計等でご不明等や相談事項があれば、担当のカスタマーサクセスまでお問い合わせください。

以降ではviewイベント送信のアンチパターン、FAQ等について取り扱います。

viewイベント送信のアンチパターン

以下のような形式でviewイベントを送信するように実装した場合、KARTEの運用上で問題が生じる可能性があります。

他の解析ツールに閲覧情報を送信しているロジックをそのまま流用する

  • 解析ツールの場合は閲覧の計測に応じたpopupの配信を行わないことが多いため、popupの配信トリガーとしての役割を持つKARTEのviewイベントとは役割が異なる場合もあります。そのため他のツールで送信しているロジックを流用した場合には、KARTEが想定する形でエンドユーザーの閲覧行動を認識できない、popupの配信が行えないといった問題が生じる場合もあります。
  • viewイベントの目的に合わせて、適切なviewイベント送信の設計と実装が必要になります。

SDKが自動認識する画面境界の発生前にviewイベントが送信される

短期間で1つのviewイベント送信に前後して、別のviewイベントが送信される

  • SDKが自動認識する画面境界と同様に、viewイベントの発生にも依存してpopupの非表示化が行われます。
  • 実装上の都合で1つの画面上に複数のViewController/Activity等が読み込まれ、それぞれの読み込みに応じて自動でviewイベントが送信されるような実装になっている場合では、配信のトリガーとして扱いたいviewイベントに前後して他のviewイベントが発生し、結果としてviewイベントの発生による画面境界の認識で意図しないタイミングでpopupが非表示化される、もしくは表示自体が阻害される可能性があります。

アプリ内WebViewの閲覧をSDK経由のviewイベントとして送信する

スクロール等に応じて動的にviewイベントが送信される

  • スクロールに応じたイベント送信はイベント数が増加しやすく、イベント送信数のリミットに抵触する可能性があります。また同一ページ上でのスクロールの場合、後述のfield値が区別できないという問題も併発する場合があります。
  • viewイベントではなく、カスタムイベントとしての送信でもイベント送信数のリミットについては同じものが適用されます。

viewイベントで送信されるfield値が区別できない

  • viewイベントではview_name, titleというfieldで画面をユニークに識別できる文字列が送信されることを期待していますが、異なる画面で送信されるviewイベントでこれらが重複している場合、KARTE上では画面の違いを識別できません。

viewイベントの実装不備に伴う問題

viewイベントの設計や実装に不備がある場合には、下記のような問題が生じる可能性があります。

viewイベントの送信に抜け漏れがある場合

  • 意図したタイミングでpopupの表示/非表示ができない
  • 閲覧履歴に応じたターゲティング等を行う場合に、閲覧履歴が存在しない扱いになってしまう

viewイベントが過剰に送信されていまう場合

  • 意図しないタイミングでpopupが表示されてしまう
  • 意図しないタイミングで表示中のpopupが消えてしまう、もしくは表示が阻害されてしまう
  • 閲覧履歴に応じたターゲティング等を行う場合に、閲覧履歴が過剰に認識され、閲覧回数等が正常に認識されない
  • イベント送信数のリミットに抵触する

実装上の理由で、画面境界の認識を回避しにくい場合のワークアラウンド

KARTE for Appではpopup表示制御のオプションとして、画面境界を認識した際に非表示化させない(常に表示する)オプションの指定が可能です。

ネイティブアプリにおける接客表示制御

このオプションを指定した場合には画面境界を認識してもpopupが非表示化されないため、ユーザーの操作によってpopupを閉じるか、アプリ側でSDKを介してpopupを非表示化させるdismiss()を呼び出さない限りは、popupの表示が継続します。

実装上の理由で、viewイベントの送信タイミングに対して画面境界の認識が回避しにくい場合は、以下のような設定を組み合わせることで対応可能な場合があります。

※あくまでもワークアラウンドの1形態であるため、この方法での回避ができないケースも存在します

viewイベントの設計について

通常KARTE for Appの契約時のオンボーディングで、担当のカスタマーサクセスと施策内容に応じた設計を行います。

設計についてのご不明点や相談、または既存の設計についての見直し等があれば、適宜お問い合わせください。

FAQ

ハーフモーダルやOS側のダイアログ等の描画時に、viewイベントを送信する必要がありますか?

viewイベントの役割に則り、以下の観点が必要であれば送信を推奨します。

  • ハーフモーダルの描画に合わせて、popupの表示を行いたい
  • ハーフモーダルの描画に合わせて、既に表示されているpopupの表示化を行いたい

またこれと合わせて、dismissによるpopupの非表示化や、suppress/unsuppressで特定画面でのpopup表示抑制等も対応可能ですので、合わせてご検討ください。詳細な方法については以下のドキュメントをご確認ください。


viewイベントに合わせて、商品情報等を追加で送信できますか?

viewイベントにはview_name, title以外にも任意のfieldを追加いただけます。

ただし画面描画のタイミングに対して、追加送信したい情報が非同期で参照される場合には、viewイベントが送信可能になるタイミングが一般的に想定されるviewイベントの送信タイミングよりも遅れることも想定されます。

その場合には、遷移前の画面で表示させていたpopupが意図したタイミングで非表示化できないような可能性もあるため、場合によっては画面描画時にviewイベントを送信し、追加送信したい情報については参照完了時に非同期で別のカスタムイベントを送信するといった方法が望ましい場合もあります。

アプリ内WebViewの計測はできますか?

アプリ内WebViewに計測タグを設置し、適切にWebView連携を実装することで対応可能です。