無人野菜販売所に「PayPay+スタンプカード」を組む設計ガイド

LINE公式アカウント × エルメ

無人野菜販売所に「PayPay+スタンプカード」を組む設計ガイド

1,000円以上のPayPay払いでスタンプが貯まり、5個で旬の野菜をプレゼント。手を動かせば同じ仕組みが作れます。

Before:よくある無人販売所の悩み

並べた野菜が売れ残る。一度来たお客さんがそのまま二度と来ない。

常連さんに「ありがとう」を伝えたいのに、無人だから顔も名前もわからない。

現金だけだと集金・両替が手間で、盗難も心配。

After:仕組みを入れた後の1日

お客さんはPayPayで支払い、完了画面をLINEに送るだけ。

1,000円以上の購入にスタンプが1個。5個貯まったお客さんには、農家が在所する日時を決めて旬の野菜を手渡しできる。

「また来たい」と思ってもらえる関係が、無人でも自然に育つ。

この記事で組む仕組みの全体像

お客さん PayPayで支払い 支払い画面をLINE送信 エルメ 受信・自動応答・タグ付け スプレッドシート 購入額・累計スタンプ台帳 push専用GAS 達成通知(1日1回)
  • お客さんがPayPayの支払い画面と合言葉「支払い完了」をLINEで送ると、エルメがキーワード応答で受付返信し、タグを付ける
  • 農家が金額を確認し、1,000円以上ならスタンプを1個付与する
  • スタンプはスプレッドシート台帳で管理し、農家が金額確認後に累計を更新する
  • 5個達成したお客さんへ、push専用GASが「特典引き換え」の案内を送る
  • 特典(旬の野菜1品)は、農家が在所する日時を決めて手渡しする

1. 全体設計とルールを決める

最初に運用ルールを1つに固めます。ここがぶれると、あとの設定・看板・文面すべてがずれます。

この設計の3つのルール

項目ルール
支払い方法PayPayのみ(スタンプ対象は電子マネー決済に限定)
スタンプ付与条件1回の購入額が1,000円以上のPayPay払い
特典スタンプ5個で旬の野菜1品。農家が在所する日時を指定して手渡し
現金払いのお客さんはLINEに支払い画面を送らないため、スタンプは自然と付きません。エルメ側で現金を弾く特別な設定は不要です。

なぜ「農家が金額を確認して手動で押す」のか

金額の判定(1,000円以上か)と、支払い先が本当にKSR農園かの確認は、画面を人が見るのが最も確実です。エルメの自動応答はテキストのキーワードに反応する仕組みなので、お客さんには「支払い画面のスクリーンショット」と「支払い完了」という合言葉をセットで送ってもらいます。エルメは合言葉に反応して「受け付けました」を返し、スタンプ付与は農家がスクリーンショットを確認してから台帳で行います。この分担が、嘘の申告と少額申告を同時に防ぎます。

◆ ◆ ◆

2. PayPayとLINE公式アカウント+エルメを準備する

3つのサービスをつなぎます。どれも小さな会社なら無料〜低コストで始められます。

準備するもの

サービス役割費用の目安
PayPay(PayPayマイストア/店舗用)無人販売所の決済決済手数料あり(最新の料率は公式で確認)
LINE公式アカウントお客さんとの接点無料プランは月200通まで
エルメ(L Message)受信・自動応答・タグ・チャット返信フリープランあり(月1,000通まで)
Googleスプレッドシート+GAS台帳・集計・push配信無料

接続の手順

操作場所:LINE公式アカウントマネージャー > 設定 > Messaging API

  1. PayPayの店舗用QRコードを発行し、販売所に掲示できる状態にする
  2. LINE公式アカウントを開設し、Messaging APIを有効にする
  3. エルメに登録し、チャネルID・チャネルシークレット・アクセストークンを入力して接続する
  4. Webhookの送信先をエルメのURLに設定する
つまずきポイント:Webhookの送信先は1つしか設定できません。エルメを使う時点で、この1枠はエルメが占有します。「GASでメッセージを受信して…」という設計にはできないため、受信はすべてエルメに寄せます(GASは後述のpush専用で使います)。
◆ ◆ ◆

3. スタンプカードとタグを設計する

