このページでは

For AI agents: a documentation index is available at /docs/llms.txt. Append .md to any page URL for markdown, or send Accept: text/markdown.

クッキーと同意管理(ウェブ実験)

同意ゲートは、訪問者がクッキーバナーに応答するまで、訪問者のデバイスに触れることなくウェブ実験を実行します。同意が未決定の間も、スクリプトは実験の評価とバリアントの適用をちらつきなく行いますが、すべてのクッキーとブラウザストレージへの書き込みをメモリ内に保持し、インプレッションイベントをバッファリングし、サードパーティのオリジンには一切接続しません。訪問者が同意を付与すると、スクリプトは保持中のデータをデバイスにフラッシュし、バッファリングされたインプレッションを送信します。 訪問者が同意を拒否すると、スクリプトは保持データを破棄し、以前のセッションで保存されていたデータをすべて消去します。

同意ゲートは、Web 実験スクリプトのみを対象としています。同意に基づいて Amplitude アナリティクスイベント収集をゲートするには、代わりにブラウザSDKのオプトアウトと初期化の遅延を使用してください。「Cookie と同意管理(ブラウザ SDK)」を参照してください。

同意ゲーティングを有効にする

ウェブ実験スクリプトタグの上で、window.experimentConfigオブジェクトにconsentOptionsを設定します。

html
<script>
  window.experimentConfig = {
    consentOptions: {
      consentRequired: true,
    },
  };
</script>
<!-- Web Experiment script tag -->

このスクリプトは次の3つのステータス値をサポートしています。

  • pending:訪問者がまだ決めていない状態。スクリプトは完全にメモリ内で実行されます。
  • granted:訪問者が同意した状態。スクリプトは正常に実行されます。
  • denied:訪問者が拒否した状態。スクリプトによって保存されているデータが消去され、クライアントでこのページの読み込みが開始されません。

pendingは初期状態としてのみ意味があります。ページのレンダリング時に同意プラットフォームがすでに訪問者の決定について把握している場合、スクリプトが正しい状態で開始するように、設定でconsentStatusを'granted'または'denied'に設定してください。

実行時に同意ステータスを更新する

訪問者がバナーに回答したら、同意管理プラットフォームのコールバックからsetConsentStatusを呼び出します。

js
window.webExperiment?.setConsentStatus("granted"); // or 'denied'

スクリプトはロードされるとすぐに、クライアントの初期化が完了する前にwindow.webExperimentにsetConsentStatusを公開するため、早期に発行された同意コールバックも引き続き反映されます。スクリプトタグ自体がロードされる前にコールバックが実行される場合に備えて、オプションのチェーンを使用してコールを保護します。

ランタイムステータスは常にconsentStatus設定値よりも優先されます。ランタイムにpendingに移行すると、警告がログに記録しますが、何も実行されません。

各状態時の動作

同意を保留中です

スクリプトは実験を評価し、直ちにバリアントを適用します。訪問者はバナーに回答したかどうかにかかわらず、ちらつきのない体験を得ることができます。通常デバイスに記録されるすべての情報は、代わりにメモリに残ります。

  • Cookie とブラウザのストレージへの書き込みは、メモリ内のバッファに送信されます。
  • インプレッションイベントは送信の代わりにバッファリングされます。
  • スクリプトは、クロスサブドメインの行動ターゲティングリレーフレームをロードしません。

訪問者が決断せずにページを離れると、バッファリングされたデータはページとともに消えます。 何も永続しません。

訪問者が同意を付与した場合

grantedステータスは、ページをリロードすることなく、その場でゲートを解決します。

  • バッファリングされたストレージへの書き込みは、デバイスにフラッシュされます。
  • バッファリングされたインプレッションイベントは一度に送信されます。
  • 動作ターゲティングリレーフレームがロードされます。

同意が拒否された状態でページが読み込まれた場合、クライアントは起動しません。そのため、後で許可が得られた場合(たとえば、ユーザーが環境設定センターを再開してオプトインした場合など)、同じページでクライアントが新たに起動します。

訪問者が同意を拒否または撤回した場合

deniedステータスは、ロード時に設定されたか、セッションの途中で取り消されたかに関わらず、スクリプトがデバイスに保存したすべてのデータを消去します。スクリプトが保存するデータにリストされているキーは、このオリジンのストレージとスクリプトが書き込むすべてのクッキースコープから削除されます。このスクリプトは、拒否の前にバッファリングされたインプレッション イベントを恒久的に破棄します。 訪問者が同じページで後で再びオプトインした場合、破棄されたインプレッションは送信されません。

セッション途中で失効すると、現在のページは次のナビゲーションまでデバイスへの書き込みを抑制した状態でメモリ内で実行され、適用されたバリアントを保持します。

スクリプトがデバイスに保存するデータ

同意が付与された場合(または同意ゲートがオフの場合)、スクリプトは以下のキーを永続化します。<slice>は、プロジェクトAPIキーの最初の10文字です。

メモ

  • 同意ゲートは、アンチフリッカースニペットと連携して機能します。このバリアントはpending中に適用されるため、訪問者が決定を下している間にページがちらつくことはありません。
  • Web実験への同意を拒否しても、訪問者がAmplitude アナリティクスからオプトアウトすることはありません。ブラウザSDKを使用して分析の同意を個別に管理できます。
  • プレビューおよびテストリンクは、同意ステータスに関係なく機能します。

これは役に立ちましたか?