対象範囲
本仕様 V1 は、STEPmini 無料版のMVPを対象とし、Googleスプレッドシート+GASで運用可能な最小構成を定義するものです。
目的は、見込み顧客や登録顧客に対して、起点日を基準としたステップメールを自動配信し、最低限の顧客管理・配信管理・停止管理を実現することです。
本バージョンでは、複雑な条件分岐、HTMLメール編集、高度分析、外部CRM連携は対象外としません。
無料版として「まず現場で回る」「導入しやすい」「保守しやすい」ことを優先します。
システム概要
STEPmini は、顧客マスタ、シナリオ設定、ステップ設定、配信履歴、各種設定をスプレッドシートで管理し、GAS の定期実行によって対象者へメール送信を行います。
送信判定は、顧客ごとの起点日と、各ステップに設定された経過日数を比較して行います。
メール送信はテキスト形式を前提とし、本文中の簡易差し込みに対応します。
また、送信済みの同一ステップは再送しない制御を行い、配信停止フラグが立っている顧客は送信対象から除外します。
機能仕様
1. 顧客管理
顧客情報は「顧客マスタ」シートで管理します。
V1で保持する項目は、顧客ID、氏名、メールアドレス、登録日または起点日、タグ、配信停止フラグとします。
顧客登録方法は、スプレッドシート直接入力、およびCSV相当の貼り付け運用を前提とします。
V1ではフォーム連携や自動同期は含めず、最低限のバリデーションとしてメール形式チェックを想定します。
2. シナリオ管理
シナリオは「シナリオ設定」シートで管理し、1レコードを1シナリオとして扱います。
保持項目は、シナリオID、シナリオ名、稼働状態(ON/OFF)、備考とします。
V1では、1顧客が複数シナリオに所属できる設計も可能ですが、初期実装を簡潔にするため、初期運用では1顧客1シナリオを基本運用とします。
複数シナリオ対応は将来拡張として考えます。
3. ステップ設定
ステップメールの内容は「ステップ設定」シートで管理します。
1レコードを1メールステップとし、シナリオID、ステップ番号、配信基準日数、件名、本文、送信ON/OFFを持たせます。
配信基準は「起点日からの経過日数」で統一します。
たとえば、1日後、3日後、7日後のように整数日で管理し、同一シナリオ内ではステップ番号順に意味を持たせます。
V1ではメール形式はテキストのみとし、件名・本文に対して最低限の差し込み変数を使用できます。
利用可能な差し込み項目は、少なくとも {name}、{company} 程度の基本項目とします。
4. 配信実行
GAS の時間主導トリガーにより、日次または1日複数回バッチを実行します。
実行時には、配信ON/OFFが有効であり、配信停止されておらず、起点日が存在し、当日がステップ条件に一致する顧客を抽出します。
抽出後、該当する件名・本文へ差し込み処理を行い、GmailApp または MailApp により送信します。
送信完了後は、同じ顧客に同じシナリオの同じステップを重複送信しないよう、配信履歴へ記録します。
V1では、同日に複数ステップが理論上該当する場合でも、該当分はすべて送信対象とします。
ただし運用上は、同日複数送信が起きないようステップ日数設計で回避する前提とします。
5. 配信履歴・エラーログ
送信結果は「配信履歴」シートに記録します。
記録項目は、送信日時、顧客ID、シナリオID、ステップ番号、送信先メールアドレス、送信結果、エラー内容とします。
送信結果は最低限「成功」「失敗」で区別し、失敗時は可能な範囲でエラーメッセージを記録します。
この履歴により、管理者は送信状況と失敗有無を確認できます。
V1では自動再送は行わず、失敗は履歴に残すのみとします。
再送要否は管理者判断とし、必要に応じて対象顧客データ修正後に別途対応する運用とします。
6. 配信停止・停止制御
顧客マスタに「配信停止フラグ」を持たせ、この値がONの顧客はすべてのシナリオ配信対象から除外します。
V1ではシナリオ単位の停止ではなく、顧客単位の全停止とします。
また、各シナリオ自体に稼働ON/OFFを設定でき、停止中のシナリオは送信対象にしません。
さらに、システム全体の緊急停止用として「配信ON/OFF」の共通設定を持たせ、トラブル時には全送信を停止できます。
7. 共通設定
「設定」シートに、送信元名、Reply-To、署名、テスト送信先アドレス、全体配信ON/OFFを保持します。
送信メールの末尾には設定された署名を自動付与します。
テスト送信は推奨機能として扱いますが、V1仕様上は項目を確保しておく前提とします。
これにより、次フェーズでの拡張がしやすくなります。
シート構成案
| シート名 | 役割 |
|---|---|
| 顧客マスタ | 顧客情報、起点日、停止状態を管理する。 |
| シナリオ設定 | シナリオ単位の基本情報と稼働状態を管理する。 |
| ステップ設定 | 各シナリオのメールステップ定義を管理する。 |
| 配信履歴 | 送信結果とエラー内容を記録する。 |
| 設定 | システム共通値と制御フラグを管理する。 |
この構成は、無料版として保守しやすく、ユーザーにも理解しやすい最小単位です。
運用ルール
顧客データにメールアドレスまたは起点日が欠けている場合、その顧客は送信対象外とします。
シナリオまたはステップがOFFの場合も送信対象外です。
配信対象判定は、当日の日付と起点日との差分日数がステップ設定値と一致したときに成立します。
送信済み判定は、配信履歴上に「同一顧客ID × 同一シナリオID × 同一ステップ番号」が存在するかどうかで行います。
管理者は日常運用として、顧客登録、配信停止操作、履歴確認、失敗原因確認をスプレッドシート上で行います。
V1では専用管理画面は持たず、スプレッドシートをそのまま管理UIとして使用します。
V1で含める推奨機能
V1.1 または同時実装候補として、次の推奨機能を残します。
これらは無料版の満足度を高めますが、MVP成立に必須ではないため、実装順序は後ろに置けます。
V1の判断
V1仕様としては、「起点日ベースの単純なステップメールを、安全に重複なく送れること」を成功条件とします。
この段階では高機能化より、送信漏れ・重複送信・停止漏れを起こさないことを優先します。
次に進めるべきなのは、仕様V1をさらに実装可能レベルへ落とすための次の2点です。
- シートごとの列定義。
- 配信判定ロジックの詳細フロー。
シートごとの列定義
1. 顧客マスタシート
シート名(想定) customers(表示名例:顧客マスタ)
customers(表示名例:顧客マスタ)
列定義
| 列 | 項目名(ヘッダ) | 型・例 | 必須 | 説明 |
|---|---|---|---|---|
| A | customer_id | 例:C0001 | 必須 | 顧客を一意に識別するID。手入力またはGASで採番。 |
| B | name | 山田太郎 | 任意 | 氏名。差し込み {name} で使用。 |
| C | company | 株式会社サンプル | 任意 | 会社名。差し込み {company} で使用。 |
| D | sample@example.com | 必須 | メールアドレス。形式チェック対象。 | |
| E | start_date | 2026/04/01 | 必須 | ステップ配信の起点日(登録日・申込日など)。 |
| F | tag | セミナー申込 / トライアル | 任意 | 簡易タグ。セグメント用のメモ。V1ではロジック未使用。 |
| G | stop_flag | TRUE/FALSE | 必須 | 配信停止フラグ。TRUE の場合は全シナリオから除外。 |
| H | memo | テキスト | 任意 | 顧客メモ。内部用コメント。 |
2. シナリオ設定シート
シート名(想定)scenarios(表示名例:シナリオ設定)
scenarios(表示名例:シナリオ設定)
列定義
| 列 | 項目名 | 型・例 | 必須 | 説明 |
|---|---|---|---|---|
| A | scenario_id | S001 | 必須 | シナリオID。ステップ設定・履歴と紐付けるキー。 |
| B | scenario_name | セミナー後フォロー7日間 | 必須 | シナリオ名。管理画面表示や集計で使用。 |
| C | active | TRUE/FALSE | 必須 | シナリオの稼働状態。FALSE の場合は全ステップ送信停止。 |
| D | description | テキスト | 任意 | シナリオの目的・対象などの説明。 |
3. ステップ設定シート
シート名(想定)steps(表示名例:ステップ設定)
steps(表示名例:ステップ設定)
列定義
| 列 | 項目名 | 型・例 | 必須 | 説明 |
|---|---|---|---|---|
| A | scenario_id | S001 | 必須 | 所属するシナリオID。scenarios と一致。 |
| B | step_no | 1, 2, 3… | 必須 | ステップ番号。シナリオ内での通し番号。 |
| C | days_from_start | 1, 3, 7… | 必須 | 起点日からの経過日数。例:1=1日後。 |
| D | enabled | TRUE/FALSE | 必須 | ステップ単位のON/OFF。FALSEなら送信しない。 |
| E | subject | 例:ご参加ありがとうございました | 必須 | メール件名。差し込み可。 |
| F | body | テキスト | 必須 | メール本文(テキスト)。{name} 等差し込み可。 |
| G | send_time | 09:00 | 任意 | 任意。将来拡張用の送信希望時刻(現状はコメント扱い)。 |
| H | memo | テキスト | 任意 | 管理用メモ。 |
※V1では送信トリガーは「日次実行」であり、send_time は仕様上は利用せず、将来拡張のための列として確保しておく想定です。
4. 配信履歴シート
シート名(想定)logs(表示名例:配信履歴)
logs(表示名例:配信履歴)
列定義
| 列 | 項目名 | 型・例 | 必須 | 説明 |
|---|---|---|---|---|
| A | sent_at | 2026/04/13 09:01:23 | 必須 | 送信日時(タイムスタンプ)。 |
| B | customer_id | C0001 | 必須 | 対象顧客ID。 |
| C | sample@example.com | 必須 | 送信先メールアドレス。 | |
| D | scenario_id | S001 | 必須 | シナリオID。 |
| E | step_no | 1 | 必須 | ステップ番号。 |
| F | result | SUCCESS / ERROR | 必須 | 送信結果。成功 or 失敗。 |
| G | error_message | Invalid email など | 任意 | エラー発生時のメッセージ内容。 |
| H | message_id | GmailメッセージID | 任意 | 可能なら保存。トレース用。 |
重複送信防止条件
「customer_id + scenario_id + step_no」の組み合わせが既に SUCCESS で存在する場合、そのステップは再送しないロジックとします。
5. 設定シート
シート名(想定)settings(表示名例:設定)
settings(表示名例:設定)
列定義(キー=値 方式)
| 列 | 項目 | 内容例 | 説明 |
|---|---|---|---|
| A1 | key | from_name | 1列目はキー固定。 |
| B1 | value | Apice STEPmini | 2列目に値。 |
| A2 | key | from_address | 送信元メール(必要なら)。 |
| B2 | value | no-reply@example.com | |
| A3 | key | reply_to | 返信先メールアドレス。 |
| B3 | value | support@example.com | |
| A4 | key | signature | メール署名。複数行可。 |
| B4 | value | --\nApice Technology | |
| A5 | key | global_active | TRUE/FALSE |
| B5 | value | TRUE | |
| A6 | key | test_email | test@example.com |
| B6 | value | test@example.com |
settings シートは「key/value」形式として、GAS側で辞書のように読み込む想定です。





コメント