スタンプカード本体と、お客さんを分類するタグを先に決めます。タグ名は記事全体で1つに統一します。

スタンプの管理方式を決める(台帳方式)

LINE公式アカウントには標準の「ショップカード」機能がありますが、スタンプ付与はQRコードの読み取り(対面)が前提です。無人販売所ではお客さんと農家が同じ場所にいないため、この記事ではスプレッドシートを台帳にしてスタンプを管理する方式を採ります。農家がスクリーンショットを確認し、台帳の累計を1つ増やして、お客さんに「現在○個」と返信します。

  1. 章5のスプレッドシート台帳を先に作る(列構成は章5の表のとおり)
  2. スタンプの必要数を5個と決め、台帳のE列(累計スタンプ)で数える
  3. 特典内容は「旬の野菜1品プレゼント(要日時指定・農家手渡し)」とし、案内文に明記する
  4. お客さんへの現在数の返信はチャットで行う(エルメ管理画面 > チャット)
対面で特典を渡す場面だけは、LINE公式の「ショップカード」をQR読み取りで併用しても構いません。ただし二重管理になるため、慣れるまでは台帳一本に絞るのが安全です。

タグの設計(命名規則:カテゴリ_状態)

タグ名付けるタイミング使い道
販売_PayPayPayPay支払い画面を送ってきたとき電子マネー利用者の把握
販売_スタンプ達成累計スタンプが5個になったとき特典引き換え案内の配信対象
つまずきポイント:タグ名は「販売_PayPay」のようにアンダースコア区切りで統一します。章をまたぐと「販売PayPay」「PayPay払い」などと揺れがちです。本文・スプレッドシートのタグ列・GASが付与するタグの3か所を必ず同じ表記にそろえます。
◆ ◆ ◆

4. 支払い画面+合言葉の受信と自動応答を設定する

お客さんは、PayPayの支払い完了画面(スクリーンショット)と、合言葉「支払い完了」の2つをLINEに送ります。エルメの自動応答はテキストのキーワードに反応するため、合言葉のほうをトリガーにして受付返信とタグ付けを自動化します。画像は農家が目で確認します。

自動応答の設定

操作場所:エルメ管理画面 > 自動応答(キーワード応答) > 新規作成

  1. キーワードに「支払い完了」を登録する(部分一致にしておくと「支払い完了です」でも反応する)
  2. アクションで「販売_PayPay」タグを付与する
  3. 自動返信メッセージを入力する(下のテンプレを使用)
  4. 保存し、自分のスマホで「支払い完了」と送って返信とタグ付けを確認する

コピペ用テンプレ(自動返信)

「支払い完了」の連絡ありがとうございます! PayPayの支払い画面(スクリーンショット)もあわせてお送りください。 内容を確認して、スタンプを1個追加のうえ現在の個数をお知らせします。少々お待ちください。 ※1回のお買い物が1,000円以上の場合にスタンプを1個付与します。 ※スタンプ5個で旬の野菜1品プレゼント。プレゼントは農家が在所する日時をご指定のうえ、直接お渡しします。
(PayPayの支払い完了画面の画像)
支払い完了
「支払い完了」の連絡ありがとうございます!内容を確認してスタンプを追加しますね。少々お待ちください。
確認できました。1,200円のお買い上げでスタンプ1個追加、現在3個です。あと2個で旬の野菜をプレゼントします!
つまずきポイント:合言葉を送っても自動応答が返らないときは、エルメと友だちの接続(Webhook)が有効か、LINE公式側の応答設定でWebhookがオン・応答メッセージがオフになっているかを確認します。また、画像だけ送られて合言葉がないケースもあるので、看板と案内文には「画像+『支払い完了』の2つを送る」と明記しておきます。
◆ ◆ ◆

5. スプレッドシート台帳とpush専用GASを組む

この台帳がスタンプカードの本体です。農家がスクリーンショットを確認して購入額と累計スタンプを記録し、5個達成したお客さんへGASが自動で案内を送ります。GASは受信せず、時刻トリガーで動く「push専用」です。

スプレッドシートのスキーマ(先に確定)

