プロファイルへのカスタム属性の追加
カスタムプロファイル属性を使用すると、デフォルトのcustomerIdおよびemailId以外のIDを使用して、Experience Platformでの顧客プロファイルのIDを強化できます。 これらのIDを追加することで、より正確なカスタマーマッチングと、CommerceプラットフォームとExperience Platform間のデータ統合の向上が可能になります。
NOTE
注文にカスタム属性🔗を追加する方法について説明します。
Adobe Workfrontの利点
- 複数のIDを使用して顧客とのマッチングを向上。
- ビジネスニーズにもとづいて、カスタムフィールドをID属性にマッピングできます。
- 重複するプロファイルを減らし、顧客データの精度を向上させます。
- 的を絞った顧客体験を実現。
前提条件
カスタム ID属性を実装する前に、次のことを確認してください。
手順1:Experience Platform スキーマの設定
-
Adobe Experience Platformにログインし、Commerce スキーマを選択します。
-
hashedPID(文字列) - プライマリ ID ハッシュhashedSID(文字列) -セカンダリID ハッシュprimaryID(文字列) - プライマリ ID フィールド名secondaryID(文字列) -セカンダリID フィールド名
NOTE
必要に応じて、フィールド名を正確にカスタマイズできます。 この例では、ID フィールドとして
hashedPIDとhashedSIDを使用しています。手順2:プロセッサクラスの作成
カスタムモジュールに次のPHP プロセッサクラスを作成します。
AddressCustomHashedId クラス
このプロセッサーは、顧客アドレスに対してparent_idとentity_idをハッシュします。
<?php declare(strict_types=1);
namespace Magento\AepCustomerCustomAttributes\Event;
use Magento\AdobeCommerceEventsClient\Event\Event;
use Magento\AdobeCommerceEventsClient\Event\Processor\EventDataProcessorInterface;
class AddressCustomHashedId implements EventDataProcessorInterface
{
public function process(Event $event, array $eventData): array
{
$pid = $eventData['parent_id'] ?? '';
$sid = $eventData['entity_id'] ?? '';
$eventData['profileAttributes']['hashedPID'] = hash('sha256', (string)$pid);
$eventData['profileAttributes']['hashedSID'] = hash('sha256', (string)$sid);
return $eventData;
}
}
AddressCustomId クラス
このプロセッサーは、アドレスイベントのプライマリ ID フィールド名とセカンダリ ID フィールド名を設定します。
<?php declare(strict_types=1);
namespace Magento\AepCustomerCustomAttributes\Event;
use Magento\AdobeCommerceEventsClient\Event\Event;
use Magento\AdobeCommerceEventsClient\Event\Processor\EventDataProcessorInterface;
class AddressCustomId implements EventDataProcessorInterface
{
public function process(Event $event, array $eventData): array
{
$eventData['profileAttributes']['primaryID'] = 'hashedPID';
$eventData['profileAttributes']['secondaryID'] = 'hashedSID';
// Ensure both IDs are present, otherwise, Commerce will default primary to customerId and secondary to emailId
if (empty($eventData['profileAttributes']['primaryID']) || empty($eventData['profileAttributes']['secondaryID'])) {
$eventData['profileAttributes']['primaryID'] = $eventData['customerId'] ?? '';
$eventData['profileAttributes']['secondaryID'] = $eventData['email'] ?? '';
}
return $eventData;
}
}
CustomHashedId クラス
このプロセッサーは、顧客プロファイルに対してentity_idとemailをハッシュします。
<?php declare(strict_types=1);
namespace Magento\AepCustomerCustomAttributes\Event;
use Magento\AdobeCommerceEventsClient\Event\Event;
use Magento\AdobeCommerceEventsClient\Event\Processor\EventDataProcessorInterface;
class CustomHashedId implements EventDataProcessorInterface
{
public function process(Event $event, array $eventData): array
{
$pid = $eventData['entity_id'] ?? '';
$sid = $eventData['email'] ?? '';
$eventData['profileAttributes']['hashedPID'] = hash('sha256', (string)$pid);
$eventData['profileAttributes']['hashedSID'] = hash('sha256', (string)$sid);
return $eventData;
}
}
CustomId クラス
このプロセッサーは、プロファイルイベントのプライマリ ID フィールド名とセカンダリ ID フィールド名を設定します。
<?php declare(strict_types=1);
namespace Magento\AepCustomerCustomAttributes\Event;
use Magento\AdobeCommerceEventsClient\Event\Event;
use Magento\AdobeCommerceEventsClient\Event\Processor\EventDataProcessorInterface;
class CustomId implements EventDataProcessorInterface
{
public function process(Event $event, array $eventData): array
{
$eventData['profileAttributes']['primaryID'] = 'hashedPID';
$eventData['profileAttributes']['secondaryID'] = 'hashedSID';
// Ensure both IDs are present, otherwise, Commerce will default primary to customerId and secondary to emailId
if (empty($eventData['profileAttributes']['primaryID']) || empty($eventData['profileAttributes']['secondaryID'])) {
$eventData['profileAttributes']['primaryID'] = $eventData['customerId'] ?? '';
$eventData['profileAttributes']['secondaryID'] = $eventData['email'] ?? '';
}
return $eventData;
}
}
NOTE
primaryIDとsecondaryIDの両方がイベントデータで送信されていることを確認してください。 いずれかのオプションがない場合、Commerceのデフォルトは次のようになります。- primaryID = customerId
- secondaryID = emailId
次の2つの手順を完了した後:
- Experience PlatformのCommerce スキーマは、プロファイルイベントデータのカスタム IDを適切に取り込むことができます。
- CommerceのPHP コード内のプロセッサークラスは、プロファイルイベントからカスタム ID情報を収集します。
Commerceから送信されるプロファイルイベントデータには、カスタム ID情報が含まれます。
データ形式の例
次の例では、プロファイル属性と完全な顧客プロファイルデータ形式の両方で、カスタム ID属性に期待されるJSON構造を示します。
プロファイル属性形式
{
"profileAttributes": {
"hashedPID": "d80eae6e96d148b3b2abbbc6760077b66c4ea071f847dab573d507a32c4d99a5",
"hashedSID": "fa7359e288ce3104bd4317a4fb75f08c4a5feec472de2e415b8260fb3567ebe6",
"warehousecode": "1256",
"method": "ina2354",
"source": "commerce",
"primaryID": "hashedPID",
"secondaryID": "hashedSID"
}
}
顧客プロファイルの全体構造
{
"id": 137,
"entity_id": "137",
"created_at": "2025-02-10 20:10:30",
"updated_at": "2022-02-10 20:10:31",
"email": "customer@example.com",
"firstname": "John",
"lastname": "Doe",
"dob": "2007-10-01 00:00:00",
"profileAttributes": {
"hashedPID": "d80eae6e96d148b3b2abbbc6760077b66c4ea071f847dab573d507a32c4d99a5",
"hashedSID": "fa7359e288ce3104bd4317a4fb75f08c4a5feec472de2e415b8260fb3567ebe6",
"primaryID": "137",
"secondaryID": "customer@example.com"
},
"_metadata": {
"commerceEdition": "Adobe Commerce",
"commerceVersion": "2.4.6",
"eventsClientVersion": "1.9.0",
"storeId": "1",
"websiteId": "1",
"storeGroupId": "1",
"websiteCode": "base",
"storeCode": "default",
"storeViewCode": "main_website_store"
}
}
トラブルシューティング
primaryIDまたはsecondaryIDがありません
- 症状: データは、カスタム値の代わりにcustomerId/emailIdにデフォルトで設定されます。
- 解決策:
primaryIDとsecondaryIDの両方がprofileAttributesオブジェクトに設定されていることを確認します。
無効なハッシュ値
- 症状: ハッシュ値が空であるか、形式が正しくありません。
- 解決策: ソースフィールド (
parent_id、entity_id、email)に有効なデータが含まれていることを確認してからハッシュします。
プロセッサーが実行されない
- 症状: カスタム属性がイベントデータに表示されません。
- 解決策: プロセッサが
events.xmlに正しく登録され、モジュールが有効になっていることを確認してください。
Experience Platform スキーマの不一致
- 現象: データがExperience Platformまたはスキーマ検証エラーに表示されません。
- 解決策: Experience Platform スキーマに、正しいデータタイプを持つカスタム ID フィールドが含まれていることを確認します。
recommendation-more-help
commerce-help-data-connection