# 自動計測されるイベント

## 自動計測されるイベントについて

Wicleの計測タグを設置することで、以下のような行動が自動計測されます。

* デフォルトの自動計測イベント
  * [ページビュー](#view)
  * [クリック](#kurikkuclick)
  * 非課金イベント
    * [活動時間](#spend_time)
* オプトインできる自動計測イベント
  * [スクロール率](#block-6c476dcf236440999c23e8babd06e38b)
  * [注視領域](#viewport_attention)
  * [フォーム送信](#block-78485b4ef1e74924817e439374c78671)
  * [エラー](#ererror)

## デフォルトの自動計測イベント <a href="#default_events" id="default_events"></a>

タグの設置と共に自動的に計測開始されるイベントです。

### ページビュー（view） <a href="#view" id="view"></a>

ページビューが発生し、タグが読み込まれたタイミングで自動でviewイベントとして計測されます。

代表的な項目は以下です

* ページのURL
* ページタイトル
* リファラ
* デバイス、OS情報
* ユーザーエージェント

{% hint style="info" %}
SPAサイトでも、タグが仮想ページ遷移を自動検知してviewイベントを送信します。別途の設定は不要です。
{% endhint %}

### クリック（click） <a href="#click" id="click"></a>

以下の要素をクリックしたタイミングで自動でclickイベントとして計測されます。

対象要素に子要素がある場合、親要素に合致する要素があればその要素のクリックと判断してデータ送信をします。

* A要素
* BUTTON要素
* INPUT要素の内、type属性が以下のもの
  * button
  * checkbox
  * image
  * radio
  * range
  * reset
  * submit

### 計測サポート外のケース

* [ShadowDom](https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_shadow_DOM)内の要素
* [iframe](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe)内の要素

{% hint style="info" %}

#### クリックイベントの拡張

対象要素に特定の属性を付与することで、任意のデータをクリックイベントに付与できます。詳しくは以下をご覧ください。

[click-event-extension](https://docs.wicle.io/data-setting/event-tracking/click-event-extension "mention")
{% endhint %}

## 非課金イベント <a href="#not_billed_event" id="not_billed_event"></a>

自動計測されますが、より詳細な統計値を正確に計算するためのイベントとして特殊な計測ロジックを使用しています。

これらのイベントは、**計測イベント数の実績としてカウントされない**非課金のイベントです。

### 活動時間（spend\_time\_in\_pv / spend\_time\_in\_session） <a href="#spend_time" id="spend_time"></a>

Wicle内で扱う滞在時間は「**活動時間**」と呼び、単純な経過時間ではなくエンドユーザーが何らかの操作を行なっていると思われる時間になります。\
エンドユーザーの操作として検知するのは、**マウス移動・スクリーンタッチ・スクロール・クリック・キー入力**です。

spend\_time\_in\_pvイベントでは1ページビュー内での、spend\_time\_in\_sessionイベントでは1セッション内での累計滞在時間を計算し、下記の割合を超えた時点でページビューまたはセッションにつき一度のみイベントを送信します。

```
# spend_time_in_pv
10秒, 30秒, 60秒, 120秒, 180秒, 240秒, 300秒, 360秒, 420秒, 480秒, 540秒, 600秒

# spend_time_in_session
3秒, 10秒, 30秒, 60秒, 120秒, 180秒, 240秒, 300秒, 360秒, 420秒, 480秒, 540秒, 600秒
```

このイベントデータを持ってユーザー単位やページ単位の活動時間を算出しています。

## オプトインできる自動計測イベント <a href="#optin_events" id="optin_events"></a>

タグの設置と共に計測可能になり、タグ設定画面から計測を有効化することで計測開始されるイベントです。

## スクロール率（scroll\_depth） <a href="#scroll-depth" id="scroll-depth"></a>

ページのスクロール率(※)を計算し、下記の割合を超えたタイミング毎に**ページビューにつき一度のみイベントを送信**します。

| タイプ       | しきい値                                              | 用途           |
| --------- | ------------------------------------------------- | ------------ |
| 標準（デフォルト） | 25%, 50%, 75%, 100%                               | 一般的なスクロール計測  |
| 詳細        | 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90%, 100% | より細かいスクロール分析 |
| 簡易        | 50%, 100%                                         | イベント数を抑えた計測  |

※スクロール率は`document.documentElement.scrollHeight` を基準に計算します。この値が0の時はイベントの送信は行われません。

[プロジェクト設定の計測タグ画面](https://app.wicle.io/settings/mesurement-tag)からしきい値のタイプを変更できます。

## 注視領域（viewport\_attention） <a href="#viewport-attention" id="viewport-attention"></a>

ブラウザ上で表示されたページのエリアを細かく分割し、各エリアを見ている秒数を計測します。（ヒートマップで主に使用します）

画面上にエリアが見えてない場合以外にも、別タブを見ているなどブラウザ仕様で閲覧状態では無いと断定できる時間は注視時間としてカウントしません。

## フォーム送信（submit） <a href="#form-submit" id="form-submit"></a>

ブラウザ上で[submitイベント](https://developer.mozilla.org/ja/docs/Web/API/HTMLFormElement/submit_event)が発生すると自動で計測されます。

## エラー（error） <a href="#error-event" id="error-event"></a>

### ブラウザ上でのエラー <a href="#browser-error" id="browser-error"></a>

ブラウザ上で発生した各種JSエラーの内容をイベントとして計測します。\
意図しない大量イベントの送信を防ぐため、同一のエラーは**ページビューにつき一度のみイベントを送信**させる様に制御されています。

計測対象は下記の様になっています。

| 計測対象                                                                                                       | level | type               | message                  | stack                  |
| ---------------------------------------------------------------------------------------------------------- | ----- | ------------------ | ------------------------ | ---------------------- |
| [console.warn](https://developer.mozilla.org/en-US/docs/Web/API/console/warn)                              | warn  | console.warn       | 関数に渡された全ての引数を連結したもの      | -                      |
| [console.error](https://developer.mozilla.org/en-US/docs/Web/API/console/error)                            | error | console.error      | 関数に渡された全ての引数を連結したもの      | -                      |
| [errorイベント](https://developer.mozilla.org/en-US/docs/Web/API/Element/error_event)                          | error | error              | イベントのmessageプロパティ        | イベントのerror.stackプロパティ  |
| [unhandledrejectionイベント](https://developer.mozilla.org/en-US/docs/Web/API/Window/unhandledrejection_event) | error | unhandledrejection | イベントのreason.messageプロパティ | イベントのreason.stackプロパティ |

計測対象毎にerrorイベントのプロパティのlevelおよびtypeが自動決定され、それぞれで収集できるエラーメッセージ・スタックトレース情報を送信します。

### サーバー上でのエラー <a href="#server-error" id="server-error"></a>

WebAPIによるイベント送信を実装することで、サーバー上でのエラーもerrorイベントとして収集することが可能です。

{% hint style="info" %}
WebAPIをご利用頂くには弊社側での設定とアクセストークンの受け渡し等が必要になります。現時点ではご連絡を頂き個別ご案内させて頂くフローになっておりますので、ご利用されたい場合はチャットやメールでご連絡ください。
{% endhint %}
