定期課金サービスを提供する上で、「なぜ顧客は解約したか」を知ることはとても重要です。
そのため、さまざまな企業やサービスで、解約時にアンケートを行うシステムを開発・実装しています。
Stripeを利用している場合、Customer Portalを利用することで、この解約理由アンケートを簡単に実装することができます。
Dashboardから設定する
もっとも簡単な設定方法は、Dashboardからの操作です。
[設定 > カスタマーポータル]から、[顧客によるサブスクリプションのキャンセルを許可]を有効化しましょう。
その後、[キャンセル理由を収集する]をオンにします。
[理由を編集]ボタンをクリックすることで、アンケートでユーザーが選択できる項目をカスタマイズできます。
Customer Portalでのキャンセル理由アンケート画面を確認する
設定した内容の表示を確認してみましょう。
Stripe CLIを使うことで、簡単にURLを作成できます。
$ stripe billing_portal sessions create --customer cus_xxxx| jq .url
"https://billing.stripe.com/session/test_xxxxxxx"
サブスクリプションをキャンセルしてみましょう。
キャンセルに成功すると、アンケート画面が表示されます。
回答せずに終了することもできる点には注意しましょう。
アンケートの回答結果を確認する
対象のサブスクリプション詳細ページに移動すると、なぜ解約されたかを確認することができます。
データの分析を行う場合、Stripe SigmaでSQLを実行する必要があります。
APIから設定する
Customer Portalは、APIからも作成できます。
APIから作成する場合の実装は、以下のようになります。
const portal = await stripe.billingPortal.configurations.create({
business_profile: {
privacy_policy_url: 'https://example.com/privacy-policy',
terms_of_service_url: 'https://example.com/terms-of-service',
},
features: {
subscription_cancel: {
enabled: true,
mode: 'immediately',
+ cancellation_reason: {
+ enabled: true,
+ options: [
+ 'customer_service',
+ 'low_quality'
+ ]
}
}
},
default_return_url: 'https://example.com'
})
APIから作成した設定を利用してポータルを起動する場合の実装はこちらです。
const portalSesison = await stripe.billingPortal.sessions.create({
+ configuration: "bpc_xxxxx",
customer: 'cus_xxxx',
})
設定のIDは、stripe.billingPortal.configurations.create
のレスポンスなどから取得しましょう。
[2024/04追記] SQLを利用した分析方法などについて
SQLを利用した分析方法や、2023年にリリースされたアップデートを反映した記事を公開しました。
こちらも併せてご覧ください。
おわりに
Stripe BillingとCustomer Portalを活用することで、このようにサービス改善に活かせる新機能などを簡単に導入できるようになります。
この他にも便利な機能を用意していますので、ぜひテストアカウントでお試しください。
関連ドキュメント
[PR] Stripe開発者向け情報をQiitaにて配信中!
2021年12月よりQiitaにて、Stripe開発者のためのブログ記事更新を開始しました。
- [Stripe Updates]:開発者向けStripeアップデート紹介・解説
- ユースケース別のStripe製品や実装サンプルの紹介
- Stripeと外部サービス・OSSとの連携方法やTipsの紹介
- 初心者向けのチュートリアル(予定)
など、Stripeを利用してオンラインビジネスを始める方法について随時更新してまいります。