ユニファ開発者ブログ

ユニファ株式会社プロダクトデベロップメント本部メンバーによるブログです。

SaaSにおいて「一定期間無料」がペイする条件

ユニファの西川です、こんにちは。
今年の7月からプロダクトデベロップメント本部を離れ、別の新しいことをやってます(何やってるか興味ある方はぜひ面談ご応募お願いします)。
ユニファではCOMFORTABLE ZONEを自ら抜け出ることが大好きな人たちを大絶賛歓迎 & 募集中です。
unifa-e.com

今日は「ある条件に当てはまる時には一定期間無償でSaaSプロダクトを提供する」というありがちな割引やキャンペーン(以下、割引CP)について、

  • 割引CPによってどれくらいCVRが上がるならばペイするのか
  • 割引CPがペイするには無償期間を何ヶ月以内に収めなければならないのか

…の2点を解析してみたいと思います。

前提

今回のブログでは、

  • 「割引CP実施時の限界利益 > 非実施時の限界利益」 を「ペイする」と表現*1
  • 対象として見る売上は月額料金のみ
  • コストにおいても初期費や解約コストは考慮しない
  • 割引CPの無償期間が終わった後は割引CP対象顧客も非対象顧客も平均月単価が同一

…ということを検討の前提としています。
また、以下のような定義で記号を用いていきます。

記号の整理

 p = 割引CPの適用条件を満たす顧客の割合

割引CPの適用を受けるには一定の条件を満たす必要があります。
その条件を満たす顧客の割合を  pで表します。

 r = 割引CP実施によるCVRの変化率

割引CPを行う目的はCVRを上げるためです。
そのため、割引CP実施によるCVRの変化率を  r で表します。
 r = 実施時CVR ÷ 未実施時CVR - 100%

 m = 割引CPで無償化する月数。

割引CPで無償化するのはSaaSなので月単位とし、無償化する月数を  m で表します。
 m+1ヶ月目から課金開始。

 c = 割引CPを実施していない時の平均月次チャーン率

どこを平均の集計期間とするかは、適宜調整してください。

 s = 割引CP対象顧客が非対象の顧客の何倍チャーンしやすいかの率

割引CPにより(CVRが増える分)需要喚起が十分でない顧客も契約に至ってしまう可能性があります。
そのような顧客は通常よりチャーンしやすくなることが予想されます。
そこで、割引CPの対象となった顧客が、対象でない顧客の何倍チャーンしやすいかを  sで表します。
⇒ 割引CP対象顧客の月次チャーン率 = 割引CP非対象顧客の月次チャーン率 ×  s

 \alpha = 対象事業の限界利益率*2

結論

 r_{min} = ペイするにはどれくらいCVRを上げなければならないか

 r 以外の変数が所与の場合、
 \displaystyle r_{min} > \frac{\alpha \cdot p(s-1) + c \cdot s \cdot p \cdot m}{\alpha (s + p - s \cdot p) - c \cdot s \cdot p \cdot m}
…で算出できます。

 m_{max} = 最大何ヶ月まで無償期間にできるか

 m 以外の変数が所与の場合、
 \displaystyle m_{max} \lt \frac{\alpha \cdot { r(s + p - s \cdot p) - p(s - 1) }}{c \cdot s \cdot p \cdot (1 + r)}
…で算出できます。

何が便利なのか

 r_{min} m_{max} の値を出すのは、

  1. 結構ややこしめで大量の変数が絡むSimulatorをスプレッドシートに実装して
  2. パラメータを色々変えながら泥臭く「この辺まで行けばペイしそう」という予想する

…という流れかと思います。

それに対して上の2つの式は、

  • これも手でやるのは面倒くさい計算ではあるものの
  • スプレッドシートに実装するのはかんたんで
  • かつ、解析的に理論上の  r_{min} m_{max} をスパッと出せる

…という利点があると思っています。

導出

事前準備

前提整理で定義した記号に加え、さらに下記記号を加えます。

 M = Monthly ARPPU

(課金している状態での)顧客月単価です。

 V = Monthly Valuable Cost per Customers

顧客あたりの月次変動費です。

 LT_{before} = 割引CP実施時の平均LifeTime月数

定義より、 \displaystyle LT_{before} = \frac{1}{c} です。
全期間が課金対象となります。

 LT_{after-1} = 割引CP実施時の平均LifeTime月数

定義より、  \displaystyle LT_{after-1} = \frac{1}{c}(1 - p) + \frac{1}{c \cdot s} \cdot p です。

 LT_{after-2} =  LT_{after-1} における正味の課金対象月数

割引CP対象顧客は  mヶ月分、課金対象月数が少なくなります。
定義より、  \displaystyle LT_{after-2} = \frac{1}{c}(1 - p) +  (\frac{1}{c \cdot s} - m) \cdot p です。

導出本体

手順の概観
  1. モデル化(概念を数学の言葉に置き換え)して
  2. 後はひたすら式整理するだけ

…です。

手順の詳細

割引CP実施時の限界利益 > 非実施時の限界利益…は次のように表せます。
 SQL \times CVR \times (1 + r) \times (LT_{after-2} \cdot M - LT_{after-1} \cdot V) > SQL \times CVR \times LT_{before} \times (M - V)

これを  r について整理することで次の式を得られます。
 \displaystyle r > \frac{(LT_{before} - LT_{after-2}) \cdot M - (LT_{before} - LT_{after-1}) \cdot V}{LT_{after-2} \cdot M - LT_{after-1} \cdot V}

 LT_{before} LT_{after-1} LT_{after-2} に各定義を代入してさらに整理します。
 \displaystyle \Rightarrow r > \frac{p(s-1)(M-V) + c \cdot s \cdot p \cdot m \cdot M}{(s + p - s \cdot p)(M-V) - c \cdot s \cdot p \cdot m \cdot M}

ここで  M - V = \alpha \cdot M を用いてさらに整理すると  r について下記式を得られます。
 \displaystyle r  > \frac{\alpha \cdot p(s-1) + c \cdot s \cdot p \cdot m}{\alpha (s + p - s \cdot p) - c \cdot s \cdot p \cdot m}

また、上の式を  m について整理し直すと下記式を得られます。
 \displaystyle m \lt \frac{\alpha \cdot { r(s + p - s \cdot p) - p(s - 1) }}{c \cdot s \cdot p \cdot (1 + r)}

補足:SQLの部分はMQLやLead等に適宜読み替えOKです。

おわりに

モデル化は模型化とも呼ばれますが、

  • 対象をそのまま検討するのではなくて模型化(モデル化)して
  • その模型を色々いじくり回してみると
  • 対象を構成する要素間の本質的な関係を抽出できたり
  • 検討コストを大幅圧縮できたり

…するので、モデル化 / 模型化は非常に有用なツールかと思います。

ここにおいて重要なのは、現実を模型に落とし込む際の観察眼、要素の選別眼ですが、これについて書き出すとすごーーーーーーく長くなるので今回は割愛します。
ただ、モデル化や模型化って、慣れてくると絵を描いたりプラモデルを作ったりするのと似たような楽しさがあるのではと個人的に思っています。
なので、今回の記事が、みなさんが日々の生活の中でモデリングを楽しむようになるきっかけになれば幸いです。

それではそれでは、Happy Hacking!

*1:限界利益って何?って方はこちらをご参照ください。

*2:限界利益率 = 限界利益 ÷ 売上です。