Skip to content
Last updated

Marketo Web PersonalizationでProfiles APIを使用する

Treasure DataのProfiles APIトークンをMarketoのWeb Personalization機能と統合して、すべての顧客データを活用することで、顧客に完全にパーソナライズされた体験を提供できます。

前提条件

  • JavaScriptとHTMLの基本知識

  • Treasure Dataの基本知識

  • Treasure Data JavaScript SDKの基本知識

  • Treasure Data Profiles APIの基本知識

  • Marketo Web Personalizationの基本知識

  • MarketoのアドオンWeb Personalization機能へのアクセス。

Profiles APIトークンの作成

新しいトークンに名前を付ける

  1. TD Consoleを開きます。
  2. Audience Studioに移動してセグメントを選択します。
  3. フォルダーを選択します。
  4. 新規作成を選択します。
  5. Profile APIトークンを選択します。

  1. トークンの名前を入力し、オプションで説明を入力します。次へを選択します。

トークンの設定

名前と説明は、トークンに名前を付けたときのものが引き継がれます。変更することもできます。

  1. ルックアップキーを入力します。

ルックアップキーは、ペアレントセグメント内の一意の値を持つカラムです。このキーは正しいプロファイルを識別します。

Note

注: ルックアップキーの更新は、トークンワークフローが完了すると有効になります。

td_global_idをルックアップキーとして使用する場合、Profiles APIはAPIリクエストのクエリパラメータではなく、ブラウザのCookieからルックアップ値を取得します。ブラウザ外でのテストまたは検証の目的(例: Postman)では、異なるカラムを使用してルックアップ値を手動で渡してください。

  1. (オプション)最大5つの属性を入力します。

プロファイル属性は、クエリ時にプロファイルトークンから返すことができます。

  1. 以下のいずれかを選択します:
  • 次へを選択して続行し、セグメントを追加します。
  • 作成を選択してトークンを設定します。(後でセグメントを追加することもできます。)

トークンへのセグメント追加

  1. 以下のいずれかを選択します:
  • トークンの設定後、次へを選択します。
  • Audience Studio > フォルダー > Profiles APIトークンに移動します。

  1. Profiles APIトークンにセグメントを追加します。
  2. 保存を選択します。

TD Profiles APIとMarketoの統合

Profiles APIトークンとMarketoを統合するには、以下のセクションの手順を完了してください:

  • TD profile APIで使用するMarketoの設定

  • JavaScript DFPとTreasure Dataタグの作成

Profiles APIトークンで使用するMarketoの設定

  1. Marketoを開きます。
  2. Marketoアイコンを選択します。
  3. Web Personalizationを選択します。

  1. Segmentsを選択します。

  1. Create Newを選択します。

  1. Treasure Dataで作成したセグメント番号を指定します。

  1. Saveを選択します。
  2. Campaignに移動します。例: Marketoロゴ > Campaign。
  3. Create New Web Campaignを選択します。

  1. Treasure Dataで作成したセグメント名を選択します。
  2. コンテンツを設定します。例: Dialog、In Zone、Widget。

Marketo RTPタグとTreasure Dataタグの追加

  1. MarketのWeb Personalization JavaScriptタグをページに読み込みます。以下の例を参照し、Marketoドキュメント: Web Personalizationを参照してください。
  2. Profiles APIトークンへの呼び出しを追加します。
  3. MarketoのRTPタグのUser Context機能を使用して、レスポンスをMarketoに送信します。
  4. 以下の例を参照し、Marketoドキュメント: User Contextを参照してください。
  5. コードをテストします。例:

MarketのWeb Personalization JavaScriptタグをページに読み込むためのコード例:

<!-- Marketo RTP tag -->
(function(c,h,a,f,e,i){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
c[a].p=e;c[a].a=i;var g=h.createElement("script");g.async=true;g.type="text/javascript";
g.src=f;var b=h.getElementsByTagName("script")[0];b.parentNode.insertBefore(g,b)})
(window,document,"rtp","[rtp-js-cdn-url]","[pod-url]","[accountId]");
rtp('setAccount', 'YOUR_MARKETO_ACCOUNT_ID');

Profiles APIトークンとMarketo Web Personalizationを統合するためのコード例

<script type="text/javascript">
  <!-- Marketo RTP -->
  (function(c,h,a,f,e,i){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
  c[a].p=e;c[a].a=i;var g=h.createElement("script");g.async=true;g.type="text/javascript";
  g.src=f;var b=h.getElementsByTagName("script")[0];b.parentNode.insertBefore(g,b)})
  (window,document,"rtp","[rtp-js-cdn-url]","[pod-url]","[accountId]");
  rtp('setAccount', 'YOUR_MARKETO_ACCOUNT_ID');

  <!-- Treasure Data -->
  !function(t,e){if(void 0===e[t]){e[t]=function(){e[t].clients.push(this),this._init=[Array.prototype.slice.call(arguments)]},e[t].clients=[];for(var r=function(t){return function(){return this["_"+t]=this["_"+t]||[],this["_"+t].push(Array.prototype.slice.call(arguments)),this}},s=["addRecord","blockEvents","fetchServerCookie","fetchGlobalID","fetchUserSegments","resetUUID","ready","setSignedMode","setAnonymousMode","set","trackEvent","trackPageview","trackClicks","unblockEvents"],n=0;n<s.length;n++){var c=s[n];e[t].prototype[c]=r(c)}var o=document.createElement("script");o.type="text/javascript",o.async=!0,o.src=("https:"===document.location.protocol?"https:":"http:")+"//cdn.treasuredata.com/sdk/2.14/td.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(o,a)}}("Treasure",this);

  // Configure an instance for your database
  var td = new Treasure({
    host: 'in.treasuredata.com',
    writeKey: '[YOUR_WRITE_KEY]',
    database: '[YOUR_DB_NAME]'
  });

  // Enable cross-domain tracking
  td.set('$global', 'td_global_id', 'td_global_id');

  // Get segment number from TD and send it to Marketo's RTP
  var successCallback = function(values) {
    var segIdAll = [];
    for (var i = 0; i < values.length; i++) {
      segIdAll = segIdAll.concat(values[i].values);
    };
    var segId = segIdAll.filter(function (x,i,self) {
      return self.indexOf(x) === i;
    });
    // http://developers.marketo.com/javascript-api/web-personalization/user-context/
    rtp('set', 'customVar1', segId.join(";"));
  };
  var errorCallback = function(err) {
    console.log(err);
  };

  var trackPageviewSuccessCallback = function(){
    td.fetchUserSegments({
      audienceToken: ['YOUR_PROFILES_API_TOKEN_1', 'YOUR_PROFILES_API_TOKEN_2'],
      keys: {
        key_column_1: 'someValue',
        key_column_2: 'someOtherValue',
      }
    }, successCallback, errorCallback)
  };

  td.trackPageview([YOUR_TABLE_NAME], trackPageviewSuccessCallback);
</script>