プロジェクト オンボーディング 完了判定
全体像
📌 新規プロジェクト作成ウィザードの進捗を管理し、「完了」判定をルールベースで行う。
⚙️ ルールベース (LLM コールは LP 解析 / バナー初回生成 に委譲)。
%%{init: {'theme':'base','themeVariables':{'primaryColor':'#f6f8fa','primaryTextColor':'#1f2328','primaryBorderColor':'#d0d7de','lineColor':'#57606a','secondaryColor':'#eaeef2','tertiaryColor':'#ffffff','fontFamily':'sans-serif','fontSize':'14px'}}}%%
flowchart TD
Signup["サインアップ<br>(メール + パスワード)"] --> Plan["⚙️ free プラン付与<br>(試用 50 クレジット)"]
Plan --> Start["ウィザード起動"]
Start --> Q["① ユーザー振り分け 2 問<br>(LP 有無 / 広告アカウント有無)"]
Q --> Level{"⚙️ スキルレベル判定<br>(広告アカウント有無のみ)"}
Level -->|"広告アカウントなし"| Beg["初心者"]
Level -->|"広告アカウントあり"| Adv["中級者以上"]
Beg --> P0["② 必須入力<br>(プロジェクト名 + LP URL)"]
Adv --> P0
P0 --> Validate0["⚙️ 必須項目検証"]
Validate0 -->|"NG"| P0
Validate0 -->|"OK"| Backend["⚙️ バックエンド処理 (自動実行)<br>プロジェクト作成 (DB) → 🤖 LP 解析"]
Backend --> Banner["🤖 バナー初回生成<br>(オンボーディング 6 枚)"]
Banner --> Done2(["作成したプロジェクトのページに<br>リダイレクト"])
Done2 --> Tut{"③ スキルレベル別<br>チュートリアル分岐"}
Tut -->|"初心者"| TutB["全承認ボタン"]
Tut -->|"中級者以上"| TutA["ステップ 1〜4 を全案内"]
TutB -->|"全承認 or スキップ"| Billing{"④ 課金フロー起動<br>(課金済み判定 / 広告主の選択)"}
TutA -->|"完了 or スキップ"| Billing
Billing -->|"課金済み (skip)"| Dash(["作成したプロジェクトのページ"])
Billing -->|"プラン選択 → Stripe checkout"| Stripe["⚙️ Stripe 決済<br>(クレカ登録 + 3 ヶ月縛り同意)"]
Billing -->|"初期構築依頼"| SetupReq["📧 初期構築依頼メール送信<br>(運用代行リクエスト)"]
Billing -->|"後で"| Dash
Stripe --> Dash
SetupReq --> Dash
Dash -.->|"チュートリアル未完了"| Resume["⑤ 「チュートリアルを再開する」<br>ボタン (ダッシュボード上に表示)"]
Resume -.->|"クリック"| Tut
click Backend "./lp-analysis-logic.md" "LP 解析ロジックへ"
click Banner "./initial-banner-generation-logic.md" "バナー初回生成ロジックへ"
Signup:::form
Plan:::rule
Start:::form
Q:::form
Level:::rule
Beg:::out
Adv:::out
P0:::form
Validate0:::rule
Backend:::rule
Banner:::llm
Done2:::out
Tut:::rule
TutB:::out
TutA:::out
Billing:::rule
Stripe:::rule
SetupReq:::form
Dash:::out
Resume:::rule
classDef form fill:#e3f2fd,stroke:#1565c0,color:#0d47a1
classDef rule fill:#eceff1,stroke:#546e7a,color:#37474f
classDef llm fill:#fff8e1,stroke:#b8860b,color:#5d4037
classDef out fill:#e8f5e9,stroke:#2e7d32,color:#1b5e20
各補足は ①〜⑤ で本文と連動。バックエンド処理 (LP 解析) / バナー初回生成 の詳細はノードクリックで該当ロジックへ。フローで自明なノード (Signup / Plan / Done2 / Stripe / Dash 等) は本文での再説明を省く。
① ユーザー振り分け 2 問
| # | 質問 | 選択肢 |
|---|---|---|
| Q1 | LP (ランディングページ) はありますか? | はい / いいえ |
| Q2 | 広告アカウントはお持ちですか? (Meta / Google のいずれか) | はい / いいえ |
- スキルレベル判定: Q2 = はい のみ「中級者以上」、それ以外は「初心者」。Q1 はスキルレベル判定に使わない (チュートリアル UI の出し分けにのみ影響)。
- Q1 = いいえ: 自社 LP が無いため、② で 他社 LP URL の入力補助 (下記) を使って暫定的にプロジェクトを開始できる。LP 解析結果は参考用扱い、自社 LP 用意後にプロジェクト設定から差し替え可。
- Q2 = いいえ + Q1 = はい: ② 〜 バナー初回生成 まで通常進行。② で配信先媒体は尋ねない。完了後に「まずは Meta から」ステップガイドを表示。
② 必須入力
| 項目 | 必須? | バリデーション |
|---|---|---|
| プロジェクト名 | ◯ | 1〜80 字 / 重複可 |
| LP URL | ◯ | http(s) スキーム / 到達確認 (NG は警告のみ、続行可) |
必須項目未入力時は「次へ」ボタン disabled。
自社 LP がない場合の入力補助 (他社 LP URL 提案)
自社 LP を保有していないがオンボーディングを進めたい広告主向けに、他社 (競合 / 類似業種) の LP URL を借りる入力補助 UI を提供する。LP 解析は他社 LP に対して行い、訴求軸・業界カテゴリ・ターゲットを推定して暫定的に生成パイプラインを動かす。
| 項目 | 内容 |
|---|---|
| 起動条件 | LP URL 入力欄の「自社 LP がない方はこちら」リンクをクリック |
| 候補ソース | 業種カテゴリを選択 → 業界別の代表的な競合 LP URL を 5〜10 件サジェスト (社内キュレーション) |
| 検索補助 | キーワード (商材 / カテゴリ) で他社 LP を Google 検索風に絞り込み |
| 確定挙動 | 選択した URL を LP URL 欄に流し込む。プロジェクト名や業界カテゴリのプレースホルダもサジェスト元から自動補完 (上書き可) |
| 注意表示 | UI 上に「他社 LP を参照中」のバッジ + 「LP 解析結果は 参考用。自社 LP を後で差し替えてください」案内 |
| 後続フロー | 通常通り LP 解析 → バナー生成へ進行。自社 LP 差し替えはプロジェクト設定から再解析可 |
③ スキルレベル別 チュートリアル分岐
初心者向け (全承認ボタンのみ)
- メインカード: 「6 枚のバナーを生成しました」+ サムネ一覧
- プライマリ CTA: 「全て承認する」ボタン
- サブ CTA: 「あとで」(スキップ) リンク (控えめ)
- 非表示: 個別承認 / 修正 / 再生成 / カスタム生成 / リスティング案内
設計意図: 広告運用未経験者には「個別承認」「修正」などの選択肢は混乱を招くため、全承認ボタンを目立たせ判断保留したい人向けにのみスキップ導線を置く。
中級者以上向け (ステップ 1〜4 を全案内)
| ステップ | 内容 | 遷移先 |
|---|---|---|
| 1 | 生成バナーの確認 (個別承認 / 否認 / 修正) | クリエイティブ画面 |
| 2 | 媒体連携 (Meta / Google の OAuth) | 媒体連携画面 |
| 3 | 予算・配信設定 (月次予算 / 媒体別上限) | 予算設定画面 |
| 4 | 自動運用ルールの確認 (運用アクション / 自動精査 の ON/OFF) | 運用ルール画面 |
スキップ挙動 (両レベル共通)
- いつでもスキップ可。スキップしても ⑤ 「チュートリアルを再開する」ボタンから再開できる。
- 中級者の各ステップ「後で」: 当該ステップだけスキップ、残りは継続表示。
- 「全部スキップ」: 全ステップ閉じてダッシュボードへ。
- 全ステップ完了: バッジ「セットアップ完了」を付与。
- 進捗保存:
tutorial_progressテーブルにステップ別完了フラグを保持。
④ 課金フロー起動
入口で 課金状態を判定。既に standard / pro 契約済みなら課金 UI を出さずに直接 作成したプロジェクトのページ に遷移。未課金の場合のみ広告主に 3 分岐を提示。
課金済み (スキップ)
- 既に standard / pro を契約済みのアカウント (同一広告主が 2 件目以降のプロジェクトを作成した場合 等) は ④ をスルー。
- そのまま 作成したプロジェクトのページ に着地。
未課金 — 広告主の 3 分岐
| 分岐 | 経路 | プラン状態 |
|---|---|---|
| ① プラン選択 | プラン比較 UI → クレカ登録 → 3 ヶ月縛り同意 → Stripe checkout → 作成したプロジェクトのページへ着地 | standard / pro 確定 |
| ② 初期構築依頼 | リクエストフォーム送信 → AdXpand 運用チームへメール → 「担当者から折り返します」案内 → 作成したプロジェクトのページへ着地 | 確定しない (free のまま、運用チームが個別契約) |
| ③ 後で | 「後で」リンクで閉じる | free 継続 |
- サイドナビ常設: スキップ後でも「プラン / 課金」エントリからいつでも再起動可。
- 紹介クーポン: サインアップ時に保存した紹介者 ID があれば、standard 以上選択時にキックバック (詳細)。
② 初期構築依頼メール
a. 運用チーム宛メール
| 項目 | 値 |
|---|---|
| 送信先 | AdXpand 運用チーム (ops@adxpand.io 等) |
| 送信元 | 広告主のサインアップメールアドレス (Reply-To に設定) |
| 件名 | [初期構築依頼] {{advertiser_name}} - {{project_name}} |
| 本文 | プロジェクト情報 (LP URL / 業界 / 目標 CPA) + 広告主の自由記述 + LP 解析 / バナー生成段階のサマリ + 申込日時 / 広告主アカウント ID |
b. 広告主への自動返信メール (受付確認)
リクエスト送信と同時に広告主のメールアドレスへ自動返信。担当者対応開始までの空白時間に「受け付けたこと」を担保する。
| 項目 | 値 |
|---|---|
| 送信先 | 広告主のサインアップメールアドレス |
| 送信元 | noreply@adxpand.io (Reply-To: support@adxpand.io) |
| 件名 | [AdXpand] 初期構築依頼を受け付けました - {{project_name}} |
| 本文構成 | 1. 受付完了の挨拶 / 2. 受付した依頼内容のサマリ (プロジェクト名 / LP URL / 業界 / 目標 CPA) / 3. 今後の流れ (営業日 1〜2 日以内に担当から折り返し) / 4. 問い合わせ窓口 (support@adxpand.io) |
| 送信タイミング | 運用チーム宛メールの送信成功後、同期処理で即座に送信 |
| 失敗時挙動 | 自動返信失敗は警告ログに記録 (運用チーム宛メールが届いていれば依頼自体は成立しているため、ユーザー導線は止めない) |
⑤ 「チュートリアルを再開する」ボタン
チュートリアルが未完了の状態でダッシュボードに戻ってきた場合、ダッシュボード上部に 「チュートリアルを再開する」ボタン を表示。クリックで保存済の進捗 (tutorial_progress) を読み出し、最後にいたステップから ③ チュートリアル分岐に復帰する。
| 項目 | 値 |
|---|---|
| 表示条件 | tutorial_progress に未完了ステップがある (初心者: 全承認未操作 / 中級者: ステップ 1〜4 のいずれか未完了) |
| 配置 | ダッシュボード上部の常時表示エリア |
| ラベル | チュートリアルを再開する |
| 非表示条件 | 全ステップ完了 (バッジ「セットアップ完了」付与済み) |
媒体接続 / CV 定義の未消化案内は別 UI (下記「ウィザード完了後の必須ステップ」を参照)。本ボタンは チュートリアル再開専用 で、他の設定タスクには使わない。
ウィザード完了後の必須ステップ
ウィザード本体はバナー初回生成で完了扱い。課金フローはチュートリアル完了直後に自動起動 (④)、媒体接続 / CV 定義 はダッシュボード上の設定タスク UI で順に消化。いずれも実配信開始までに必須。
CV 定義
📌 媒体接続後に初めて媒体側の CV イベント一覧が引けるため、媒体接続の後に置く順序は固定。
| 項目 | 必須? | 説明 |
|---|---|---|
| 配信目的 | ◯ | リード獲得 / EC 購入 / アプリ DL / 来店 / 認知 など |
| 主 CV イベント | ◯ | 媒体側 (Meta Pixel / Google Tag) 捕捉済イベントから選択 |
| 目標 CPA | ◯ | 運用アクション の発動閾値・予算アクション判定の基準 |
| 副 CV イベント | × | マイクロ CV (フォーム遷移 / カート追加 等)。KPI ダッシュボードに併記 |
CV 未定義時の挙動
- KPI ダッシュボード: CPA / CVR 列に「CV 未定義」プレースホルダ、グラフ非活性
- 自動精査 / 運用アクション: 全アクション pending (CPA 倍率比較ができないため)
- 上位 2 位派生 / 言い換え: 勝ち判定 (cost 降順) は実行可、後段の予算アクションが止まる
- 媒体入稿: ブロック (CV 未定義での出稿不可)
関連フロー
| フロー | 関係 |
|---|---|
| LP 解析 | mermaid LP ノードで起動 |
| バナー初回生成 | mermaid Banner ノードで起動 (コンプラ judge スキップ例外) |
| コンプラチェック | バナー初回生成段階ではスキップ。CV 定義後の全生成で実行 |
| クレジット課金 / オートチャージ | ④ でプラン確定 (チュートリアル完了で自動 + サイドナビから常時アクセス) |
| 媒体連携 | ウィザード完了後の媒体接続ステップ |
| KPI ダッシュボード | CV 定義完了で機能開始 |