Treasure DataのProfiles APIをMarketoのWebパーソナライゼーション機能と統合して、すべての顧客データを活用し、顧客に完全にパーソナライズされた体験を提供できます。
JavaScriptとHTMLの基本知識
Treasure Dataの基本知識
Treasure Data JavaScript SDKの基本知識
Treasure Data Profiles APIの基本知識
MarketoのアドオンWebパーソナライゼーション機能へのアクセス
Treasure Data JavaScript SDKの使用には、Treasure Dataのサポートまたはサービスチームの指導が必要な場合があります。
TD Profiles APIをMarketoと統合するには、以下のセクションの手順を完了してください。
TD Profile APIで使用するためのMarketoの設定
JavaScript DFPタグとTreasure Dataタグの作成
- Marketoを開きます。
- Marketoアイコンを選択します。
- Webパーソナライゼーションを選択します。

- セグメントを選択します。

- 新規作成を選択します。

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

- 保存を選択します。
- キャンペーンに移動します。例:Marketoロゴ > キャンペーンを選択します。
- 新しいWebキャンペーンの作成を選択します。

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

- MarketのWebパーソナライゼーションJavaScriptタグをページに読み込みます。以下の例を参照し、Marketoドキュメント: Webパーソナライゼーションを参照してください
- Treasure DataのProfiles APIへの呼び出しを追加します。
- MarketoのRTPタグのUser Context機能を使用してレスポンスをMarketoに送信します。以下の例を参照し、Marketoドキュメント: User Contextを参照してください。
- コードをテストします。例:

MarketのWebパーソナライゼーション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');TD Profiles APIとMarketo Webパーソナライゼーションを統合するコード例
<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","setblockEvents","fetchServerCookie","trackEventfetchGlobalID","trackPageviewfetchUserSegments","trackClicksresetUUID","ready","setSignedMode","setAnonymousMode","set","trackEvent","trackPageview","fetchGlobalIDtrackClicks","fetchUserSegmentsunblockEvents"],an=0;a<sn<s.length;an++){var c=s[an];e[t].prototype[c]=r(c)}var no=document.createElement("script");no.type="text/javascript",no.async=!0,no.src=("https:"===document.location.protocol?"https:":"http:")+"//cdn.treasuredata.com/sdk/2.14/td.min.js";var ia=document.getElementsByTagName("script")[0];ia.parentNode.insertBefore(no,ia)}}("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>