ポイント機能を実装できますか?|HubSpot会員サイトよくある質問

目次
専用の開発が必要です。
HubSpotでユーザー向けポイントシステムを構築することは、技術的に十分に可能です。しかし、単にポイント残高を表示するだけでなく、消費や履歴表示といった高度な要件を満たすためには下記のプランが必要です。
高度な要件に必要なこと(下記2点の組み合わせが不可欠)
- 『Content Hub Enterprise』および『Data Hub(Professional / Enterprise)』
(特にカスタムオブジェクトとカスタムコードアクションの各機能) - APIを介したカスタム開発または外部連携ソリューション
二層構造のデータモデル
- 「ポイント残高」はコンタクトプロパティで管理
- 「履歴」はカスタムオブジェクトで管理
上記の二層構造のデータモデルが最も堅牢かつスケーラブルなソリューションとなります。これによりHubSpotの強力なCRM基盤を活用しつつ、高度なユーザーエンゲージメントシステムを構築することが可能になります。
HubSpotをプラットフォームとして、ユーザーのマイページでポイントの消費(残分)と付与を可視化するには「Content Hub Enterprise」「カスタムオブジェクト」および「Data Hub(旧Operations Hub)」の連携が不可欠です。
ユーザー向けマイページの構築
HubSpotには顧客とのやり取りを効率化するための機能「カスタマーポータル」が備わっています。カスタマーポータルは顧客が問い合わせた内容に対し、「自分に関するサポートの進捗」を確認できる専用のポータルを提供する機能です。これは顧客サポートの文脈では非常に有用であるものの、今回のポイントシステムのような、より汎用的なユーザー情報表示の要件に対しては十分な柔軟性を提供しません。
HubSpotの「非公開コンテンツ」機能を活用する
これに対し、HubSpotの「非公開コンテンツ」(Private Content)機能では特定のコンタクトリストのメンバーにのみアクセスを許可するWebページを作成できます。この機能で、登録招待メールを送信したり、ユーザーにセルフ登録を促したりすることが可能です。
この柔軟性が単なるチケット管理に留まらず、ポイント残高や履歴といった多岐にわたるユーザー固有の情報を表示する「マイページ」の核心となります。
HubSpotのCMS機能を活用する
HubSpotのContent Hubを使用することで、非公開コンテンツとして動的なウェブページを構築し、そこにユーザー固有の情報を呼び出して表示することが可能になります。したがって、マイページの構築には機能が限定されたカスタマーポータルではなく、汎用性とカスタマイズ性に富んだ非公開コンテンツ機能を主軸に据えることが要件を満たすための戦略的な選択となります
非公開コンテンツの対象となるHubSpotのプラン(詳細はこちら)
- Service Hub(Professional, Enterprise)
- Content Hub(Professional, Enterprise)
ポイントデータモデルの設計
ポイントシステムを機能させるためには、ユーザーのポイントデータをいかにCRM内で管理するかが鍵となります。この要件は「現在のポイント残高」と「過去のポイント履歴」という二つの異なる種類のデータを含んでいます。
現在のポイント残高を管理する
現在のポイント残高を管理するには、HubSpotのコンタクトオブジェクト上に「ポイント残高」という単一のカスタムプロパティ(数値型)を設けるのが最も効率的です。これによりコンタクトレコードに直接ポイントの値を持つことができ、後述するパーソナライゼーション機能で簡単にその値を表示できます。
過去のポイント残高を管理する
一方、ポイントの付与や消費といった各イベントの履歴を記録するには単一のプロパティでは対応できません。例えば下記のような事象を時系列で保存する必要があります。
- ユーザーが過去にいつポイントを獲得または使用したか
- そのポイントの量はどれくらいだったか
- そのトリガーは何だったのか
この場合、Content Hub Enterpriseで利用可能な「カスタムオブジェクト」が有効です。
カスタムオブジェクトの活用
ポイントを管理するための新しいカスタムオブジェクトを定義することで、各ポイントの動きをレコードとして管理します。このオブジェクトには以下のようなプロパティを設定する必要があります。
- 消費ポイント数(フィールドタイプ:数値)ポイント数(正負の数値)を管理します
- 日時(フィールドタイプ:日時)消費された日時の記録
- トリガー(フィールドタイプ:単行テキストやラジオボタンなど)購入、アンケート回答など
特定のコンタクトに関連するすべてのポイント履歴を一元管理
コンタクトの行動をトリガーに、新しい「ポイントトランザクション」レコードが作成され、そのコンタクトと関連付けられます。これにより、特定のコンタクトに関連する全てのポイント履歴を一元管理し、後で簡単に検索・表示することが可能になります。
この二層構造のデータモデルはユーザーのクエリが含む「残高」と「履歴」という二つの異なるデータ要件をHubSpotの機能とデータ構造の特性に合わせて最適に解決するアプローチです。このアプローチはContent Hub Enterpriseの利用を前提としていますが 、HubSpotのネイティブなデータ管理機能を最大限に活用し、堅牢で拡張性の高いシステムを構築するための最も効果的な道筋を示しています。
ポイント付与・消費ロジックの構築
ポイント付与(加算)ロジック
ポイントの自動付与はHubSpotのワークフロー機能を利用することで実現可能です。ワークフローは「フォーム送信」「特定のページ閲覧」「CTAクリック」「Eメール開封/クリック」といった多岐にわたるユーザー行動をトリガーとして自動的にアクションを実行できます。
例えば、「特定フォームの送信完了」をワークフローのトリガーに設定し、「ポイント残高」の値を加算するように設定できます。この際、ユーザーが複数回フォームを送信した場合など、特定のイベントが複数回発生するたびにポイントを付与したい場合は、リードスコアリングのロジックに示されるように「エンゲージメント条件に対する総合スコア」の考え方を応用することが可能です。
ご注意ください
ワークフローでポイント数を調整する場合、特定の数値を指定したポイント増減しかできないのでご注意ください。例えば、フォーム送信完了したら「+1」増加させる、といったことはできますが、コンタクトごとにポイント数を変えることができないので注意が必要です。
より複雑なポイント付与ロジックの場合
より複雑なポイント付与ロジック、例えば「購入金額の1%をポイントとして付与する」といった計算を伴う場合はData Hub(Professional/Enterprise)の「カスタムコードアクション」が非常に有効です。この機能はワークフロー内で複雑なJavaScriptまたはPythonのコードを実行することを可能にします。カスタムコード内でHubSpot APIを呼び出し、購入金額などのデータを参照して動的にポイントを計算し、「ポイント残高」を更新すると同時に新しい「ポイントトランザクション」カスタムオブジェクトレコードを作成することで詳細な履歴を残すことができます 。
ポイント消費(減算)ロジック
ポイント消費は付与よりも複雑な構築を要します
HubSpot ワークフローには 「数値プロパティの増減」 といったアクションが存在します(オブジェクト種類やワークフロー種別による制約はあります)。 そのため、単純な「−1」などはワークフローで実行できます。
とはいえ、残高チェック(残高不足のバリデーション)などを確実に担保したい場合はワークフローだけでは不十分であり、Data Hub のカスタムコードアクションや外部 API を使った処理を検討する必要があります。
ポイント消費のプロセス
ポイント消費のプロセスは複合的なアーキテクチャとして設計する必要があります。
- マイページに「ポイント消費」のためのフォームを設置します。ユーザーがこのフォームを送信したことをトリガーとしてワークフローを開始します
- ワークフロー内でWebhookアクションを設定し、フォーム送信情報を外部のサーバーレス関数(例: AWS Lambda, Google Cloud Functions)またはカスタムアプリケーションに送信します
外部関数がHubSpot APIを呼び出してユーザーの現在の「ポイント残高」を取得し、消費ポイント数を減算するロジックを実行します
この際、「現在のポイント残高が消費ポイント数を下回っていないか」といったバリデーションもこの外部ロジックで行うことが重要です - 減算処理が成功した場合、新しいポイント残高でコンタクトプロパティを更新します
- 同時に、消費イベントを示す新しい「ポイントトランザクション」カスタムオブジェクトレコードを作成することで、ポイントの動きがCRMのタイムラインに正確に記録されます
上記のアプローチにより、HubSpotの強力な自動化機能を活用しつつ、標準機能の限界を超える複雑なビジネスロジックを実現することが可能になります。
マイページでのポイント可視化の実装
構築したデータモデルに基づき、ユーザーのマイページ上で「ポイント残高と履歴」を動的に表示する方法について解説します。
ポイント残高の可視化
ユーザーの現在のポイント残高をマイページに表示するには、パーソナライゼーション・トークンが最もシンプルで効果的な方法です。
HubSpot CMSはHubL変数(パーソナライゼーション・トークン)を用いて、コンタクトプロパティの値をWebページに動的に表示する機能を提供します。
非公開コンテンツとして作成したマイページテンプレートのHTMLコードに のようなHubL変数を挿入することで「ポイント残高の可視化」を実現できます。
このコードはページがロードされる際にログインユーザーのコンタクトレコードから「total_points」プロパティの値を取得し、その数値を表示します。これにより、ユーザーはログインするだけで自身の最新のポイント残高をリアルタイムで確認できるようになります。
ポイント履歴の可視化
ポイント履歴の動的な可視化にはContent Hub Enterpriseで利用可能な動的ページ機能が不可欠です。
動的ページはHubDBやCRMオブジェクト(カスタムオブジェクトを含む)といった構造化データソースから複数のウェブページを自動的に生成します。この機能により、ポイントトランザクションのカスタムオブジェクトレコードをデータソースとして、ユーザーごとのポイント履歴一覧ページを自動的に生成できます 。
機能実装に必要なステップ
- カスタムオブジェクト「ポイントトランザクション」を動的ページのデータソースとして設定する
- ポイント履歴一覧を表示するためのテンプレートを作成し、ユーザー固有のデータ(ポイント数、日付など)を表示するカスタムモジュールを配置する
- カスタムモジュール内ではHubLのループ構文を使用して、関連付けられた「ポイントトランザクション」レコードをテーブル形式で一覧表示する
・これにより、ユーザーがマイページにアクセスする度にそのユーザーに紐づいた最新のポイント履歴が動的に生成・表示されるようになります
上記のアプローチは「ユーザー固有のページ」を効率的に生成・管理することを可能にし、手動での更新作業を大幅に削減します。
外部連携ソリューションの評価と代替案
HubSpotのネイティブ機能のみでポイントシステムを構築する以外にもHubSpotの『Marketplace』から既存のアプリを購入するという選択肢もあります。
外部アプリはHubSpotのネイティブ機能には存在しない専門的な機能セットを提供してくれます。HubSpotを「顧客データプラットフォーム」として活用しつつ、特定のビジネス要件を満たすシステムを迅速に構築できるメリットが外部アプリにはあります。
カスタム開発かアプリ導入か?プロジェクトにあった手段を選ぶ
ポイントシステムを構築する際にはフルカスタム開発とApp Marketplaceアプリ導入のどちらが自社の要件に適しているかを比較検討することが重要です。この意思決定はプロジェクトの予算、時間軸、そして将来的な拡張性によって大きく左右されます。
カスタム開発
カスタム開発は独自のロジックやUI/UXを実装できるため、極めて高い柔軟性を提供します。しかしその反面、初期の開発コストが高く、継続的なメンテナンス(API変更への対応、セキュリティ対策、バグ修正など)が必要となります。
アプリの導入
既存のアプリを導入するアプローチは開発コストと期間を大幅に削減できるという明確な利点があります。多くの場合、設定のみで利用でき、メンテナンスもプロバイダーが対応します。ただし、機能はアプリが提供する範囲に限定されるため、独自の複雑なロジックや特定のUI/UXの要件には対応できないかもしれません。
まとめ
HubSpotをプラットフォームとしてユーザー向けのポイントシステムを構築することは技術的に十分に可能です。しかし、単にポイント残高を表示するだけでなく、消費や履歴表示といった高度な要件を満たすためにはHubSpotのネイティブ機能に加えて下記の検討が不可欠です。
- 『Content Hub Enterprise』と『Data Hub(Professional / Enterprise)』という上位プランの機能(特にカスタムオブジェクトとカスタムコードアクション)
- APIを介した外部連携
最終的な意思決定はプロジェクトの予算、時間軸、そして将来的な拡張性の要件を慎重に比較検討した上で行うべきですが、当記事がその一助となれば幸いです。
HubSpotで構築する会員サイトについて
今の営業活動やサービス対応に課題を感じている企業様はHubSpotによるマイページ/会員サイトの提供をおすすめします。顧客との関係を強化し、ロイヤリティを向上させるための会員サイトの構築をご支援いたします。