列列名型備考
A受付日時日時農家が記録した日時
BLINE表示名文字列お客さんの識別
C購入金額数値支払い画面から農家が入力
Dスタンプ付与列挙付与/対象外(1,000円未満)
E累計スタンプ数値農家が更新(付与のたびに前回+1。対象外なら前回と同じ数)
Fタグ文字列販売_PayPay/販売_スタンプ達成
GLINEユーザーID文字列エルメの友だち詳細画面からコピー(Uで始まる33桁)

GAS(push専用・時刻トリガー)

このGASは受信しません(Webhookはエルメが占有)。毎朝1回、E列(累計スタンプ)を読み、5個に達した行のお客さんへ案内を送るだけです(集計そのものは農家が入力時に行います)。

// push専用GAS:受信はしない。時刻トリガーで1日1回起動する想定。
// スプレッドシートのスキーマ(A:受付日時 B:表示名 C:購入金額 D:スタンプ付与 E:累計スタンプ F:タグ G:ユーザーID)と一致させること。

const LINE_TOKEN = 'ここにチャネルアクセストークン';
const SHEET_ID   = 'ここにスプレッドシートID';
const SHEET_NAME = '台帳';

function checkStampAchievers() {
  const sh = SpreadsheetApp.openById(SHEET_ID).getSheetByName(SHEET_NAME);
  const rows = sh.getDataRange().getValues();
  // 1行目はヘッダー。2行目以降を見る。
  for (let i = 1; i < rows.length; i++) {
    const name    = rows[i][1]; // B列:LINE表示名
    const total   = rows[i][4]; // E列:累計スタンプ
    const tag     = rows[i][5]; // F列:タグ
    const userId  = rows[i][6]; // G列:LINEユーザーID
    if (!userId) continue;      // ユーザーID未入力の行は飛ばす
    // 5個以上で、まだ達成タグが付いていない行だけに送る
    if (total >= 5 && String(tag).indexOf('販売_スタンプ達成') === -1) {
      pushMessage(userId, name);
      sh.getRange(i + 1, 6).setValue('販売_スタンプ達成'); // F列に達成タグを記録
    }
  }
}

function pushMessage(userId, name) {
  const text = name + 'さん、スタンプ5個達成ありがとうございます!\n'
    + '旬の野菜1品をプレゼントします。農家が在所する日時をLINEでご相談ください。';
  UrlFetchApp.fetch('https://api.line.me/v2/bot/message/push', {
    method: 'post',
    headers: { 'Authorization': 'Bearer ' + LINE_TOKEN, 'Content-Type': 'application/json' },
    payload: JSON.stringify({ to: userId, messages: [{ type: 'text', text: text }] })
  });
}
つまずきポイント:GASを初めて実行すると権限承認画面が出ます。「詳細」→「安全でないページに移動」から承認しないと動きません。また、時刻トリガーは「トリガー」メニューから `checkStampAchievers` を毎日1回で登録します。pushの宛先はG列のユーザーIDです。表示名は重複するため宛先には使えません。ユーザーIDはエルメの友だち詳細画面に表示されるので、初回受付のときにG列へコピーしておきます。なお、GASが書くのはスプレッドシートのF列だけで、エルメ側のタグは自動では付きません。エルメ側にも「販売_スタンプ達成」を付けたい場合は、達成通知を見た農家が友だち詳細から手動で付与します。
◆ ◆ ◆

6. 特典の手渡し運用と看板を用意する

特典の受け渡しは「農家が在所する日時を決めて手渡し」にします。無人販売所でも、この1回の対面が常連さんとの関係を深めます。

特典引き換えの流れ

  1. GASの達成通知を受けたお客さんが、希望日時をLINEで返信する
  2. 農家が在所できる日時を調整して確定する
  3. 当日、その場で旬の野菜1品を手渡す
  4. 台帳に新しい行を追加し、E列(累計スタンプ)を0から数え直す。F列のタグ「販売_スタンプ達成」は空欄に戻す(これをしないと6個目でGASが再通知する)

販売所に掲示する看板の文面(コピペ用)

