本文へ移動
Starbucks 約10分で読めます

ロイヤルティプログラムという「行動設計」

スターバックス・リワードは、顧客が「スターを集める」という独自の動機に基づいてマイレージシステムを提供し、ロイヤルティを生む。損失回避や進捗の原理を活用し、顧客との強い情緒的結びつきを築いている。ギフトカードもその動機を助長している。

スターバックス・リワードに加入した顧客が、なぜこれほど頻繁に来店するのか。

答えは「コーヒーが好きだから」ではない。

「スターを集めているから」だ。

この違いは小さいように見えて、本質的に重要だ。「コーヒーが好き」という動機は、他のコーヒーショップで代替可能だ。

しかし「スターバックスのスターを集めている」という動機は、スターバックスでしか満たせない。

ロイヤルティプログラムの本質は「顧客の動機をブランドに固有のものにすること」だ。


ポイントプログラムとロイヤルティプログラムは違う

多くの企業が「ポイントプログラム」を持っている。
しかしスターバックスが持っているのは「ロイヤルティプログラム」だ。この二つは根本的に異なる。

ポイントプログラム
購買するとポイントが貯まり、貯まったポイントを割引や商品と交換できる仕組み。
顧客の動機は「お得だから」 このお得さが他社より小さくなれば、顧客は離れる。

ロイヤルティプログラム
購買が「体験の一部」になる仕組み。スターを集めることそのものが楽しく、ステータスが自己表現になり、ブランドとの感情的な結びつきが生まれる。顧客の動機は「このブランドが好きだから」。

スターバックスが設計したのは後者だ。

証拠がある。スターバックスのロイヤルメンバーは非メンバーと比較して、価格が上がっても来店頻度を維持する傾向が強い。2024〜2025年のインフレ局面で全体的な客数が減少した中でも、ロイヤルメンバーの支出はむしろ増加している。

「お得だから来る」顧客は価格に敏感だ。しかし「このブランドが好きだから来る」顧客は、多少の値上がりでは離れない。


「スターの経済学」

スターバックス・リワードの構造を解剖すると、行動経済学の教科書が詰まっている。

①損失回避(Loss Aversion)

人間は「10ドルを得る喜び」より「10ドルを失う痛み」の方を強く感じる(カーネマンとトベルスキーの研究)。

スターバックスはこれを活用する。一定期間スターを使わないとゴールドステータスを失う可能性がある。この「失うかもしれない」という不安が、来店を促す。

②進捗の原理(Progress Principle)

心理学者テレサ・アマビールらの研究が示した通り、「ゴールに向かって進んでいる」という感覚は、モチベーションを著しく高める。

スターバックスのアプリには「あと25スターで次の報酬」という進捗バーが常に表示される。進捗バーが埋まるにつれて、次の来店への引力が強まる。

③ギャンブル的な楽しさ(Variable Ratio Reinforcement)

「ダブルスターデー」や「ボーナスチャレンジ」は、いつ・どんな条件で発動するか完全には予測できない。この「不確実性」がゲームとしての面白さを生む。スロットマシンが止められない構造と同じ原理だ。

④社会的ステータス(Social Status)

「ゴールドメンバー」というステータスは、他者との比較において自分が「上位にいる」という感覚を与える。
これは人間の根本的な欲求「認められたい」「特別でありたい」に訴えかける。


「ギフトカード」という逆説的な仕組み

スターバックスが2025年Q1に計上したギフトカードのロード額:35億ドル(約5,000億円)。

これは顧客がスターバックスに「事前に預けた」お金だ。

なぜ顧客は先払いするのか。

一つは利便性(カードで支払う方がスムーズ)だが、より重要な動機がある。
「スターを効率よく貯めたいから」だ。ギフトカードでの支払いはスターの獲得に有利な設定になっている。

この結果、スターバックスは事実上「顧客から無利子でお金を借りる」ことになる。銀行のように顧客の資金を預かり、それを運用できる。ギフトカードの未使用残高(顧客が忘れたまま失効した分)も利益になる。

「スターを集めたい」という顧客の動機が、スターバックスの金融的な強みを生んでいる。 これはロイヤルティプログラムが「マーケティングツール」であると同時に「金融商品」でもあることを示している。


通販企業のロイヤルティ設計への翻訳

スターバックスのロイヤルティ設計から、通販企業が学べる4つの原則を整理する。

原則①:「ポイント」に感情的な名前をつける

