<!-- https://unlockos.io/ja/manual/membership-setup-guide -->

# メンバーシップ セットアップガイド（はじめから会員募集開始まで）

本ガイドは **シナリオ形式で最初に読むべきマニュアル** です。メンバーシップ（月額・年額の会員サービス）を初めて設定する方は、まずこのページを上から順にたどってください。

> **設計思想について:** UnlockOS のメンバーシップは、単なる「サブスク課金」ではなく **「継続課金 × 物理アクセス権 × 利用上限（クォータ）」をひとまとめに管理する** 仕組みです。会員は毎回予約する必要がなく、加入している間は会員アプリの **SpaceCard** からワンタップでチェックインできます。「月20回まで」「1日8時間まで」といった上限も設計時点で組み込まれており、超過分を **拒否する（ブロック）** か **追加課金する** かを選べます。本ガイドの手順は、この前提に立って組み立てられています。

---

## 全体像（8ステップ）

会員募集を開始するには、おおむね以下の順序で設定します。前のステップに依存するものが多いため、 **番号順に進める** ことを強く推奨します。

```
[1] Stripe連携 ──────────┐
[2] Stripeカスタマーポータル設定
                         │
                         ├──→ [3] メンバーシッププラン作成 ──→ [8] テスト加入
                         │         ├ 申請フロー                    │
                         │         ├ クォータ（利用上限）           │
                         │         └ 対象予約プラン（任意）          │
                         │                                          │
[4] 会員がチェックインするスペース（チェックイン設定）──────────────┤
[5] 申込フォーム（任意・先払い/申請先行どちらでも設定可）───────────┤
[6] 会員アプリURLの確認・配布 ────────────────────────────────────┤
[7] 承認運用の確認（申請先行 / 事後承認の場合）────────────────────┘
```

| # | ステップ | 必須 / 任意 | 目安時間 | 依存 |
|---|---------|------------|---------|------|
| 1 | Stripe連携 | 必須（有料プランを扱う場合） | 15分 | なし |
| 2 | Stripe カスタマーポータル設定 | 必須（有料プランを扱う場合） | 10分 | 1 |
| 3 | メンバーシッププラン作成（申請フロー / クォータ / 超過ポリシー） | 必須 | 15〜30分 | 1 |
| 4 | 会員がチェックインするスペース（チェックイン設定）の用意 | 必須（会員に入室させる場合） | 15分 | — |
| 5 | 申込フォーム（インテークフォーム） | 任意 | 10分 | 3 |
| 6 | 会員アプリURLの確認・配布 | 必須 | 5分 | 3 |
| 7 | 承認運用の確認（申請先行 / 事後承認の場合） | 条件付き必須 | 5分 | 3 |
| 8 | 会員アプリでテスト加入 | 必須 | 10分 | 1〜4（および任意で5, 6, 7） |

**合計目安: 60〜90分**（プラン数により変動）

---

## ステップ1: Stripe連携

### 目的

有料メンバーシップの **クレジットカード定期課金** を有効化します。無料プランのみで運用する場合は本ステップをスキップできます。

> メンバーシップの料金・請求間隔は Stripe と連動します。Stripe 連携が無いと有料プランは作成できません。

### 前提

- Stripe アカウントを持っていること（無料で作成できます）
- Stripe ダッシュボードで以下のキーを取得済みであること:
  - **公開可能キー (Publishable Key)** — `pk_test_...` または `pk_live_...`
  - **シークレットキー (Secret Key)** — `sk_test_...` または `sk_live_...`
  - **Webhook Secret** — `whsec_...`（Webhook を使う場合）

### 手順

1. メインアプリ左メニューから **アプリ連携** を開く
2. 画面上部のタブから **Stripe** を選択
3. **基本設定** 欄に Stripe ダッシュボードからコピーした3つのキーを貼り付け
4. **決済設定** 欄でモード（テストモード / 本番モード）と通貨を選択
5. **保存** をクリック

### 確認

- Stripe決済システムカードのバッジが **「接続済み」**（緑）になっている

### 詳細

