HubSpotのformには既に入力された値があればオートコンプリートしてくれる機能があります。
しかし、既に入力されているならForm画面にも遷移しなくても良いのではないかと思いました。
一覧→ダウンロード用入力form→ダウンロードリンクというサイトがあった時に、既にユーザーがform送信したことがあれば一覧画面からダウンロードさせることは可能ですか?
HubSpotのformには既に入力された値があればオートコンプリートしてくれる機能があります。
しかし、既に入力されているならForm画面にも遷移しなくても良いのではないかと思いました。
一覧→ダウンロード用入力form→ダウンロードリンクというサイトがあった時に、既にユーザーがform送信したことがあれば一覧画面からダウンロードさせることは可能ですか?
もしCTA機能が使えるライセンスをお持ちでしたら、スマートCTAを利用されてはいかがでしょうか。
あらかじめ動的リストを作成しておき、過去にフォーム送信されたことがあるという条件にしておきます。
そして、CTAの遷移先を、そのリストに含まれるかどうかで2通り作成すると良いと思います。
このCTAを、一覧ページに配置します。これで、フォームに遷移するか、クリックするとすぐにダウンロードするか2パターンの挙動となります。
ただし、定期的にフォームに入力いただくことによって、お客様情報を最新の状態にアップデートできるというメリットもあります。ケースバイケースでご検討されると良いと思います。
さすがオフィシャル、目から鱗が落ちました!
スマートCTAの利用が難しい場合の実装についてお答えします。
【一覧画面から直接ダウンロードリンクに飛ばす場合】
考え方として、フォームで収集予定のコンタクトプロパティの値が既知かどうかがわかればこれが実現できます。
1番確実なのはコンタクトがCMS Hub Enterpriseの会員機能でログイン済みである事なのですが、ユーザビリティ・プラン的にこれはなかなか難しいかと思います。
会員機能を使わない場合は、 {{ contact }} や {{ request_contact }} というHubLの予約変数を使うことによりこれを実現できる余地があります。
これらの変数からコンタクトプロパティの値を取得できますので、HubLにてフォームで収集予定の値が既知であればボタンのhref属性をダウンロードリンクに、そうでなければフォームページに…という具合です。
ただし上記予約変数で全てのコンタクトプロパティの値を取得できる訳ではありません。目的のコンタクトプロパティが予約変数に含まれていない場合は、代わりにいったんリストを作成する必要があります。
「どのリストに含まれているか」は{{ request_contact.list_memberships }} で取得できますので、フォームにて収集予定の値が全て既知であるコンタクトの動的リスト(或いは特定のフォーム送信済みの動的リスト)を作成し、この動的リストのIDが{{ request_contact.list_memberships }} に含まれていればフォーム送信済みと見なすことができます。
【いったんフォームページを開いたうえでリダイレクトさせる場合】
上記のやり方の他にも、いったんフォームページを開いたうえでリダイレクトさせるパターンも考えられます。
この場合は上記予約変数だけでなく、JavaScriptにてフォームに既に既知の値が入っているかどうかでフォーム送信済みかどうかを判断できます。
注意点としてJavaScriptにてフォーム要素上の値を収集するにはフォームがレンダリングされた後に実行しなければなりませんので、フォームが発行するグローバルイベントを利用します。
ただフォームページは1ページ、ダウンロードリンクは複数の場合だとリダイレクト先のURLをフォームページでも保持しなければなりませんので、一覧ページからどのようにそれを持ってくるのは少し考えなければなりませんね…(愚直にURLのクエリ文字列にくっつけてしまうとフォーム未送信のユーザーにも見えてしまうので、ユーザーから見えづらいCookieやLocalStorageなどに格納する必要がありそうです)。
後者は流れ、実装ともに少し冗長な気がするので、できれば前者で実装できると良さそうです。ご参考までm(_ _)m
@RyoShirai
HubSpot上でのソリューションではないのですが、お悩みのポイントにこれが使えるのではと思いましたのでpipedriveマスターパートナーのMer Inc澤口氏の記事を共有させていただきます。
といった旨です。