バナーをサポートするSingularウェブサイトSDK(GTM)

ドキュメント

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ユーザー定義変数の設定

GTM ユーザー定義変数の設定

Singular SDKを初期化し、Singularにデータを送信できるようにするには、SDK Key、SDK Secret、Product IDをSingularConfigオブジェクトに提供する必要があります。以下のコードスニペットは、GTM User-Defined Variablesからこれらの値を取得するように設計されています。コードを実装する前に、Google Tag Manager でこれらの変数を作成し、正しい値を代入してください。

SDKキーとSDKシークレットの取得

  1. Singularアカウントにログインします。
  2. デベロッパーツール > SDKインテグレーション > SDKキーに移動します。
  3. 設定に使用する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変数を作成し、必要に応じてコードスニペットで参照する必要があります:

変数を作成するには

  1. 変数を作成するには
  2. User-Defined Variablesセクションの"New"をクリックします。
  3. 変数に名前を付け、変数設定ボックスをクリックする。注:変数名はコードスニペットで値を参照する方法です。
  4. ユーティリティ]の[定数]オプションを選択します。
  5. Value form フィールドに、変数に対応する値を追加する。
    udvariable.png

上記のプロセスに従って、3つのユーザー定義変数を作成します:「Singular SDK Key"、"Singular Secret Key"、"Singular Product ID"。
udvars.png

初期化タグを作成する。

初期化タグの作成

  • 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 シーケンスは以下のようになります:

  1. Window Loaded イベントSingular - SDK Loader Tagが発生します。
    gtm-loaded.png
  2. singularSDKLibraryLoadedイベントがdatalayerにプッシュされる。
  3. Singular -SDK Initialization タグが発行されます。
    gtm-init.png
  4. singularSDKInitializedイベントがdatalayerにプッシュされる。
SingularConfig オプション

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)のサポート

シングルページアプリケーション(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 タグを追加して、実装を拡張することができます。