
Webサイト上でサービスの利用開始手順や、お問い合わせからの流れを説明する際、ただのリストタグ(ul/li)やテキストの羅列ではユーザーに伝わりにくいことがあります。
今回は、HubSpotのDesign Managerで作成できる、視認性の高い「ステップフロー(進行手順)」モジュールを紹介します。このモジュールはレスポンシブに対応しており、PCでは横並び(またはカード型)、スマホでは縦並びで矢印付きのフローを表示します。


このモジュールの主な目的は、「ユーザーに次の行動(ネクストアクション)を明確にイメージさせること」です。
複雑な工程を「ステップ」として分割し、アイコンと番号を用いて視覚化することで、ユーザーの離脱を防ぎ、コンバージョン率(CVR)の向上に寄与します。また、HubSpotのフィールド機能を活用しているため、HTMLやCSSがわからないマーケティング担当者でも、ページエディタ上で簡単にステップの増減や色の変更が可能です。
このデザインは、以下のような場面で特に効果を発揮します。
このモジュールをページエディタ(ページ編集画面)に配置した際の設定項目と操作方法は以下の通りです。
1. 基本設定とスタイル (Style Settings)モジュール設定のトップまたはスタイルグループから、以下のデザインを一括で変更できます。ブランドカラーに合わせて調整してください。
2. ステップの追加と編集 (Steps)「Steps」グループはリピーター(繰り返しフィールド)になっているため、必要なステップ数だけ直感的に追加・削除が可能です。
以下は、Design Managerに実装するためのコード一式です。カスタムモジュールを新規作成し、各セクションに以下のコードを貼り付けてください。
フィールド定義です。スタイル設定のグループ化や、ステップを増減させるためのリピーター機能を含んでいます。
[
{
"allow_new_line": false,
"display_width": null,
"id": "acf72606-d674-5f90-274d-f9c9c98e6b77",
"label": "main_title",
"locked": false,
"name": "main_title",
"required": false,
"type": "text"
},
{
"children": [
{
"default": {
"color": null,
"opacity": null
},
"display_width": null,
"id": "3f2e92b0-dd50-01d2-4a95-8fb5702cc954",
"label": "text_color",
"locked": false,
"name": "text_color",
"required": false,
"type": "color"
},
{
"default": {
"color": null,
"opacity": null
},
"display_width": null,
"id": "e2ed5fe3-b347-78ce-c90d-2742e74c580d",
"label": "border_color",
"locked": false,
"name": "border_color",
"required": false,
"type": "color"
},
{
"display": "text",
"display_width": null,
"id": "ad9d333e-9eed-5663-82c8-5ad75cedb5cf",
"label": "border_width",
"locked": false,
"name": "border_width",
"required": false,
"step": 1,
"type": "number"
},
{
"display": "text",
"display_width": null,
"id": "1bafc3e9-47f2-b52b-004b-a4ae36be0c0b",
"label": "base_font_size",
"locked": false,
"name": "base_font_size",
"required": false,
"step": 1,
"type": "number"
}
],
"default": {
"text_color": {
"color": null,
"opacity": null
},
"border_color": {
"color": null,
"opacity": null
}
},
"display_width": null,
"expanded": false,
"group_occurrence_meta": null,
"id": "8ed3eabc-3007-ad43-8ae9-b5ed3c076cc0",
"label": "style_settings",
"locked": false,
"name": "style_settings",
"required": false,
"tab": "CONTENT",
"type": "group"
},
{
"children": [
{
"allow_new_line": false,
"display_width": null,
"id": "61df6f80-bb75-828e-ace3-d996467e4528",
"label": "step_label",
"locked": false,
"name": "step_label",
"required": false,
"type": "text"
},
{
"allow_new_line": false,
"display_width": null,
"id": "75918939-9e65-2c0d-8a9f-eca248270ae4",
"label": "step_number",
"locked": false,
"name": "step_number",
"required": false,
"type": "text"
},
{
"default": {},
"display_width": null,
"icon_set": "fontawesome-5.14.0",
"id": "f1c6fdf9-a639-f2cb-adcb-bc47aec3ca2a",
"label": "step_icon",
"locked": false,
"name": "step_icon",
"required": false,
"type": "icon"
},
{
"allow_new_line": false,
"display_width": null,
"id": "e263b998-b922-2d87-a978-fac5256b8572",
"label": "step_title",
"locked": false,
"name": "step_title",
"required": false,
"type": "text"
},
{
"display_width": null,
"id": "a085be67-2afd-839b-a162-9af69150c0f3",
"label": "step_description",
"locked": false,
"name": "step_description",
"required": false,
"type": "richtext"
}
],
"default": [],
"display_width": null,
"expanded": false,
"group_occurrence_meta": null,
"id": "a1f6d8a3-0a35-c9fa-2a9a-079247675a8c",
"label": "steps",
"locked": false,
"name": "steps",
"occurrence": {},
"required": false,
"tab": "CONTENT",
"type": "group"
}
]
{# CSS変数の定義 #}
{% require_css %}
<style>
.flow-module-{{ name }} {
--text-color: {{ module.style_settings.text_color.css }};
--border-color: {{ module.style_settings.border_color.css }};
--border-width: {{ module.style_settings.border_width }}px;
--font-size: {{ module.style_settings.base_font_size }}px;
}
</style>
{% end_require_css %}
<div class="flow-wrapper flow-module-{{ name }}">
<div class="flow-container">
{# メインタイトル #}
{% if module.main_title %}
<h2 class="flow-main-title">{{ module.main_title }}</h2>
{% endif %}
<div class="flow-steps-group">
{# ステップのループ処理 #}
{% for item in module.steps %}
{# ステップカード本体 #}
<div class="flow-card">
{# 左側: STEP番号とアイコン #}
<div class="flow-card-left">
<div class="flow-step-info">
<span class="step-label">{{ item.step_label }}</span>
<span class="step-number">{{ item.step_number }}</span>
</div>
{# アイコン表示エリア #}
<div class="step-icon-wrapper">
{% icon
name="{{ item.step_icon.name }}",
style="{{ item.step_icon.type }}",
unicode="{{ item.step_icon.unicode }}",
icon_set="{{ item.step_icon.icon_set }}"
%}
</div>
</div>
{# 右側: テキスト内容 #}
<div class="flow-card-right">
<h3 class="flow-step-title">{{ item.step_title }}</h3>
<div class="flow-step-desc">
{{ item.step_description }}
</div>
</div>
</div>
{# 矢印 (最後のステップ以外に表示) #}
{% unless loop.last %}
<div class="flow-arrow">
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 5V19" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M19 12L12 19L5 12" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</div>
{% endunless %}
{% endfor %}
</div>
</div>
</div>
/* 全体のラッパー */
.flow-wrapper {
width: 100%;
padding: 4rem 1rem;
display: flex;
justify-content: center;
color: var(--text-color, #333);
font-size: var(--font-size, 16px);
}
.flow-container {
width: 100%;
max-width: 1040px;
display: flex;
flex-direction: column;
gap: 2.5rem;
}
/* メインタイトル */
.flow-main-title {
font-size: 1.875rem;
font-weight: bold;
text-align: center;
margin-bottom: 1rem;
}
/* ステップグループ */
.flow-steps-group {
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
gap: 1.5rem;
}
/* 各ステップのカード */
.flow-card {
width: 100%;
display: flex;
flex-direction: column;
gap: 2rem;
padding: 2rem 1.5rem;
border-radius: 8px;
box-shadow: 2px 4px 14px rgba(0, 0, 0, 0.1);
border: var(--border-width, 1px) solid var(--border-color, #e5e7eb);
background-color: #fff;
}
@media (min-width: 768px) {
.flow-card {
flex-direction: row;
align-items: center;
}
}
/* 左側エリア (STEP番号+アイコン) */
.flow-card-left {
display: flex;
gap: 1rem;
align-items: center;
justify-content: center;
min-width: 120px;
}
@media (min-width: 768px) {
.flow-card-left {
gap: 0.5rem;
}
}
/* STEP文字と番号のコンテナ */
.flow-step-info {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.step-label {
font-size: 0.875rem;
font-weight: bold;
}
.step-number {
font-size: 1.5rem;
font-weight: bold;
line-height: 1.2;
}
/* アイコンのラッパーとSVGのサイズ指定 */
.step-icon-wrapper {
display: flex;
align-items: center;
justify-content: center;
width: 40px;
height: 40px;
}
/* ラッパー内のSVGに強制的にサイズを適用 */
.step-icon-wrapper svg {
width: 100% !important;
height: 100% !important;
object-fit: contain;
fill: currentColor; /* テキスト色を継承 */
}
/* 右側エリア (タイトル+説明) */
.flow-card-right {
flex: 1;
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.flow-step-title {
font-size: 1.125rem;
font-weight: bold;
margin: 0;
}
.flow-step-desc {
font-size: 0.875rem;
line-height: 1.5;
}
/* ステップ間の矢印 */
.flow-arrow {
width: 32px;
color: #9ca3af;
display: flex;
justify-content: center;
}
特に制限はありません。このモジュールはHubSpotの「リピーター(繰り返しフィールド)」機能を使用しているため、ページエディタ上の「Add」ボタンで必要な数だけステップを自由に追加・削除できます。また、作成した各ステップはドラッグ&ドロップで直感的に順序を入れ替えることができるため、フローの見直しや工程の変更にも柔軟に対応可能です。
いいえ、コーディングは不要です。モジュールの設定画面に「Style Settings(スタイル設定)」を用意しています。ここではテキストカラー、枠線の色、枠線の太さ、基本フォントサイズを一括で指定できます。HTMLやCSSの知識がない方でも、カラーピッカーや数値入力だけで、Webサイトのトーン&マナーに合わせたデザイン調整が可能です。
このモジュールは完全なレスポンシブ対応です。PCやタブレットなどの大きな画面では情報が見やすいようにレイアウトされますが、スマートフォンなどの小さな画面では自動的に「縦並び」のレイアウトに切り替わります。これにより、画面幅が狭くても文字やアイコンが小さくなりすぎず、ユーザーがストレスなく手順を読み進められるよう設計されています。