全期間 累計
現在 稼働中
送客 20件以上
データがまだありません
| 店舗ID | 店舗名 | 担当者名 | 契約開始日 | 契約状況 | 累計送客数 | ランク | 操作 |
|---|---|---|---|---|---|---|---|
| 件 | |||||||
| 店舗データがありません | |||||||
| 受付日時 | 顧客名 | 電話番号 | 希望メニュー | 紹介元店舗 | ステータス | 集計対象 | 操作 |
|---|---|---|---|---|---|---|---|
| 予約データがありません | |||||||
| 店舗ID | 店舗名 | 担当者 | 契約状況 | 累計送客数 | ランク | 最終予約日 |
|---|---|---|---|---|---|---|
|
件
|
||||||
| データがありません | ||||||
加盟店スタッフが LINE で顧客に紹介フォームのリンクを送信 → 顧客が回答 → Lステップが自動でこのシステムに送客データを送信、という流れです。
加盟店がLINE公式アカウントと友達になる
クリニックのLINE公式アカウントを各加盟店スタッフに共有します。スタッフはLINEアプリからQRコードで友達追加します。
Lステップでリッチメニュー/アンケートを設定する
Lステップ管理画面でフォーム(顧客情報収集)を作成します。フォーム送信後に「HTTPリクエスト」アクションでこのシステムへデータを転送します。
加盟店スタッフが顧客にフォームリンクを共有する
各加盟店専用のLINEリンクまたはフォームURLを顧客に渡します。店舗IDはLステップ側で固定値としてセットするため、スタッフはURLを渡すだけでOKです。
店舗ごとにシナリオを分けるのがポイント
Lステップで「渋谷院シナリオ」「新宿院シナリオ」のように店舗別のシナリオを作成し、それぞれのHTTPリクエストにreferral_store_id: "ST001"のように固定値を埋め込みます。
このシステムが自動集計・ランク更新
顧客がフォームを送信すると、Lステップ経由でリアルタイムに予約データが登録され、送客数のカウントとランク(通常→ブロンズ→シルバー→ゴールド)が自動更新されます。
前提条件
- LINE公式アカウントを開設済み
- Lステップ(エルステップ)のアカウントを取得済み
- LステップとLINE公式アカウントを連携済み
STEP 1 ─ Lステップ管理画面にログイン
lstep.app にアクセスし、管理画面にログインします。左メニューから対象の公式アカウントを選択してください。
STEP 2 ─ シナリオ(または回答アクション)でHTTPリクエストを追加
「シナリオ」→「アクション追加」→「Webhook(HTTPリクエスト)」 を選択します。
フォーム回答後に発火させる場合は「フォーム回答完了」トリガーのアクションに追加します。
STEP 3 ─ URL・メソッド・ヘッダーを設定
https://あなたのドメイン/api/reservations
POST
Authorization: Bearer <発行したトークン>Content-Type: application/jsonSTEP 4 ─ リクエストボディ(JSON)を設定
Lステップの変数({{変数名}}形式)をそのまま使えます。referral_store_idだけは店舗ごとに固定値で設定してください。
{ "customer_name": "{{氏名}}", "customer_phone": "{{電話番号}}", "desired_menu": "{{希望メニュー}}", "referral_store_id": "ST001", // ← この店舗のIDを固定でセット "lstep_response_id": "{{回答ID}}" // 重複防止に推奨 }
STEP 5 ─ テスト送信して確認
Lステップのテスト送信機能で実際に送信後、このシステムの「予約一覧」でデータが届いているか確認します。
初期トークン
lstep-api-token-change-me-xxxxxxxxxxxx は必ず無効化し、新しいトークンをLステップに設定してください。
送信先URL
https://あなたのドメイン/api/reservations
※ Cloudflare Pagesにデプロイ後の実際のURLに変更してください
認証ヘッダー
Authorization: Bearer lstep-api-token-change-me-xxxxxxxxxxxx
※ 実際に発行したトークンに変更してください
Lステップ変数の対応表
Lステップのフォーム変数名と送信フィールド名の対応です。
| 送信フィールド名 | Lステップ変数の例 | 必須 | 説明 |
|---|---|---|---|
customer_name | {{氏名}} | 必須 | 顧客氏名 |
referral_store_id | ST001(固定値) | 必須 | 各店舗のIDを固定でセット |
customer_phone | {{電話番号}} | 任意 | 顧客の電話番号 |
desired_menu | {{希望メニュー}} | 任意 | 希望施術メニュー |
referral_store_name | {{店舗名}}または固定 | 任意 | 紹介元店舗名 |
lstep_response_id | {{回答ID}} | 推奨 | 重複登録防止 |
notes | {{備考}} | 任意 | 自由メモ |
JSONボディ テンプレート一覧
店舗ごとに referral_store_id と referral_store_name だけ変えてコピーして使います。
標準テンプレート(推奨)
{ "customer_name": "{{氏名}}", "customer_phone": "{{電話番号}}", "desired_menu": "{{希望メニュー}}", "referral_store_id": "ST001", "referral_store_name": "渋谷院", "lstep_response_id": "{{回答ID}}" }
シンプルテンプレート(氏名・電話のみ)
{ "customer_name": "{{氏名}}", "customer_phone": "{{電話番号}}", "referral_store_id": "ST001" }
フルテンプレート(全フィールド)
{ "customer_name": "{{氏名}}", "customer_phone": "{{電話番号}}", "desired_menu": "{{希望メニュー}}", "referral_store_id": "ST001", "referral_store_name": "渋谷院", "reservation_status": "pending", "lstep_response_id": "{{回答ID}}", "notes": "{{備考}}" }
POST /api/reservations Lステップ Webhook受信(要認証) GET /api/health 疎通確認(認証不要) GET /api/test-connection 接続テスト(認証不要) GET /api/dashboard ダッシュボードデータ GET /api/stores 加盟店一覧 GET /api/reservations 予約一覧(ページング対応) POST /api/reservations/manual 手動登録(管理画面用) GET /api/stats 店舗別集計 GET /api/tokens トークン一覧 POST /api/tokens トークン発行
POST /api/reservations フィールド仕様
| フィールド名 | 必須 | 説明・例 |
|---|---|---|
|
必須 任意 |
認証方式(3種類すべてサポート)
| 方式 | 設定箇所 | 値の形式 |
|---|---|---|
| Bearer ヘッダー(推奨) | HTTPヘッダー | Authorization: Bearer lstep-xxx... |
| クエリパラメータ | URL末尾 | ?token=lstep-xxx... |
| ボディフィールド | JSON/フォームの本文 | "token": "lstep-xxx..." |
ランク自動判定ロジック
よく使うパターンをワンクリックでフォームに自動入力できます。入力後に内容を確認・修正してから送信してください。
空欄の場合は登録時刻が自動入力されます
⚠️ このトークンは今のみ表示されます。必ずコピーして保管してください。
このトークンの使用目的を入力してください(管理用メモ)
Authorization: Bearer <token> ヘッダーにセットしてください。
店舗ごとに個別トークンを発行することで、アクセス元の管理が容易になります。