Webフォームの入力項目を増やしすぎると、送信直前での離脱(フォーム離脱)が増加してしまいます。そのため、ユーザーの負担を減らす目的で「郵便番号」のみを入力させる運用が一般的です。
しかし、取得したデータが郵便番号のみで「都道府県」プロパティが空欄のままHubSpotに蓄積されると、運用上で次のような課題が生じます。
外部の郵便番号データベース(API)とHubSpotを連携させることで、これらの課題を自動的に解決できます。
HubSpot内でプロパティ値を処理・変更する方法には「標準機能」と「カスタムコード」の2通りがあります。
それぞれの特徴とデメリットを理解した上で選ぶことが重要です。
以下の表は、それぞれの仕組みやメリットをまとめていますので、参考にしてください。
| 項目 | 標準機能 (プロパティ設定 / フォーム機能) |
カスタムコード (Operations Hub利用) |
| 仕組み | HubSpot内部のデータやルールに基づき値を変更 | 外部APIと通信し、リアルタイムにデータを取得して変更 |
| メリット |
ノーコードで簡単に設定可能。 Operations Hubの有料契約が不要。 |
HubSpot内に存在しない最新の外部データを直接参照できる。 高度な条件分岐やデータ加工が可能。 |
| デメリット |
外部のデータベースを参照できない。 「郵便番号から都道府県を引く」ような辞書データを持てないため、今回のようなケースには対応不可。 |
Operations Hub Professional以上の契約が必要。 コード(Node.jsやPython)の記述が必要になるため、初期構築に一定の技術的知識を要する。 |
外部の郵便番号検索API(例:Zipcloudなど)を利用し、コンタクトの都道府県プロパティを自動更新する手順です。
HubSpotのプロパティ設定画面(設定 > プロパティ)を開き、データ連携に使用する項目を用意します。
郵便番号:単行テキスト(標準の zip プロパティ)
都道府県:単行テキストまたはドロップダウン選択肢(例: state プロパティ)
「コンタクトベース」の自動化ワークフローを新規作成し、登録トリガーを設定します。
トリガー条件:「郵便番号プロパティの値が知られている(入力されている)」かつ「都道府県プロパティの値が知られていない(空欄)」
必要なデータのみを処理対象にし、無駄な外部通信を抑えます。
ワークフローのアクション追加から「カスタムコードを実行」を選択します(言語は Node.js または Python)。
入力変数:HubSpotの「郵便番号(zip)」をコード内の変数に割り当てます。
API呼び出し:外部の郵便番号検索APIへリクエストを送信し、返ってきたレスポンスから都道府県名を取り出します。
データ出力:取得した都道府県名を、後続アクションで利用できる「出力変数」として定義します。
| const axios = require('axios'); exports.main = async (event, callback) => { const zipRaw = event.inputFields['zip'] || ''; console.log('受け取った郵便番号(raw):', zipRaw); const zip = zipRaw.replace(/[^0-9]/g, ''); console.log('数字のみに変換後:', zip); if (zip.length !== 7) { console.log('7桁ではないためスキップします'); callback({ outputFields: { prefecture: '' } }); return; } let prefecture = ''; try { const res = await axios.get('https://zipcloud.ibsnet.co.jp/api/search', { params: { zipcode: zip }, timeout: 5000 }); console.log('APIレスポンス:', JSON.stringify(res.data)); if (res.data.results && res.data.results.length > 0) { prefecture = res.data.results[0].address1; } else { console.log('該当する郵便番号データがありませんでした'); } } catch (err) { console.log('APIエラー:', err.message); if (err.response && (err.response.status === 429 || err.response.status >= 500)) { throw err; } } console.log('最終的なprefecture:', prefecture); callback({ outputFields: { prefecture: prefecture } }); }; |
カスタムコードアクションの直下に「プロパティ値をコピー」または「プロパティ値を設定」アクションを追加します。
コピー元:カスタムコードが出力したデータ(例: stateName)
コピー先:HubSpotの「都道府県」プロパティ
テスト用コンタクトに「1000001」などの郵便番号を入力し、ワークフローをテスト実行します。都道府県プロパティに「東京都」が正しくセットされることを確認したら、ワークフローをオンにします。
外部データベース(API)を活用したプロパティ更新の仕組みは、さまざまな業務プロセスに応用可能です。