Home/
ロジック
project-onboarding-completion-logic.md

プロジェクト オンボーディング 完了判定

全体像

📌 新規プロジェクト作成ウィザードの進捗を管理し、「完了」判定をルールベースで行う
⚙️ ルールベース (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 問

#質問選択肢
Q1LP (ランディングページ) はありますか?はい / いいえ
Q2広告アカウントはお持ちですか? (Meta / Google のいずれか)はい / いいえ
  • スキルレベル判定: Q2 = はい のみ「中級者以上」、それ以外は「初心者」。Q1 はスキルレベル判定に使わない (チュートリアル UI の出し分けにのみ影響)。
  • Q1 = いいえ: 自社 LP が無いため、② で 他社 LP URL の入力補助 (下記) を使って暫定的にプロジェクトを開始できる。LP 解析結果は参考用扱い、自社 LP 用意後にプロジェクト設定から差し替え可。
  • Q2 = いいえ + Q1 = はい: ② 〜 バナー初回生成 まで通常進行。② で配信先媒体は尋ねない。完了後に「まずは Meta から」ステップガイドを表示。

② 必須入力

項目必須?バリデーション
プロジェクト名1〜80 字 / 重複可
LP URLhttp(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 で順に消化。いずれも実配信開始までに必須

順序ステップ起動詳細
1課金 (プラン確定)自動 (④)クレジット課金
2媒体接続ダッシュボード上の設定タスク UI媒体連携
3CV 定義ダッシュボード上の設定タスク UI下記

CV 定義

📌 媒体接続後に初めて媒体側の CV イベント一覧が引けるため、媒体接続の後に置く順序は固定。

項目必須?説明
配信目的リード獲得 / EC 購入 / アプリ DL / 来店 / 認知 など
主 CV イベント媒体側 (Meta Pixel / Google Tag) 捕捉済イベントから選択
目標 CPA運用アクション の発動閾値・予算アクション判定の基準
副 CV イベント×マイクロ CV (フォーム遷移 / カート追加 等)。KPI ダッシュボードに併記

CV 未定義時の挙動


関連フロー

フロー関係
LP 解析mermaid LP ノードで起動
バナー初回生成mermaid Banner ノードで起動 (コンプラ judge スキップ例外)
コンプラチェックバナー初回生成段階ではスキップ。CV 定義後の全生成で実行
クレジット課金 / オートチャージ④ でプラン確定 (チュートリアル完了で自動 + サイドナビから常時アクセス)
媒体連携ウィザード完了後の媒体接続ステップ
KPI ダッシュボードCV 定義完了で機能開始