Singular Website SDKを使用すると、ウェブサイトのアクティビティをマーケティングタッチポイントに帰属させ、ウェブサイト内のユーザーイベントを追跡することができます。また、Singularのクロスデバイスアトリビューションソリューションの重要なコンポーネントでもあり、ユーザージャーニーを分析し、クロスプラットフォームのLTVとROASを計算することができます。
詳しくは、クロスデバイスアトリビューションFAQと ウェブアトリビューションFAQをご覧ください。
ブラウザの互換性
Chrome: 15以上 | エッジ:15以上 | Internet Explorer10+ |
サファリ5.1+ | ファイアフォックス6+ | オペラ:15以上 |
このガイドでは、Google Tag Managerの実装方法を使用した、Singular Web-to-AppバナーをサポートするウェブサイトSDKの実装について説明します。
Google Tag Managerを使用していない場合は、Singularバナーを有効にする方法(デベロッパーガイド)に従ってNative実装に直接バナーを追加してください。
Singular Bannersを使用していない場合は、こちらの標準ガイドに従ってください:
Singular Website SDKは企業向け機能です。この機能のご利用をご希望の場合は、カスタマーサクセスマネージャーまでお問い合わせください。
重要
Singularバナー機能には、統合Googleタグマネージャー(GTM)テンプレートと互換性のない特別な設定が必要です。この制限により、すべてのタグタイプのSingular GTMテンプレートをこの実装で使用することはできません。
すでに GTM Singular テンプレートを使って Singular WebSDK を実装している場合は、カスタム HTML テンプレートに移行する必要があります。この移行により、Singularプラットフォームとの互換性が確保され、より柔軟な統合のコントロールが可能になります。
前提条件
Singular Website SDKを統合する前に、以下の前提条件が満たされていることを確認してください:
- Google Tag Managerがサイトに設定されている。
- Singularに送信したいイベント(コンバージョンイベントとカスタムイベント)に対して、必要に応じてGoogle Tag Managerトリガーを設定している。
- Singularに送信したいイベントに対して、必要に応じてGoogleタグマネージャーの変数を設定しました。例えば、トランザクションイベントを送信し、トランザクションの収益を含めたい場合は、トランザクションの合計と通貨の変数を設定する必要があります。
タグ 1 - SDK ライブラリの追加
Singular SDKが初期化されたり、Singularの関数がトリガーされたりする前に、Singular JavaScriptライブラリをサイトにロードまたはインジェクトする必要があります。これを確実にするために、Google Tag Manager (GTM)のカスタムHTMLタグオプションを使ってライブラリを注入します。
適切な機能を維持するために、ライブラリはサイトのすべてのページに含める必要があります。GTM の Window Loaded トリガーを使ってライブラリ注入のタイミングを制御し、ページのコンテンツが完全にロードされた後にライブラリがロードされるようにします。
- SDKライブラリをロードするカスタムHTMLタグを作成し、クライアントのヒントデータを取得する権限を追加します。
- タグ名を"Singular - SDK Loader"とします。
- HTMLウィンドウに以下のコードを挿入します。
<script> (function() { // Check if singularSdk is already loaded if (window.singularSdk) { return; // SDK already loaded, no need to load again } // Inject the meta tag for client hints delegation var metaTag = document.createElement('meta'); metaTag.setAttribute('http-equiv', 'delegate-ch'); metaTag.setAttribute('content', 'sec-ch-ua-model https://sdk-api-v1.singular.net; sec-ch-ua-platform-version https://sdk-api-v1.singular.net; sec-ch-ua-full-version-list https://sdk-api-v1.singular.net'); document.head.appendChild(metaTag); // Create and load the Singular SDK script var script = document.createElement('script'); script.src = 'https://web-sdk-cdn.singular.net/singular-sdk/latest/singular-sdk.js'; script.async = true; // Once the script is loaded, push to dataLayer script.addEventListener('load', function() { window.dataLayer = window.dataLayer || []; // Ensure dataLayer is initialized window.dataLayer.push({ event: 'singularSDKLibraryLoaded' }); }); // Append the script tag to the head of the document document.head.appendChild(script); })(); </script>
- 詳細設定]で、[Tag firing priority]を99に設定します。
- Triggering]セクションで、"Window Loaded"トリガーを追加します。
- タグを保存します。
タグ2 - SDK初期化タグ
Singular SDKの初期化コードはページがロードされるたびに実行されなければなりませんが、Singular - SDK Loaderタグが実行された後でなければなりません。これを確実にするために、Singular - SDK Loaderタグによって作成されたData Layerイベントをトリガーとして使用します。
Singular SDKの初期化はすべてのSingularアトリビューション機能の前提条件です。これには2つの重要な目的があります:
- ユーザーが新しい広告データでサイトに入ったとき、またはセッションタイムアウトが経過したときに、新しいユーザーセッションを作成すること。
- ページ訪問」イベントをSingularに送信すること。
これらの「ページ訪問」イベントとユーザーセッションは、ユーザーリテンションを計算し、リエンゲージメントアトリビューションを可能にするために不可欠です。
GTM ユーザー定義変数の設定
Singular SDKを初期化し、Singularにデータを送信できるようにするには、SDK Key、SDK Secret、Product IDをSingularConfigオブジェクトに提供する必要があります。以下のコードスニペットは、GTM User-Defined Variablesからこれらの値を取得するように設計されています。コードを実装する前に、Google Tag Manager でこれらの変数を作成し、正しい値を代入してください。
SDKキーとSDKシークレットの取得
- Singularアカウントにログインします。
- デベロッパーツール > SDKインテグレーション > SDKキーに移動します。
- 設定に使用するSDKキーとSDKシークレットをコピーします。
プロダクトIDの定義
- プロダクトIDはSingular内でお客様のウェブサイトを表します。com.exampleなど、プライマリウェブドメインの逆DNS表記を使用することをお勧めします。
- この値はSingularプラットフォーム全体でお客様のウェブサイトを識別し、Singularのアプリページで定義したアプリバンドルIDと一致する必要があります。
複数のサブドメインを持つウェブサイトの場合
ウェブサイトが複数のサブドメインにまたがっている場合(例:www.example.com と shop.example.com)、Singularプラットフォームではこれらは1つのアプリとして扱われます。この場合、すべてのサブドメインにcom.exampleのような統一されたプロダクトIDを使用します。
GTMユーザー定義変数の追加
Google Tag Managerでは、これらの値を保存するためのUser-Defined変数を作成し、必要に応じてコードスニペットで参照する必要があります:
変数を作成するには
- 変数を作成するには
- User-Defined Variablesセクションの"New"をクリックします。
- 変数に名前を付け、変数設定ボックスをクリックする。注:変数名はコードスニペットで値を参照する方法です。
- ユーティリティ]の[定数]オプションを選択します。
- Value form フィールドに、変数に対応する値を追加する。
上記のプロセスに従って、3つのユーザー定義変数を作成します:「Singular SDK Key"、"Singular Secret Key"、"Singular Product ID"。
初期化タグの作成
- SDK初期化を処理するカスタムHTMLタグを作成します。
- タグ名を"Singular - SDK Initialization"とする。
- HTMLウィンドウに以下のコードを挿入します。
<script> (function() { // Check if singularSdk is available before proceeding if (window.singularSdk) { var sdkKey = {{Singular SDK Key}}; var secretKey = {{Singular Secret Key}}; var productId = {{Singular Product ID}}; // Create Singular Banners config object & enable web-to-app support var bannersOptions = new BannersOptions().withWebToAppSupport(); // Create SDK config object with Singular Banners support var config = new SingularConfig(sdkKey, secretKey, productId) .withBannersSupport(bannersOptions); //Add additional option here try { // Initialize the SDK singularSdk.init(config); // Display the banner singularSdk.showBanner(); // Push event to dataLayer after initialization window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: 'singularSDKInitialized' }); } catch (error) { console.error('Error initializing Singular SDK:', error); } } else { console.warn('Singular SDK not loaded or available.'); } })(); </script>
上記のコードは初期化時にSingularバナーを有効にする基本的な例です。必要に応じてSingular Config Object Optionsを更新してください。
- Advanced Settings(詳細設定)で、Tag firing priority(タグ発射優先度)を98に設定します。
- Triggeringセクションで、Firing Trigger for a Custom Eventを追加します。
- トリガーに名前を付けます:"singularSDKLoaded" とします。
- トリガー・イベント名:"singularSDKLibraryLoaded" を指定します。
- タグを保存します。
GTM プレビューでテストする場合、Tag シーケンスは以下のようになります:
- Window Loaded イベントSingular - SDK Loader Tagが発生します。
- singularSDKLibraryLoadedイベントがdatalayerにプッシュされる。
- Singular -SDK Initialization タグが発行されます。
- singularSDKInitializedイベントがdatalayerにプッシュされる。
SingularConfig オプション
Singular が提供する様々な機能を有効にするための設定を追加したいと思うでしょう。設定を追加するには、SingularConfigオブジェクトの ".with" メソッドを使います。例えば
// Configure the SDK to pass the user ID to Singular
const config = new SingularConfig(sdkKey, sdkSecret, productId)
.withCustomUserId(userId);
SingularConfig メソッドリファレンス
利用可能なすべての ".with" メソッドを以下に示します。
メソッド | 説明 | 詳細 |
.withCustomUserId(customId) | ユーザーIDをSingularに送信する | ユーザーIDの設定 |
.withProductName(productName) | 商品の表示名(オプション | |
.withLogLevel(logLevel) | ロギング・レベルの設定: 0 - なし(デフォルト); 1 - 警告; 2 - 情報; 3 - デバッグ。 | |
.withSessionTimeoutInMinutes (timeout) | セッションタイムアウトを分単位で設定します(デフォルト:30分)。 |
|
.withAutoPersistentSingularDeviceId (ドメイン) | 自動クロスサブドメイントラッキングを有効にする | クッキーを使った自動永続化 |
.withPersistentSingularDeviceId (singularDeviceId) |
手動でのクロスサブドメイントラッキングを有効にする | SingularデバイスIDを手動で設定 |
.withInitFinishedCallback(callback) | SDK初期化完了時にコールバックを呼び出す | 初期化完了時にコールバック関数を呼び出す |
シングルページアプリケーション(SPA)のサポート
シングルページアプリケーション(SPA)の場合、ページのコンテンツが全ページをリロードすることなく動的に変更されるため、Googleタグマネージャ(GTM)の履歴変更トリガーは、ルート変更を検出するための優れたオプションです。3番目のカスタムHTMLタグを設定して、pageVisit()、hideBanner()、showBanner()などの適切なSingular SDKメソッドが、最初のページロード時ではなく、ルート変更時にのみ呼び出されるようにします。
GTMの設定:
履歴変更トリガの作成
- GTM で、新しいトリガーを作成します。
- トリガータイプを選択します:履歴変更
履歴変更用のカスタムHTMLタグを作成します。
- タグ名を"Singular - SPA Route Change"とする。
- HTMLウィンドウに以下のコードを挿入する。
<script> (function () { try { // Ensure Singular SDK is loaded if (window.singularSdk) { // Check if this is the first page load if (!window.singularFirstLoad) { // Mark the first page as processed window.singularFirstLoad = true; console.log('First page load detected. Singular pageVisit skipped.'); } else { // Call Singular's pageVisit for subsequent route changes singularSdk.pageVisit(); console.log('Singular pageVisit triggered for SPA route change.'); } // Hide the current banner singularSdk.hideBanner(); // Delay to ensure route change completion var delay = 200; // Delay in milliseconds setTimeout(function () { // Show the new banner for the current route singularSdk.showBanner(); console.log('Singular banner updated for new route.'); }, delay); } else { console.warn('Singular SDK is not defined. Ensure the SDK is loaded before using this script.'); } } catch (error) { console.error('Error during Singular SPA navigation:', error); } })(); </script>
- 履歴変更のトリガーをタグに割り当てます。
- 保存してテストする
ユーザーIDをSingularに送信する(オプション)
Singular SDKのメソッドを使用して、内部ユーザーIDをSingularに送信することができます。
注意: Singularのクロスデバイスソリューションを使用する場合は、すべてのプラットフォームでユーザーIDを収集する必要があります。
- ユーザーIDはどのような識別子でもかまいませんが、PII(個人を特定できる情報)を公開すべきではありません。例えば、ユーザーのメールアドレス、ユーザー名、電話番号は使用しないでください。Singularは、お客様のファーストパーティデータにのみユニークなハッシュ値を使用することを推奨します。
- Singularに渡すユーザーIDは、すべてのプラットフォーム(ウェブ/モバイル/PC/コンソール/オフライン)で同じ内部ユーザーIDを使用する必要があります。
- Singularはユーザーレベルのエクスポート、ETL、内部BIポストバック(設定されている場合)にユーザーIDを含めます。ユーザーIDはファーストパーティデータであり、Singularが他者と共有することはありません。
- ユーザーIDの値は、Singular SDKメソッドで設定されると、logout() メソッドで設定が解除されるまで、またはブラウザのローカルストレージが削除されるまで保持されます。ウェブサイトを閉じたり更新しても、ユーザーIDは解除されません。
- プライベート/インコグニートモードでは、ブラウザが閉じられるとローカルストレージが自動的に削除されるため、SDKはユーザーIDを永続化できません。
ユーザーIDを設定するには、login() メソッドを使用します。設定を解除するには(ユーザーがアカウントを「ログアウト」した場合など)、logout() メソッドを呼び出します。
注:複数のユーザが1つのデバイスを使用する場合、ログインとログアウトのたびにユーザIDを設定・解除するログアウトフローを実装することを推奨します。
ウェブサイト上でSingular SDKが初期化されたときにすでにユーザーIDがわかっている場合は、設定オブジェクトにユーザーIDを設定します。こうすることで、Singularは最初のセッションからユーザーIDを持つことができます。しかし、ユーザーIDは通常、ユーザーが登録するかログインを実行するまで使用できません。その場合、登録フローが完了した後にlogin() 。ユーザが認証フローを実行したときにdatalayerイベントをプッシュすることを推奨します。
- 認証を処理するカスタム HTML タグを作成します。
- タグ名を"Singular - Authentication Tag" とします。
- 以下のコードを HTML ウィンドウに挿入します。
<script> (function() { // Ensure sessionStorage is available if (typeof sessionStorage === 'undefined') { console.warn('sessionStorage is not supported in this environment.'); return; } // Check if the event has already been triggered in this session if (sessionStorage.getItem('sng_login_triggered')) { console.log('Singular SDK event already triggered this session.'); return; // Exit if the event was triggered before in this session } // Check if singularSdk is available and initialized if (window.singularSdk && typeof singularSdk.login === 'function' && typeof singularSdk.event === 'function') { // Dynamically fetch UserID if available (replace with actual method if applicable) var userID = window.userID || "User123456789"; // Example fallback value for userID try { // After Authentication, Pass the UserID as the Singular Custom User ID Value singularSdk.login(userID); // Send the Registration_Completed event (or similar event) singularSdk.event("sng_login"); // Set a flag in sessionStorage to indicate that the event was triggered sessionStorage.setItem('sng_login_triggered', 'true'); console.log('Singular SDK event triggered successfully.'); } catch (error) { console.error('Error triggering Singular SDK event:', error); } } else { console.warn('Singular SDK is not loaded or required methods are unavailable.'); } })(); </script>
- Triggering セクションの下に、カスタムイベント用の Firing Trigger を追加します。
- トリガーの名前を"singularAuthentication"
- ユーザがウェブサイト上で認証した後に利用可能なデータレイヤーのイベント名に対応するトリガー・イベント名を指定します。
- タグを保存する
上記のコード・スニペットは、バナーをサポートする GTM カスタム HTML タグを使用して Singular Native JavaScript WebSDK を実装する方法を示しています。イベントの送信や収益のトラッキングなど、さらなるカスタマイズについては、Native SDK のドキュメントで詳細な関数定義を参照してください。その後、必要に応じてカスタム HTML タグを追加して、実装を拡張することができます。