- [ロック接続ヘルプ（Stripeタブ）](lock-connection.md#stripe決済連携タブ)

> **テストモード vs 本番モード:** 動作確認は必ずテストモード（`pk_test_*` / `sk_test_*`）で行ってください。本番モードに切り替えるのは、ステップ8のテスト加入成功後を推奨します。テストモードと本番モードは Stripe 側でデータが分離されているため、次のステップ2（カスタマーポータル）もそれぞれで設定が必要です。

---

## ステップ2: Stripe カスタマーポータル設定

### 目的

会員がカードの変更や領収書のダウンロードを行えるよう、Stripe ダッシュボードで **Customer Portal** を有効化します。この設定が未完了だと、会員がお支払い履歴画面の「カード・請求書を管理」ボタンを押した際に Stripe からエラーが返ります。

> 無料プランのみの施設はスキップできます。

### 前提

- ステップ1（Stripe連携）が完了していること
- Stripe ダッシュボードにログインできること

### 手順

1. [Stripe Dashboard](https://dashboard.stripe.com/) にログイン
2. **Settings** → **Billing** → **Customer portal** を開く
3. 以下を設定:

| 項目 | 設定 | 理由 |
|------|------|------|
| **Payment methods** | ✅ 有効 | 会員がカードを追加・変更・削除できるようにする |
| **Invoice history** | ✅ 有効 | 会員が領収書・請求書の PDF をダウンロードできるようにする |
| **Subscriptions > Cancel subscriptions** | ❌ 無効 | 退会は UnlockOS の専用フローで処理するため |
| **Subscriptions > Switch plans** | ❌ 無効 | プラン変更は UnlockOS で管理するため |

4. **Save** をクリック

### 確認

- 設定完了後、会員アプリの **お支払い履歴** ページに「カード・請求書を管理」ボタンが表示される

> **注意:** この設定は **Stripe アカウント全体** に適用されます（施設単位ではありません）。テストモードと本番モードで **別々に** 設定が必要です。

### 詳細

- [メンバーシッププランと利用制限（Stripe カスタマーポータルの設定）](membership-plans.md#stripe-カスタマーポータルの設定施設オーナー必須)

---

## ステップ3: メンバーシッププランの作成

### 目的

会員に販売する **月額・年額プラン** を作成します。プランには申請フロー、利用上限（クォータ）、超過時のポリシーをまとめて設定します。

### 前提

- 有料プランの場合はステップ1（Stripe連携）が完了していること
- 無料プランのみの場合は前提なし

### 手順

1. メインアプリ左メニューから **メンバーシップ** タブを開く
2. **新規プラン作成** ボタンをクリック（プランの詳細入力ページに移動します）
3. **基本情報** を入力:
   - プラン名（例: 「コワーキング スタンダード」）
   - 説明文（会員に見せる特典・詳細）
   - **料金** と **請求間隔**（月次 / 年次）
   - 申請フロー（下記「3-1」参照）
4. **利用制限（クォータ）** を入力（下記「3-2」参照）
5. **超過時のポリシー** を選択（下記「3-3」参照）
6. 必要なら **対象予約プラン**（無料枠の適用範囲）を設定（下記「3-4」参照）
7. **保存**

> **重要 — 料金と請求間隔は作成後に変更できません。** ラベル横に「(作成後は変更不可)」と表示されます。これは Stripe 連携の都合によるものです。金額や周期を変えたい場合は新しいプランを作り直してください。

### 3-1. 申請フロー

入会申込から有効化までの流れを選びます。

| フロー | 内容 |
|--------|------|
| **先払い**（デフォルト） | 申し込み時に決済します。`auto_approve` が OFF の場合、スタッフが手動承認するまで `pending` 状態です。 |
| **申請先行** | 決済なしで申請が送信されます。スタッフが **承認待ち** タブで審査し、承認後に申請者へメールが届き、決済を完了することで有効化されます。 |

- 申込時の入力項目（申込フォーム）は、申請フローの選択とは独立した設定です。先払い・申請先行のどちらを選んでも、プラン保存後に設定できます（ステップ5）。

### 3-2. 利用制限（クォータ）

| 項目 | 説明 | リセット周期 |
|------|------|------------|
| **月間訪問数** | 1ヶ月に入場できる回数の上限 | 月次（毎月1日 00:00、施設タイムゾーン） |
| **日次利用時間** | 1日に利用できる時間（時間単位）の上限 | 日次（毎日 00:00） |
| **月間予約数** | 1ヶ月に行える時間枠予約の上限（無制限 / 回数 / 時間 の3択） | 月次 |

- 月間訪問数・日次利用時間は **空欄にすると「無制限」** として扱われます。
- いずれか1つでも上限に達すると、以降の利用が制限（ブロックまたは課金）されます。

### 3-3. 超過時のポリシー

| ポリシー | 動作 |
|---------|------|
| **ブロック** | 上限に達すると入場・予約を拒否する。追加料金は発生しない。 |
| **追加課金** | 上限を超えても利用可能。超過分は Stripe Invoice Item として次回請求に自動合算される。 |

- **追加課金** を選ぶと、超過1回あたり / 超過1時間あたり / 超過1予約あたり の料金入力欄が表示されます。空欄の項目は超過課金されません。

### 3-4. 対象予約プラン（無料枠の適用範囲・任意）

会員が **無料枠（月間予約数の範囲内）で利用できるプラン** を絞り込めます。**この設定は予約サービスとウォークイン（直接チェックイン）の両方に共通で効きます。**

| 選択状態 | 予約での動作 | ウォークインでの動作 |
|---------|------|------|
| 未選択（デフォルト） | すべての予約プランが対象。会員はどのプランを予約しても無料枠が適用される | プラン単位では判定せず、既存のチェックイン設定側のスコープ（レガシー）に従う |
| 1つ以上選択 | 選択したプランのみ無料枠の対象。対象外は会員でも通常課金される | 選択したプランがそのチェックイン設定に含まれていれば無料 |

> **非会員が締め出されることはありません。** この設定は「予約できるか」ではなく「無料になるか」だけを制御します。詳細は [メンバーシッププランと利用制限](membership-plans.md#機能6-対象予約プラン無料枠の適用範囲) を参照。

> 複数のチェックイン設定に分けて会員ランクごとの入口を作っている施設は、ここで対象予約プランを設定すると、ウォークインの無料判定もプラン単位に切り替わり、複数の入口を1つに統合しやすくなります（ステップ4）。

### 確認

- プラン管理タブに作成したプランがカードで表示される
- カードに加入者数が「**{加入者数} / {上限} 名**」（上限未設定なら ∞）で表示される
- 料金・請求間隔・クォータが想定通り

### 詳細

- [メンバーシッププランと利用制限（クォータ）](membership-plans.md)

> **設計のコツ:** 最初は **1プラン** から始め、運用に乗せてからバリエーション（学生割、年払い等）を増やすのが安全です。料金・請求間隔は後から変更できないため、テストモードで一度加入まで通してから本番プランを確定してください。

---

## ステップ4: 会員がチェックインするスペース（チェックイン設定）の用意

### 目的

会員が **どこに・どの鍵で入室するか** を定義します。会員アプリのホームに並ぶ **SpaceCard**（スペースカード）は、施設の **チェックイン設定** そのものです。会員プランに紐づくチェックイン設定が SpaceCard として表示され、会員はタップ1回でチェックインします。

> 入室を伴わず「予約枠だけ」を会員特典にする施設は、本ステップの代わりに予約サービス側の設定（対象予約プラン）で完結します。

### 前提

- KEYVOX連携（鍵を発行する場合）
- 料金プラン（チェックイン設定に紐づけるプラン）

### 手順

チェックイン設定の作成手順は独立したガイドにまとまっています。本ガイドと対になる **[チェックイン セットアップガイド](checkin-setup-guide.md)** の手順に従って、会員が入室するスペースぶんのチェックイン設定を用意してください。

### 確認

- 会員アプリのホームに、用意したスペースが **SpaceCard** として表示される
- SpaceCard に施設スペースの画像・名前・クォータ残量が表示される

> **SpaceCard が表示されない場合:** 施設のチェックイン設定（入口設定）が未作成の可能性があります。ステップ4（＝チェックイン設定）を確認してください。

### 詳細

- [チェックイン セットアップガイド](checkin-setup-guide.md)
- [SpaceCard ヘルプ](member-spacecard.md) / [会員ホーム画面](member-home.md)

---

## ステップ5: 申込フォーム（インテークフォーム・任意）

### 目的

サインアップ時に **会員情報の入力フォーム**（氏名・連絡先・勤務先など）を求める場合に設定します。先払い・申請先行のどちらのプランでも設定でき、特に **申請先行** プランでは、スタッフが承認前に申請内容を確認できます。

> フォームは必須ではありません。施設が追加情報を必要とする場合のみ設定してください。

### 前提

- ステップ3でプランを作成・保存済み

### 手順

1. **フォーム** ページで、申込者に入力してもらいたい項目のフォームをあらかじめ作成します（テキスト・メール・電話番号・数値・選択式・日付・複数行テキスト・画像アップロードが使えます）。チェックイン用に作成済みのフォームを使い回すこともできます（詳細は [フォーム管理](forms.md)）
2. ステップ3で保存したメンバーシッププランの編集画面を開きます（新規作成直後の画面では設定できません。一度保存してから開き直してください）
3. 「申込フォーム」セクションで、作成したフォームを選択します
4. 選択すると即座に反映されます

### 確認

- サインアップ時に、設定したフォームの項目が表示される
- 必須フィールド未入力では次へ進めない

### 詳細

- [会員サインアップ（申込フォーム）](member-signup.md#機能3-申込フォームへの入力インテークフォーム)
- [メンバーシッププランと利用制限（申込フォームの設定）](membership-plans.md#機能15-申込フォームの設定)
- [フォーム管理](forms.md)

---

## ステップ6: 会員アプリURLの確認・配布

### 目的

会員が加入・ログインする **会員アプリのURL** を取得し、告知します。

### 前提

- Slug（施設URL識別子）が設定済みであること（[基本設定](base-settings.md)）

### 手順

1. **基本設定** を開き、**各種アプリURL** 欄で Slug を確認
2. 会員アプリURLは `member.unlockos.io/{slug}` の形式
3. Slug 入力欄の下のパネルからURL・QRコードをコピーして配布物・自社サイトに掲載

### 確認

- `member.unlockos.io/{slug}` を開くと、未ログイン状態で **メンバーシッププランの一覧（Landing）** が表示される
- 料金が最も高いプランに **おすすめバッジ** が自動付与される

> **導線について:** 会員アプリは統合ポータル **Go**（`go.unlockos.io/{slug}`）からも到達できます。予約・チェックイン・メンバーシップをまとめて案内する場合は Go を配布します。関係と相互リンクの張り方は [Go ポータルとサービス相互リンク ガイド](go-linking-guide.md) を参照。

---

## ステップ7: 承認運用の確認（申請先行 / 事後承認の場合）

### 目的

**申請先行** プラン、または **事後承認**（`auto_approve=false`）プランを使う場合の、スタッフ側の承認オペレーションを確認します。

> **先払い + 自動承認** のプランのみを使う施設はスキップできます（決済完了と同時に有効化されます）。

### 手順（承認待ちタブ）

1. 管理画面の **メンバーシップ** タブを開く
2. **承認待ち** サブタブをクリック
3. 各申請カードに、申請者のメールアドレス・申請プラン・申請日・フォームの回答が表示される
4. **承認** をタップ → 申請者にメールが送信され、決済に進めるようになる
5. **却下** をタップ → 却下理由の入力ダイアログ（任意）

### 確認

- 申請が届くと **承認待ち** に件数が表示される
- 承認後、サブスクリプションは会員が決済を完了するまで `pending_payment`、決済確認後に `active` になる

### 詳細

- [メンバーシッププランと利用制限（申請の承認・却下）](membership-plans.md#申請の承認却下承認待ちタブ)

---

## ステップ8: 会員アプリでテスト加入

### 目的

実際に会員の立場で1件加入まで通して、設定全体が正しく機能することを確認します。

### 前提

- ステップ1〜4が完了（有料プランはステップ1・2も）
- 任意でステップ5, 6, 7も

### 手順

1. 会員アプリURL（`member.unlockos.io/{slug}`）を新しいブラウザウィンドウ（できればシークレットモード）で開く
2. プラン一覧から対象プランの **申し込む** をタップ
3. メールアドレスを入力し、届いた **OTP（6桁コード）** でログイン
4. 申込フォームがある場合は入力
5. 有料プランの場合は初月請求額を確認し、Stripe の **テストカード** (`4242 4242 4242 4242` / 任意の将来日 / 任意のCVC) で決済
6. 完了画面で結果（**利用開始** / **承認待ち** / **申請受付**）を確認
7. 有効化後、ホーム画面に **SpaceCard** と **クォータバー** が表示されることを確認
8. SpaceCard の **ここでチェックイン** から入室（鍵）まで確認

### 確認

| 項目 | 確認方法 |
|------|---------|
| プラン一覧が正しく表示される | 会員アプリURLを開く |
| OTP ログインできる | メール受信 → コード入力 |
| （有料）決済が通る | テストカードで決済完了 |
| 加入がスタッフ側に現れる | メンバーシップ タブ（プランカードの加入者数、または承認待ち） |
| クォータバーが表示される | 会員ホーム画面 |
| SpaceCard からチェックインできる | ホーム → ここでチェックイン |

### テスト後にやること

- テスト加入は退会処理で削除（退会は UnlockOS の専用フローで実施）
- 本番モードに切り替える場合は、Stripe連携（ステップ1）と カスタマーポータル（ステップ2）を **本番モードで再設定**
- 本番プランは料金・請求間隔を確定してから公開（作成後変更不可）

---

## セットアップ完了チェックリスト

すべてにチェックが付いたら会員募集開始です。

### 必須項目

- [ ] Stripe連携が「接続済み」（有料プランを扱う施設のみ）
- [ ] Stripe カスタマーポータルを設定済み（有料プランを扱う施設のみ）
- [ ] メンバーシッププランを1つ以上作成（料金・請求間隔・クォータ・超過ポリシー）
- [ ] 会員がチェックインするスペース（チェックイン設定）を用意し、SpaceCard が表示される
- [ ] 会員アプリURL `member.unlockos.io/{slug}` でプラン一覧が表示される
- [ ] テスト加入が成功し、クォータバー・SpaceCard が表示された

### 任意項目

- [ ] 申込フォーム（インテークフォーム）を設定済み
- [ ] 申請先行 / 事後承認の承認運用を確認済み
- [ ] Go ポータルからの導線を確認済み

---

## よくあるつまずき

### Q: 有料プランを作成しようとするとエラーになる

ステップ1（Stripe連携）が「接続済み」か確認してください。Stripe 連携が無いと有料プランは作成できません。

### Q: 料金や請求間隔を後から変更したい

料金と請求間隔は **作成後は変更できません**（Stripe 連携の都合）。新しいプランを作成し、旧プランへの新規加入を止めてください。

### Q: 会員アプリのホームに SpaceCard が表示されない

会員がチェックインするスペース（＝チェックイン設定）が未作成の可能性があります。ステップ4（[チェックイン セットアップガイド](checkin-setup-guide.md)）を確認してください。

### Q: クォータバーが表示されない

月間予約数が「無制限」で、月間訪問数・日次利用時間もすべて空欄（無制限）の場合、クォータバーは表示されません。上限を設定するか、これが意図通りかを確認してください。

### Q: 上限に達していないのに利用がブロックされる

複数の上限のうち **いずれか1つ** でも達するとブロックされます。日次利用時間・月間訪問数の両方を確認してください。メンバーシップの有効期限切れも確認してください。

### Q: 会員なのに特定の予約プランで通常課金される

そのプランが **対象予約プラン** に含まれているか確認してください。対象予約プランを1つ以上選ぶと、リスト外は意図的に通常課金対象です。全プランを無料枠にしたい場合は対象予約プランの選択をすべて解除します（未選択＝全プラン対象）。ウォークイン（直接チェックイン）で同様の問題が起きる場合は、対象予約プランを1つでも選んでいると既存のチェックイン設定側のレガシー設定が無視される点も確認してください（詳細は [メンバーシッププランと利用制限](membership-plans.md#機能6-対象予約プラン無料枠の適用範囲)）。

### Q: 申請を送信したのに承認メールが届かない

施設側で審査中です。スタッフは **メンバーシップ > 承認待ち** タブで承認してください。承認後に決済リンク付きメールが届きます。迷惑メールフォルダも確認するよう会員に案内してください。

### Q: 会員が「カード・請求書を管理」でエラーになる

Stripe カスタマーポータル（ステップ2）が未設定です。テストモード・本番モードそれぞれで設定してください。

---

## サポート

このガイドの順に進めても解決しない場合は、 **どのステップで** **何が起きているか**（エラーメッセージのスクリーンショットがあれば添付）を添えてサポートまでご連絡ください。

---

## 関連ページ

### 各ステップの詳細
- ステップ1・2: [ロック接続（Stripe）](lock-connection.md#stripe決済連携タブ) / [メンバーシッププラン（Stripe カスタマーポータル）](membership-plans.md#stripe-カスタマーポータルの設定施設オーナー必須)
- ステップ3: [メンバーシッププランと利用制限（クォータ）](membership-plans.md)
- ステップ4: [チェックイン セットアップガイド](checkin-setup-guide.md)
- ステップ5: [会員サインアップ](member-signup.md) / [フォーム管理](forms.md)
- ステップ6: [基本設定](base-settings.md) / [Go ポータルとサービス相互リンク](go-linking-guide.md)
- ステップ8: [会員ホーム画面](member-home.md) / [SpaceCard](member-spacecard.md) / [マイページ](member-mypage.md)

### 関連トピック
- [メンバー管理](members.md)
- [会員・サブスク予約の特典（ゲスト側の見え方）](guest-member-booking.md)
- [時間枠予約（会員向け）](timeslot-booking-member.md)
- [予約サービス セットアップガイド](booking-setup-guide.md)
- [チェックイン セットアップガイド](checkin-setup-guide.md)
- [Go ポータルとサービス相互リンク ガイド](go-linking-guide.md)
