エクスパンションとコントラクションは、SaaSビジネスの収益を大きく左右する重要な指標です。これらの指標は既存顧客の利用プラン変更による収益の変動を示すもので、特にカスタマーサクセスやセールスチームのマネージャーにとって重要な指標となります。
月次でモニタリングすべき指標であり、顧客の利用状況や満足度を反映する指標としても活用できます。
例えばDropboxのように、多くのSaaS企業は、提供するサービス内容に応じて複数の料金プランを用意しています。
話をシンプルにするために、今回は以下のように2つの月額費用が設定がされているSaaSサービスを想像してみてください。
2月から3月にかけて、2人の顧客がスタンダードプランから、プレミアムプランにアップグレードした場合、3月のMRR(月間定期収益)は2万円増えることになります。
このアップグレードによる収益増をエクスパンションと呼び、これを月単位で集計したものをエクスパンションMRRと呼びます。
一方で、アップグレードする顧客がいれば、プランをダウングレードする顧客もいます。
2月から3月にかけて、1人の顧客がプレミアムプランから、スタンダードプランダウンレードした場合、3月のMRR(月間定期収益)は1万円減ることになります。
そうすると、さっきとは逆に元々見込まれていた収益よりも翌月の収益は減ることになります。
このダウングレード等による収益減をコントラクションと呼び、これを月単位で集計したものをコントラクションMRRと呼びます。
ところで、以前、ビジネスが成長しているかを計る指標の一つとして紹介した、ネット・ニューMRRという指標がありました。
このネット・ニューMRRは新規顧客からの月間定期収益であるニューMRRからチャーンによる減収であるチャーンMRRを引いたものでした。
ただ実は複数の料金プランを提供しているSaaSビジネスにおいては上記の計算は完璧ではなく、上述したエクスパンションとコントラクションを考慮し、計算する必要があります。
ここからは、実際のデータを使ってエクスパンションとコントラクションの計算方法を紹介します。
今回は以下のように1行が1件の支払い情報を表し、顧客ID、支払い日、支払い金額などの情報を含むサブスクリプション型のビジネスの支払いデータを使ってエクスパンションとコントラクションを計算します。(データはこちらのページからダウンロードできます)
なおExploratoryでは、指標を作成するときに2つの方法があります。
AIプロンプト:自然言語でデータを処理する機能で指標を作成する
UIメニュー:UIからアクセス可能なメニューでデータを加工して指標を作成する
こちらのノートではそれぞれの方法を紹介します。
「AIプロンプト」は Businessプラン や Personalプラン といった有料ライセンス、またはそれらのプランを トライアル中のユーザー のみご利用いただけます。
また、AIプロンプトはデバイスがインターネットに接続されている場合のみ利用可能です。
上記のプランをご利用でない場合、またはインターネットに接続されていないデバイスをご利用の場合は、「UIでエクスパンションとコントラクションを計算する」のセクションに進んでください。
こちらのセクションでは、AI プロンプトを使った指標の作成方法を紹介します。(AIプロンプトの詳細については、こちらをご覧ください。
「AI データ加工」ボタンをクリックして、AI プロンプトのダイアログが表示されたら、以下のようなテキストを入力し、実行します。
月ごとにエクスパンションとコントラクションを計算して
すると、エクスパンションとコントラクションを計算するためのコードが生成されるので、結果を確認し、「ステップとして実行」ボタンをクリックします。
ステップが追加され、エクスパンションとコントラクションを計算できました。
ここからはUIでエクスパンションとコントラクションを計算する方法を紹介します。
前述したように、エクスパンションは、プランのアップグレードなどによって、前月(あるいは前年)から増えた収益となり、コントラクションはプランのダウングレードなどによって、前月(あるいは前年)から減った収益です。
そのため、顧客ごとに前回との支払い金額の差を計算し、増収(0より大きい)の場合は、エクスパンション、減収(0より小さい場合)場合コントラクションと捉えることが可能です。
そこで、まずは顧客ごとに前回からの支払い金額の差を計算するために、「支払い金額」の列ヘッダーメニューから「表計算」、「…からの差」、「前の値(lag)」を選択します。
表計算のダイアログが開いたら、顧客ごとに差を計算するために、グループに「顧客ID」を選択し、プレビューをクリックします。
このとき、データが日付順に並んでいないと、前の値との差が、前回の支払い金額からの差として計算できないため、「計算前にデータを並び替える」にチェックを付けて、並び替える列に「支払い日」を選択し、ソートに昇順を選択します。
最後に、値の列名を編集し、列名を「支払い金額の差」に変更し、実行します。
これでユーザーごとに「支払い金額の差」を計算できましたが、このとき、値が0を超えるものは「エクスパンション」、値が0を下回るものがコントラクトションとなるわけです。
そのため、ここからは、「エクスパンション」と「コントラクション」という新しい列を作成し、「支払い金額の差」が0を超えるときには、同じ行のエクスパンション列に該当の値が入り、「支払い金額の差」が0を下回るときには、同じ行のエクスパンション列に該当の値が入るようにします。
「支払い金額の差」の列ヘッダーメニューから、「計算を作成」、「条件付き」を選択します。
「条件を元に計算、または置き換える」のダイアログが表示されたら条件を追加します
条件の設定ダイアログが開いたら、列に「支払い金額の差」、演算子に「より大きい」を選択し、値に「0」を選択し、OKボタンをクリックします。
続いて、新しい値に「列」を指定し、列に「支払い金額の差」を選択します。
最後に「新しく列を作成」にチェックが付いていることを確認したら、列名を「エクスパンション」に設定して実行します。
これでエクスパンションの列を追加できました。
同じようにコントラクションの列も追加します。
「支払い金額の差」の列ヘッダーメニューから、「計算を作成」、「条件を指定」を選択します。
「条件を元に計算、または置き換える」のダイアログが表示されたら条件を追加します。
条件の設定ダイアログが開いたら、列に「支払い金額の差」、演算子に「より小さい」を選択し、値に「0」を選択し、OKボタンをクリックします。
続いて、新しい値に「列」を指定し、列に「支払い金額の差」を選択します。
最後に「新しく列を作成」にチェックが付いていることを確認したら、列名を「コントラクション」に設定して実行します。
これでコントラクションの列を追加できました。
最後に、月ごとにエクスパンションとコントラクションを集計するために、「支払い日」の列ヘッダーから集計を選択します。
集計のダイアログが開いたら、グループに「支払い日」を選択し、丸め処理に「月」を選択します。
値に「エクスパンション」と「コントラクション」を選択して、合計値(SUM)を集計関数に選択して実行します。
毎月のエクスパンション(MRR)とコントラクション(MRR)を集計できました。
なお、コントラクションは減収を表すため、マイナスの値になっていますが、もし、マイナスの符号を取りたいときには、コントラクションの列ヘッダーメニューから、数値関数の「絶対値(abs)」を選択します。
「計算を作成」のダイアログが開いたら、そのまま実行します。
コントラクションからマイナスの符号を取ることができました。