SaaS KPI シリーズ -  エクスパンション & コントラクション

これまでの記事で、SaaSのビジネスの成長を左右するコンバージョンチャーンについて紹介してきましたが、SaaSのビジネスにはその他にもビジネスを加速させるエンジンとそれを抑制するブレーキがあります。

今日はそれらについての話をしていきます。

複数の料金プランがあるSaaSサービス

例えばDropboxのように、多くのSaaS企業は、提供するサービス内容に応じて複数の料金プランを用意しています。

エクスパンション

話をシンプルにするために、今回は以下のように2つの月額費用が設定がされているSaaSサービスを想像してみてください。

  • ススタンダードプラン(月額1万円)
  • プレミアムプラン(月額2万円)

2月から3月にかけて、2人の顧客がスタンダードプランから、プレミアムプランにアップグレードした場合、3月のMRR(月間定期収益)は2万円増えることになります。

エクスパンションMRR

このアップグレードによる収益増をエクスパンションと呼び、これを月単位で集計したものをエクスパンションMRRと呼びます。

コントラクション

一方で、アップグレードする顧客がいれば、プランをダウングレードする顧客もいます。

2月から3月にかけて、1人の顧客がプレミアムプランから、スタンダードプランダウンレードした場合、3月のMRR(月間定期収益)は1万円減ることになります。

そうすると、さっきとは逆に元々見込まれていた収益よりも翌月の収益は減ることになります。

コントラクションMRR

このダウングレード等による収益減をコントラクションと呼び、これを月単位で集計したものをコントラクションMRRと呼びます。

ネット・ニューMRR

ところで、以前、ビジネスが成長しているかを計る指標の一つとして紹介した、ネット・ニューMRRという指標がありました。

このネット・ニューMRRは新規顧客からの月間定期収益であるニューMRRからチャーンによる減収であるチャーンMRRを引いたものでした。

ただ実は複数の料金プランを提供しているSaaSビジネスにおいては上記の計算は完璧ではなく、上述したエクスパンションとコントラクションを考慮し、計算する必要があります。

エクスパンション・コントラクションの計算方法

データの概要

今回のはサブスクリプション型のビジネスの支払いデータを利用します。データはこちらのページからダウンロードできます。

このデータは、一行が一人の顧客の月ごとの支払い履歴を表していて、列には以下の情報があります。

  • 顧客ID
  • 支払い日
  • 支払いプラン
  • 支払い金額

エクスパンション・コントラクションの計算

前述したように、エクスパンションは、プランのアップグレードなどによって、前月(あるいは前年)から増えた収益となり、コントラクションはプランのダウングレードなどによって、前月(あるいは前年)から減った収益です。

そのため、顧客ごとに前回との支払い金額の差を計算し、増収(0より大きい)の場合は、エクスパンション、減収(0より小さい場合)場合コントラクションと捉えることが可能です。

そこで、まずは顧客ごとに前回からの支払い金額の差を計算するために、「支払い金額」の列ヘッダーメニューから「表計算」、「…からの差」、「前の値(lag)」を選択します。

表計算のダイアログが開いたら、顧客ごとに差を計算するために、グループに「顧客ID」を選択し、プレビューをクリックします。

このとき、データが日付順に並んでいないと、前の値との差が、前回の支払い金額からの差として計算できないため、「計算前にデータを並び替える」にチェックを付けて、並び替える列に「支払い日」を選択し、ソートに昇順を選択します。

最後に、値の列名を編集し、列名を「支払い金額の差」に変更し、実行します。

これでユーザーごとに「支払い金額の差」を計算できましたが、このとき、値が0を超えるものは「エクスパンション」、値が0を下回るものがコントラクトションとなるわけです。

そのため、ここからは、「エクスパンション」と「コントラクション」という新しい列を作成し、「支払い金額の差」が0を超えるときには、同じ行のエクスパンション列に該当の値が入り、「支払い金額の差」が0を下回るときには、同じ行のエクスパンション列に該当の値が入るようにします。

「支払い金額の差」の列ヘッダーメニューから、「計算を作成」、「条件付き」を選択します。

「条件を元に計算、または置き換える」のダイアログが表示されたら条件を追加します

条件の設定ダイアログが開いたら、列に「支払い金額の差」、演算子に「より大きい」を選択し、値に「0」を選択し、OKボタンをクリックします。

続いて、新しい値に「列」を指定し、列に「支払い金額の差」を選択します。

最後に「新しく列を作成」にチェックが付いていることを確認したら、列名を「エクスパンション」に設定して実行します。

これでエクスパンションの列を追加できました。

同じようにコントラクションの列も追加します。

「支払い金額の差」の列ヘッダーメニューから、「計算を作成」、「条件を指定」を選択します。

「条件を元に計算、または置き換える」のダイアログが表示されたら条件を追加します。

条件の設定ダイアログが開いたら、列に「支払い金額の差」、演算子に「より小さい」を選択し、値に「0」を選択し、OKボタンをクリックします。

続いて、新しい値に「列」を指定し、列に「支払い金額の差」を選択します。

最後に「新しく列を作成」にチェックが付いていることを確認したら、列名を「コントラクション」に設定して実行します。

これでコントラクションの列を追加できました。

エクスパンション・コントラクションの集計

最後に、月ごとにエクスパンションとコントラクションを集計するために、「支払い日」の列ヘッダーから集計を選択します。

集計のダイアログが開いたら、グループに「支払い日」を選択し、丸め処理に「月」を選択します。

値に「エクスパンション」と「コントラクション」を選択して、合計値(SUM)を集計関数に選択して実行します。

毎月のエクスパンション(MRR)とコントラクション(MRR)を集計できました。

コントラクションからマイナスの符号を取りたいときの対処法

なお、コントラクションは減収を表すため、マイナスの値になっていますが、もし、マイナスの符号を取りたいときには、コントラクションの列ヘッダーメニューから、数値関数の「絶対値(abs)」を選択します。

「計算を作成」のダイアログが開いたら、そのまま実行します。

コントラクションからマイナスの符号を取ることができました。

Export Chart Image
Output Format
PNG SVG
Background
Set background transparent
Size
Width (Pixel)
Height (Pixel)
Pixel Ratio