ワークフローの「カスタムコード」を利用して、コンタクト担当者に自動的にHubSpotユーザーが登録されるフローを構築したいと思っているのですが、中々うまくいきません。
やりたいこととしては、
・フォームが送信される。
・送信されたタイミングで、フォームのURL末尾から5桁のIDを取得。そのIDに対してHubSpotユーザーIDを紐づける。
・紐づけられたHubSpotユーザーIDを「コンタクト担当者」に設定する。
下記のコードを作成し、実行しているのですが、うまくいきません。
言語は、Node.js 16.xで実行しています。
const hubspot = require(‘@hubspot/api-client’);
// 店舗番号に基づく担当者マッピング(ユーザーIDを使用)
const ownerMappings = {
‘12345’: ‘1234567890’ // 例: ‘12345’ の店舗番号に対して担当者のHubSpotユーザーIDを設定
// 他の店舗番号と担当者のIDを追加
};
// メイン関数
exports.main = async (event, callback) => {
const hubspotClient = new hubspot.Client({
accessToken: process.env.HUBSPOT_ACCESS_TOKEN // 環境変数からアクセストークンを取得
});
// デバッグ用ログ出力
console.log(‘Event inputFields:’, event.inputFields);
const contactId = event.inputFields[‘hs_object_id’]; // コンソールからコンタクトIDを取得
const storeCode = event.inputFields[‘utm_source’]; // フォームから送信された店舗番号を取得
console.log(‘Contact ID:’, contactId); // デバッグ出力
console.log(‘Store Code:’, storeCode); // デバッグ出力
if (!contactId) {
return callback({
outputFields: {
error_message: ‘Contact ID is missing or undefined.’
}
});
}
if (!storeCode) {
return callback({
outputFields: {
error_message: ‘Store code is missing or undefined.’
}
});
}
const ownerId = ownerMappings[storeCode];
if (!ownerId) {
return callback({
outputFields: {
error_message: `No owner mapping found for store code ${storeCode}`
}
});
}
try {
// 担当者プロパティの設定
const propertiesToUpdate = {
‘hubspot_owner_id’: ownerId // ‘hubspot_owner_id’ プロパティにHubSpotユーザーIDを設定
};
// コンセントオブジェクトのプロパティを更新
await hubspotClient.crm.contacts.basicApi.update(contactId, { properties: propertiesToUpdate });
callback({
outputFields: {
success: true,
contactId: contactId,
storeCode: storeCode,
hubspot_owner_id: ownerId
}
});
} catch (error) {
console.error(‘Error details:’, error.response ? error.response.body : error.message);
callback({
outputFields: {
error_message: `Error updating contact: ${error.message}`
}
});
}
};
もし、解決方法をご存じの方がいらっしゃいましたらお教えいただけますと幸いです。



