高度なパーソナライズ用のデータ拡張と AMPscript の使用
このセクションでは、高度な Marketing Cloud テクノロジであるデータ拡張と AMPscript の 2 つを使用して、メッセージをさらにパーソナライズして関連性を高めます。
データ拡張は、ほとんどすべてのデータ型の柔軟なテーブルであり、パーソナライズ設定やセグメント化に使用したり、送信元データソースとして使用したりできます。データ拡張は非常に強力な構造になっており、クラウドベースのマーケティングリレーショナルデータベースとみなすことができます。
AMPscript は Marketing Cloud のコンテンツスクリプト言語であり、メール、SMS メッセージ、ランディングページのコンテンツをプログラムでパーソナライズするために使用できます。AMPscript とデータ拡張は連動できるため、メッセージのデータ拡張からデータを読み取り、ランディングページのデータ拡張にデータを書き込むことができます。
この例では、データ拡張を使用して商品に関する情報を保存し、その情報を使用して前のセクションで送信したメールをさらにパーソナライズします。具体的には、登録者の以前の購入パターンを使用して、関連性の高い商品をメールに記載し次回の購入を促進します。
データ拡張を作成する
まず、Products というデータ拡張を作成して、商品に関する情報を保存します。この例では、商品ごとに一意の識別子、名前、価格、画像 URL があります。
| id | 名前 | 価格 | 画像 |
|---|---|---|---|
| ... | ... | ... | ... |
では、SDK を使用してデータ拡張の作成を開始しましょう。
1<?php
2
3require('sdk/ET_Client.php');
4
5
6
7$client = new ET_Client();
8
9
10
11$de = new ET_DataExtension();
12
13$de->authStub = $client;
14
15
16
17$de->props = array("Name" => "Products", "CustomerKey" => "products");
18
19
20
21// specify the data extension columns
22
23$de->columns = array();
24
25$de->columns[] = array("Name" => "id", "FieldType" => "Number", "IsPrimaryKey" => "true", "IsRequired" => "true");
26
27$de->columns[] = array("Name" => "name", "FieldType" => "Text","MaxLength" => "100");
28
29$de->columns[] = array("Name" => "price", "FieldType" => "Decimal", "Precision" => "18", "Scale" => "2");
30
31$de->columns[] = array("Name" => "image", "FieldType" => "Text","MaxLength" => "100");
32
33
34
35$response = $de->post();
36
37?>データ拡張にデータを取り込む
Products データ拡張を作成したら、一部の商品データをこのデータ拡張に追加します。具体的には、Products データベースに次の 2 つの新しい行を追加します。
| id | 名前 | 価格 | 画像 |
|---|---|---|---|
| 1234 | iPhone 5c | $99.95 | http://bit.ly/H76rMz |
| 5678 | iPhone 5c case | $29.95 | http://bit.ly/Hesctp |
この 2 つの新しい行を作成してみましょう。
1<?php
2
3require('sdk/ET_Client.php');
4
5
6
7$client = new ET_Client();
8
9
10
11$deRow = new ET_DataExtension_Row();
12
13$deRow->authStub = $client;
14
15
16
17// specify the name of the data extension
18
19$deRow->Name = "Products";
20
21
22
23// specify the values of data extension row #1
24
25$deRow->props = array("id" => "1234", "name" => "iPhone 5c", "price" => "99.95", "image" => "http://bit.ly/H76rMz");
26
27
28
29$response = $deRow->post();
30
31
32
33print_r($response);
34
35
36
37// specify the values of data extension row #2
38
39$deRow->props = array("id" => "5678", "name" => "iPhone 5c case", "price" => "29.95", "image" => "http://bit.ly/Hesctp");
40
41
42
43$response = $deRow->post();
44
45
46
47print_r($response);
48
49?>上記の方法は、単一行または小規模なデータに対して定期更新でリアルタイムまたはほぼリアルタイムの更新を行う、小規模から中規模のデータに最適です。たとえば、購入データが発生するごと、または定期的 (1 時間ごとなど) にデータを ExactTarget に送信する場合は、API アプローチを用いることが理想的です。
他のシナリオでは、データ拡張へのデータ一括読み込みが必要です。たとえば、数百万もの商品を定期的に ExactTarget に読み込む場合には、帯域幅や処理の観点から見て、ファイルベースアプローチの方が効率的となることがあります。このような大量のデータをデータ拡張に一括読み込みするには、FTP サイトに置かれた圧縮ファイルをインポートする方法が最も効率的です。
登録者データモデルを拡張する
次に、ここでは次回の購入に推奨する商品の ID を保存するために、別のプロファイル属性を作成します。
1<?php
2
3require('sdk/ET_Client.php');
4
5
6
7$client = new ET_Client();
8
9
10
11$profileAttribute = new ET_ProfileAttribute();
12
13$profileAttribute->authStub = $client;
14
15
16
17$profileAttribute->props = array("Name" => "productID", "PropertyType" => "double", "Description" => "ID of next product recommendation");
18
19
20
21$response = $profileAttribute->post();
22
23
24
25print_r($response);
26
27?>実際の使用事例では、過去の購入を分析し、登録者ごとに次回の購入に含める、最も関連性が高いと判断される商品の productID プロファイル属性を入力するバックグラウンドプロセスが稼動している場合があります。この例では、productID プロファイル属性を手動で入力する必要があります。これを 5678 に設定してみます。
1<?php
2
3require('sdk/ET_Client.php');
4
5
6
7$client = new ET_Client();
8
9
10
11$subscriber = new ET_Subscriber();
12
13$subscriber->authStub = $client;
14
15
16
17$subscriber->props = array(array('Name' => 'FirstName', 'Value' => 'YOUR_FIRST_NAME_GOES_HERE'));
18
19
20
21$response = $subscriber->post();
22
23
24
25print_r($response);
26
27?>AMPscript を使用してすべて処理する
最後に、プロファイル属性 productID を使用して Products データ拡張から商品に関する詳細を読み取る AMPscript を含めるようにメールを更新し、それらの詳細をメールメッセージに含めます。ここでは、既存のメールを更新するため、パッチを使用します。
1<?php
2
3require('sdk/ET_Client.php');
4
5
6
7$email = new ET_Email();
8
9$email->authStub = $client;
10
11
12
13$emailBody = <<<EMAIL
14
15<html>
16
17<body>
18
19<p>%%FirstName%%,</p>
20
21
22
23<p>We're pretty sure you would love the following product:</p>
24
25
26
27<p>
28
29 <b>%%=Lookup("Products", "name", "id", productID)=%%</b>
30
31 <br />
32
33 <i>%%=Lookup("Products", "price", "id", productID)=%%</i>
34
35</p>
36
37
38
39<img src="%%=Lookup("Products", "image", "id", productID)=%%" width="25%" />
40
41
42
43<p>We appreciate your continued business!</p>
44
45
46
47<small>
48
49 <p>This email was sent by:</p>
50
51
52
53 <p>
54
55 %%Member_Busname%%
56
57 <br />
58
59 %%Member_Addr%%
60
61 <br />
62
63 %%Member_City%%, %%Member_State%%, %%Member_PostalCode%%
64
65 <br />
66
67 %%Member_Country%%
68
69 </p>
70
71
72
73 <a href="%%profile_center_url%%">Profile Center</a>
74
75 <br />
76
77</small>
78
79
80
81<custom name="opencounter" type="tracking">
82
83</body>
84
85</html>
86
87EMAIL;
88
89
90
91// set the subject line and HTML email body
92
93$email->props = array("CustomerKey" => "123", "Subject" => "Hi %%FirstName%%, may we suggest for your next purchase...", "HTMLBody" => $emailBody);
94
95
96
97// update the ET_Email object
98
99$response = $email->patch();
100
101
102
103print_r($response);
104
105
106
107$response = new ET_Post($client, 'Send', array("List" => array("ID" => "YOUR_LIST_ID_GOES_HERE"), "Email" => array("CustomerKey" => "123")));
108
109
110
111print_r($response);
112
113?>上記のメールで使用される AMPscript は、Lookup 関数です。Lookup 関数は、データ拡張の単一行の単一項目値を返します。この例では、AMPscript は次のようになります。
1%%=Lookup("Products", "price", "id", productID)=%%出力は、次のようになります。
129.95この例では、Products データ拡張から price 項目の値を検索しています。Products データ拡張には主キーが 1 つあり、Lookup 関数の最後の 2 つのパラメータによって、その主キーの名前と値が指定されます。この例では、登録者のプロファイル属性 productID で指定された商品 ID データが、この主キーの値になります。
次のようなメールを受信します。
実際に操作してみる
ExactTarget テクノロジと概念をいくつか使用して、比較的高度なメールコミュニケーションの作成が完了しました。この練習問題には、よりパーソナライズされた有益な顧客タッチポイントを作成するため、組織のデータを使用する独創的な方法が含まれています。
このセクションで習得した多くの概念は、SMS などの他のチャネルでコンテンツをパーソナライズする場合にも活用できます。