# RevenueCat + Brew

Apple、Google、Amazon、Stripe、Web Billing にわたる RevenueCat のアプリ内課金、サブスクリプション、請求のイベントで、Brew のオートメーションを起動できます。RevenueCat の Pro プラン以上が必要です。

正規URL：https://brew.new/ja/browse/integrations/revenuecat

- データの方向：データ取り込み
- 接続方式：Webhook シークレット
- アプリ内課金＋サブスクリプションのイベント

## 提供中の機能

- **イベントトリガー**：Apple、Google、Amazon、Stripe、Web Billing にわたる RevenueCat のアプリ内課金、サブスクリプション、請求のイベントで、Brew のオートメーションを起動します。

## サブスクリプションのイベントを、役立つメールに

RevenueCat を接続すると、アプリでの購入、更新、解約や、請求トラブルの発生をきっかけに、ブランドらしいメールを送れるようになります。Brew は RevenueCat の11種類のライフサイクルイベントに対応しており、App Store、Google Play、Amazon、Stripe、Web Billing の購読者に同じフローで対応できます。

購入、更新、返金、エンタイトルメントは、引き続き RevenueCat と各ストアが担当します。Brew が担当するのは、メールの作成と送信です。


## 作れるもの

- 購読者向けのウェルカムメール：INITIAL_PURCHASE は、トライアルの開始を含め、新しいサブスクリプションが始まったときに発火します。単発の購入は、代わりに NON_RENEWING_PURCHASE として届きます。
- 更新時の領収書：RENEWAL は、サブスクリプションが更新されたときや、期限切れになっていた購読者が再購読したときに発火し、productId、priceUsd、pricePurchaseCurrency、currency を含みます。
- 請求トラブルの通知：BILLING_ISSUE は、支払いに失敗したときに発火します。購読者が支払い方法を更新できるページへのリンクを入れてください。
- 解約後のフォローアップ：CANCELLATION には cancelReason が含まれるため、返金や請求エラーの場合と、購読者が自分で解約した場合とで、メールの内容を変えられます。
- ウェルカムバックメール：UNCANCELLATION は、購読者が解約したサブスクリプションを、期限切れになる前に再開したときに発火します。
- 利用終了後の再エンゲージメント：EXPIRATION は、サブスクリプションが実際に終了したときに発火し、expirationReason を含みます。
- プラン変更の通知：PRODUCT_CHANGE には previousProductId と newProductId が含まれます。新しいプロダクトが適用されるのは後になる場合があるため、メールは変更のリクエストを受け付けた旨を伝える書き方にしてください。
- 一時停止と延長の通知：SUBSCRIPTION_PAUSED は、Google Play のサブスクリプションが期間の終了時に一時停止するよう予約されたときに発火します。SUBSCRIPTION_EXTENDED は、ストアが期間を延長したときや、Google Play が請求を延期したときに発火します。

## 解約は、利用終了を意味しない

CANCELLATION は、サブスクリプションの解約を意味する場合も、返金を意味する場合もあり、それだけでは利用が終了したことを示しません。利用の終了を示すイベントは EXPIRATION です。SUBSCRIPTION_PAUSED は、将来の一時停止を予約するだけです。

呼び戻しや解約理由のアンケートのメールには CANCELLATION を、利用が終了していることを前提とするメールには EXPIRATION を使ってください。UNCANCELLATION が届いても、解約をきっかけにすでに始まっている実行は止まりません。後続の各メールの前に、条件で revenuecat_subscription_status を確認してください。

稼働中のオートメーションに SANDBOX のイベントが入らないよう、environment で絞り込んでください。


## Brew で RevenueCat をセットアップする

- RevenueCat の Webhook を使うには、RevenueCat の Pro プラン以上が必要です。
- 「連携サービス」を開いて RevenueCat を選び、「Webhook URL を生成」を選択します。
- RevenueCat で「Integrations」→「Webhooks」を開き、設定を追加します。Brew のURLを貼り付け、「Production」「Sandbox」またはその両方を選んで、送信するライフサイクルイベントを選択します。
- その設定でHMACによる Webhook 署名を有効にし、署名シークレットをすぐにコピーします。RevenueCat がシークレットを表示するのは一度だけです。Brew に貼り付けて「接続」を選択します。RevenueCat のREST APIキーや、任意で設定する Authorization ヘッダーの値は貼り付けないでください。
- RevenueCat からテスト用の Webhook を送信します。署名付きの TEST の配信で接続は有効になりますが、顧客向けのオートメーションが開始されることはありません。
- Brew が送信先のアドレスを把握できるよう、各顧客にサブスクライバー属性 $email を設定します。
- 接続すると、11種類すべてのイベントのトリガーが作成されます。イベントごとに有効・無効を切り替えるスイッチはありません。オートメーションを作成して RevenueCat イベントを選択し、まだ下書きのうちにテストを送信します。一致するイベントが届いたときに実行されるのは、稼働中のオートメーションだけです。