「ポイント」より「スター」の方が感情的な引力が強い。通販企業なら「コイン」「ジュエル」「クリスタル」自社のブランドに合った固有名詞にすることで、ポイントが「そのブランド固有の価値」になる。

原則②:「次の報酬」が常に見えている設計

顧客が自分のポイント残高を確認するとき、「次の報酬まであと○ポイント」が同時に表示される設計にする。ゴールが見えていることが、行動の引力を生む。

原則③:「予測不可能な報酬」を仕込む

毎回同じ報酬より、「時々特別なボーナスがある」方が継続率が高まる。誕生日の特典、ランダムなサプライズポイント、特定の行動へのボーナス。これらの「予測不可能な喜び」が来店・再訪問の動機になる。

原則④:「ステータス」で自己表現させる

「ブロンズ / シルバー / ゴールド / プラチナ」という階層は、単なる分類ではなく「自分がどのレベルにいるか」を表現するステータスだ。最上位の顧客に「特別な体験」(先行アクセス・専用チャンネルでの対応・限定商品)を提供することで、上位ステータスへの意欲が高まる。

SQLで実装するロイヤルティティア分類

-- 顧客ロイヤルティティアの自動分類

SELECT
  customer_id,
  total_orders,
  total_ltv,
  days_since_first_order,
  -- ロイヤルティスコア(購買頻度 × LTV × 継続年数)
  ROUND(
    (total_orders * 10)
    + (total_ltv / 1000)
    + (days_since_first_order / 30)
  , 0)                                              AS loyalty_score,
  -- ティア分類
  CASE
    WHEN total_ltv >= 100000
      AND total_orders >= 10 THEN 'プラチナ'
    WHEN total_ltv >= 30000
      AND total_orders >= 5  THEN 'ゴールド'
    WHEN total_ltv >= 10000
      AND total_orders >= 3  THEN 'シルバー'
    WHEN total_orders >= 1   THEN 'ブロンズ'
    ELSE                          '新規'
  END                                               AS loyalty_tier,
  -- 次のティアまでの距離
  CASE
    WHEN total_ltv >= 100000
      AND total_orders >= 10 THEN 'プラチナ達成'
    WHEN total_ltv >= 30000
      AND total_orders >= 5
    THEN CONCAT(
      '次のプラチナまで:LTV あと',
      CAST(GREATEST(100000 - total_ltv, 0) AS VARCHAR),
      '円、購買回数あと',
      CAST(GREATEST(10 - total_orders, 0) AS VARCHAR),
      '回'
    )
    WHEN total_ltv >= 10000
      AND total_orders >= 3
    THEN CONCAT(
      '次のゴールドまで:LTV あと',
      CAST(GREATEST(30000 - total_ltv, 0) AS VARCHAR),
      '円、購買回数あと',
      CAST(GREATEST(5 - total_orders, 0) AS VARCHAR),
      '回'
    )
    ELSE CONCAT(
      '次のシルバーまで:LTV あと',
      CAST(GREATEST(10000 - total_ltv, 0) AS VARCHAR),
      '円、購買回数あと',
      CAST(GREATEST(3 - total_orders, 0) AS VARCHAR),
      '回'
    )
  END                                               AS next_tier_message
FROM (
  SELECT
    customer_id,
    COUNT(DISTINCT order_id)                        AS total_orders,
    SUM(amount)                                     AS total_ltv,
    DATE_DIFF('day', MIN(order_date), CURRENT_DATE) AS days_since_first_order
  FROM orders
  WHERE status = 'completed'
  GROUP BY customer_id
) t
ORDER BY loyalty_score DESC

このSQLが生成する「次のゴールドまであとLTV 5,000円、購買回数あと1回」というメッセージを、メールや会員ページで伝えることが「進捗の原理」の実装だ。


次回予告:「Deep Brewという名のAI データで顧客を先読みする仕組み」

スターバックスが毎週1億件以上のトランザクションを処理するAIプラットフォーム「Deep Brew」の設計思想を解剖する。天気・時間帯・位置情報を統合したパーソナライゼーションは、通販のどんな課題を解決するか。

次のアクション

SQLやデータ活用を、手元で試しながら理解する

記事で読んだ考え方を、SQL練習場や関連カテゴリの記事でさらに深掘りできます。相談やご依頼もお問い合わせページから受け付けています。

SQL練習場で試す お問い合わせ

この記事を書いた人:martechfarm

Treasure Data Top Lapidarist Award受賞。

SQL / Digdag / Python / CDP設計 / CRM設計を横断し、企業のデータ活用を支援。

実績・支援内容を見る →

MarTech Farmをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む