【KSR農園 無人販売所】 ■ お支払い:PayPayのみ ■ LINEスタンプカード(PayPay・1,000円以上限定) ① PayPayで1,000円以上お支払い ② 支払い完了画面をスクリーンショット ③ KSR農園のLINEに画像と「支払い完了」を送る ④ 農家が確認後、スタンプを1個追加します ⑤ 5個でプレゼント(日時指定・農家手渡し) ▼ LINE友だち追加はこちら (QRコード)
つまずきポイント:看板のQRコードは、エルメのQRコードアクション(流入経路分析)で発行した「看板専用QRコード」を使うと、店頭からの友だち追加数を計測できます。屋外掲示はラミネート加工で雨・退色に備えます。
◆ ◆ ◆

費用と無料枠の注意

この仕組みは、小さな会社なら低コストで始められます。配信数によってLINE公式アカウントのプランが変わる点だけ、先に把握しておきます。

項目費用備考
LINE公式アカウント無料プランは月200通まで200通を超える配信は有料プラン
エルメ(L Message)フリープランあり(月1,000通まで)通数はLINE公式の200通に先に当たる
Googleスプレッドシート+GAS無料Googleアカウントがあれば利用可
PayPay決済手数料あり最新の料率は公式で確認

スタンプ達成の案内や個別配信は「必要な人へ絞る」ことで、月200通の無料枠を長く使えます。全員一斉配信を多用すると通数を消費しやすいので、達成者だけへのpushや絞り込み配信を基本にします。

運用開始チェックリスト

確認項目OK
自分のスマホで「支払い完了」と送り、自動返信とタグ付けが動くか□
1,000円以上/未満で付与・対象外の判断がぶれないか□
スプレッドシートの列(A〜G)がGAS・本文と一致しているか□
G列のLINEユーザーIDを初回受付時に入力する運用にしたか□
GASの権限承認と時刻トリガー登録が済んでいるか□
タグ名「販売_PayPay」「販売_スタンプ達成」が全箇所で統一されているか□
看板のQRコードが友だち追加に正しく飛ぶか□
スプレッドシートの共有権限(GASの実行アカウント)が適切か□

よくある質問

Q. スタンプ付与を完全に自動化できますか?
A. できません。エルメの自動応答はテキストのキーワードに反応する仕組みで、画像の中身(金額・支払い先)は読めません。そのため付与は農家がスクリーンショットを見て台帳で行い、自動応答は合言葉への「受付返信」とタグ付けまでを担います。
Q. 支払ったと嘘の画像を送られたら?
A. 農家が画面の店舗名・金額・日時を確認してから押すので、他店の画面や1,000円未満は対象外にできます。特典の受け渡しも対面なので、PayPayの取引履歴と照合できます。
Q. 現金払いのお客さんはどうなりますか?
A. スタンプ・クーポンの対象外です。現金払いはLINEに支払い画面を送らないため、自然と付与されません。
Q. LINE公式アカウントだけでスタンプカードは作れませんか?
A. 基本機能でも簡易的なものは作れますが、タグでの絞り込み配信やキーワード応答によるタグ付け、GAS連携まで含めるならエルメの併用が現実的です。
Q. 通数の無料枠(月200通)を超えそうです。
A. 全員一斉配信を減らし、達成者へのpushや絞り込み配信を基本にします。それでも足りなければLINE公式アカウントの有料プランを検討します。

応用アレンジ(同じ骨格でできる発展例)

  • 金額別のスタンプ倍付け:3,000円以上の購入はスタンプ2個にする。台帳のC列(購入金額)で判定を分けるだけで実装できる。
  • 季節フェア連動クーポン:「販売_PayPay」タグの人へ、夏野菜フェアの先行案内を絞り込み配信する。
  • 売り切れ速報の自動化:在庫用シートを別に作り、閾値を下回ったら管理者へpushする(push専用GASの応用)。

いずれも本記事の「エルメ=受信、GAS=push専用、スプレッドシート=台帳」という分担のまま拡張できます。

まとめ

「PayPayで1,000円以上→支払い画面をLINE→農家が確認してスタンプ→5個で手渡し」という、無人でも常連が育つ仕組みができました。まずやることは1つ、章5のスプレッドシート台帳(A〜G列)を作るところからです。
▶ 関連記事:無人販売所の友だち追加を増やす集客導線の設計、毎朝の販売情報を自動配信する仕組みの作り方もあわせてご覧ください。

※ 本記事は架空の無人野菜販売所を想定したサンプルの構築例です。掲載コードはサンプルであり、ご利用は自己責任でお願いします。