## 対応している RevenueCat イベント

Brew は、次の11種類のイベントに対応しています：

- INITIAL_PURCHASE
- RENEWAL
- NON_RENEWING_PURCHASE
- PRODUCT_CHANGE
- CANCELLATION
- UNCANCELLATION
- EXPIRATION
- BILLING_ISSUE
- SUBSCRIPTION_PAUSED
- SUBSCRIPTION_EXTENDED
- TRANSFER

## コンタクトの同期とパーソナライズ

Brew は、まずサブスクライバー属性 $email から受信者を読み取り、それがなければ、メールアドレス形式の App User ID、元の App User ID、エイリアスを代わりに受け付けます。RevenueCat のエイリアスは App User IDの履歴なので、エイリアスに頼らず、$email を明示的に設定してください。これらのどのフィールドにも実際のアドレスがない場合、Brew はそのイベントを受信者不明として記録し、コンタクトの作成もオートメーションの開始も行いません。

実際のメールアドレスを含む検証済みのイベントを受け取ると、オートメーションで使われているかどうかにかかわらず、Brew はメールアドレスで照合してコンタクトを作成または更新します。データがある場合、Brew は revenuecat_app_user_id、revenuecat_store、revenuecat_environment を設定します。

ライフサイクルイベントでは、revenuecat_subscription_status が active、cancelled、expired、billing_issue、pause_scheduled のいずれかに設定されます。イベントに含まれていれば、Brew は revenuecat_product_id、revenuecat_cancel_reason、revenuecat_expiration_reason、revenuecat_last_purchase_at、revenuecat_pending_product_id も保存します。

差し込みタグには、選択したイベントで宣言されているペイロードのスキーマを使います。すべてのイベントに、値があれば email、productId、priceUsd、pricePurchaseCurrency、currency、store、environment、createdAt が含まれます。priceUsd は米ドル建ての価格、pricePurchaseCurrency は currency が示す通貨建ての価格です。RevenueCat のペイロードには、姓も名も含まれません。

store には、APP_STORE や PLAY_STORE など、RevenueCat から届いた値がそのまま入ります。RevenueCat が新しい値を追加することもあるため、必要な値を指定して照合してください。

購入しただけでは、マーケティングメールの受信に同意したことにはなりません。同意は別途記録し、プロモーションメールを送る前に確認してください。


## TRANSFER ではメールが送信されないのはなぜですか？

RevenueCat が送る TRANSFER には、App User IDは含まれますが、受信者のメールアドレスは含まれません。Brew はこのイベントを受信者不明として記録し、オートメーションは開始しません。


## イベントが表示されているのに、メールが送信されないのはなぜですか？

イベントの受信とメールの送信は、別々のステップです。一致するオートメーションが稼働中であることを確認してから、そのフィルター、実行履歴、受信者が対象に含まれるかどうか、送信ドメインを確認してください。TEST の配信でオートメーションが開始されることはありません。受信者不明の場合は、まず $email を確認してください。Brew は、メールアドレス形式の App User ID、元の App User ID、エイリアスも受け付けます。


## 制限事項とトラブルシューティング

- Brew は、エンタイトルメントの付与や取り消し、返金の実行、サブスクリプションの変更はできません。
- 署名ヘッダーがないことによる401エラーは、通常、HMAC署名がオフになっているか、署名シークレットの代わりに Authorization の値が貼り付けられていることを意味します。HMAC署名を有効にし、新しいシークレットをコピーして、再接続してください。
- HMACの不一致による401エラーは、Brew に保存されているシークレットが異なるか、古くなっていることを意味します。RevenueCat でシークレットをローテーションすると古いシークレットは無効になるため、新しい値をコピーして、Brew を再接続してください。
- Webhook がまったく届かない場合は、お使いの RevenueCat のプランに Webhook が含まれているか確認してください。
- 各メールの同意状況と目的を確認してください。購読者を同期しても、プロモーションメールを送ってよいことにはなりません。

## 出典とセットアップガイド

- [RevenueCat セットアップガイド](https://docs.brew.new/integrations/import/revenuecat)
- [オートメーションを作成する](https://docs.brew.new/create-emails/build-an-automation)
- [差し込みタグ](https://docs.brew.new/create-emails/merge-tags)
- [Brew で送信できるメール](https://docs.brew.new/get-started/what-you-can-send)
- [RevenueCat の Webhook](https://www.revenuecat.com/docs/integrations/webhooks)
- [RevenueCat の顧客属性](https://www.revenuecat.com/docs/customers/customer-attributes)

## 関連リンク

- [すべての連携サービス](https://brew.new/ja/browse/integrations.md)
- [新規登録](https://brew.new/ja/sign-up.md)
- ウェブサイト：https://brew.new
