# Clerk + Brew

ユーザーの新規登録、組織の変更、有料サブスクリプション、ウェイトリストへの登録といった Clerk の Webhook イベントで、Brew のオートメーションを起動できます。

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

- データの方向：データ取り込み
- 接続方式：Webhook シークレット
- 認証イベントのトリガー

## 提供中の機能

- **イベントトリガー**：ユーザー、組織、請求、ウェイトリストの各カテゴリーにわたる13種類の Clerk Webhook イベントで、Brew のオートメーションを起動します。

## Clerk のイベントを、役立つメールに

Clerk を接続すると、新規登録、組織への参加、Clerk Billing のサブスクリプション開始、ウェイトリストへの登録をきっかけに、ブランドらしいメールを送れるようになります。Clerk が各 Webhook に署名し、Brew が13種類のイベントをオートメーションのトリガーに変えます。

ログイン、組織、請求は、引き続き Clerk が担当します。Brew はイベントを受け取るだけです。ユーザーの変更、組織の作成、サブスクリプションへの課金はできません。


## 作れるもの

- ウェルカムメール：user.created は、新しいユーザーが登録したときに発火します。名前に加えて、username、imageUrl、lastSignInAt も使えます。
- チームのオンボーディング：organizationMembership.created には、招待を承諾したか直接追加されたかにかかわらず、新しいメンバーの organizationName、organizationSlug、roleName が含まれます。招待が承諾されたときは organizationInvitation.accepted も発火するため、ウェルカムメールが2通届かないよう、トリガーはどちらか一方に絞ってください。
- 招待のフォローアップ：organizationInvitation.created、organizationInvitation.accepted、organizationInvitation.revoked は招待されたアドレスを受信者とし、roleName、status、expiresAt を含みます。組織名、招待した人、承諾用のリンクは含まれません。
- 購読者向けのウェルカムメール：subscription.created には、planName、planSlug、planAmount、currency、periodStart、periodEnd が含まれます。
- トライアル終了のリマインダー：subscriptionItem.freeTrialEnding は、Clerk Billing の無料トライアルが有料サブスクリプションに切り替わる少し前に発火し、planName、planAmount、currency、periodEnd を含みます。
- 支払い遅延の通知：subscriptionItem.pastDue は、サブスクリプションアイテムの支払いが行われなかったときに発火します。メールには自社の請求ページへのリンクを入れてください。
- 解約と、放棄されたトライアルのフォローアップ：subscriptionItem.canceled は、アイテムが解約されたときに発火します。subscriptionItem.abandoned は通常、支払い方法が登録されないままトライアルが終了したことを意味します。
- ウェイトリスト登録の確認：waitlistEntry.created は、メールアドレスが Clerk のウェイトリストに登録されたときに発火します。

## 組織イベントには、作成者の特定が必要

organization.created にはメールアドレスが含まれません。Brew は、現在の接続でこれまでに受け取った Clerk イベントで把握しているユーザーの中から、作成者のユーザーIDを探します。実際のメールアドレスが見つかれば、イベントは処理されます。見つからなければ、Brew はそのイベントを受信者不明として記録し、コンタクトの作成もオートメーションの開始も行いません。

Brew が作成者のアドレスを把握できるよう、user.created も購読してください。毎回必ず誰かに届ける必要があるメールには、メンバーのアドレスを含む organizationMembership.created を使います。


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

- 「連携サービス」を開いて Clerk を選び、「Webhook URL を生成」を選択します。
- Clerk のダッシュボードで「Webhooks」を開き、Brew のURLでエンドポイントを追加します。
- user、organization、organizationInvitation、organizationMembership、paymentAttempt、subscription、subscriptionItem、waitlistEntry の各グループから、対応している13種類のイベントをエンドポイントの購読対象に選び、エンドポイントを作成します。
- エンドポイントの署名シークレット（whsec_ で始まる値）を表示して Brew に貼り付け、「接続」を選択します。Brew は、Standard Webhooks（Svix）の仕様に沿って、すべての配信を検証します。
- Clerk でエンドポイントの「Testing」タブを開き、user.created を選んで「Send Example」を選択します。Brew のステータスが「テストイベント待ち」から「接続済み」に変わります。サンプルは Webhook の検証にだけ使われます。Brew がコンタクトを追加したり、オートメーションを開始したりすることはありません。
- 接続すると、13種類すべてのイベントのトリガーが作成されます。イベントごとに有効・無効を切り替えるスイッチはありません。
- オートメーションを作成して Clerk イベントを選択し、まだ下書きのうちにテストを送信します。一致するイベントが届いたときに実行されるのは、稼働中のオートメーションだけです。

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

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

- user.created
- organization.created
- organizationInvitation.created
- organizationInvitation.accepted
- organizationInvitation.revoked
- organizationMembership.created
- paymentAttempt.created
- subscription.created
- subscriptionItem.freeTrialEnding
- subscriptionItem.pastDue
- subscriptionItem.canceled
- subscriptionItem.abandoned
- waitlistEntry.created

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

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

user.created では、clerk_username、clerk_image_url、clerk_signed_up_at、clerk_last_sign_in_at も設定されます。招待とメンバーシップのイベントでは、clerk_organization_id、clerk_org_role、clerk_org_role_name が設定されます。さらに、招待では clerk_org_invitation_status が、メンバーシップでは clerk_organization_name と clerk_organization_slug が加わります。

請求イベントでは clerk_subscription_status と clerk_plan_name が設定され、イベントによっては clerk_plan_slug、clerk_subscription_period_end、clerk_is_trialing も加わります。paymentAttempt.created では clerk_last_payment_attempt_status と clerk_last_payment_attempt_at が、waitlistEntry.created では clerk_waitlist_status が設定されます。

差し込みタグには、選択したイベントで宣言されているペイロードのスキーマを使います。すべてのイベントに email、firstName、lastName、createdAt が含まれます。そのほかのフィールドはイベントによって異なり、planName、planAmount、roleName、organizationName、grandTotalFormatted などがあります。planAmount と grandTotalAmount は通貨の最小単位で表されるため、USDの場合、2000は$20.00です。タイムスタンプは秒単位の Unix 時間です。

ユーザー、組織、サブスクリプションのIDなど、Clerk オブジェクトのIDは差し込みタグにはなりません。ユーザーIDは、clerk_user_id としてコンタクトに保存されます。

Clerk のアカウントがあるだけでは、マーケティングメールの受信に同意したことにはなりません。登録時に同意を記録し、プロモーションメールを送る前に確認してください。


## paymentAttempt.created で、支払い失敗のメールを送れますか？

確実には送れません。Brew が受け取るのは paymentAttempt.created だけで、その後の支払い試行の更新は受け取りません。status フィールドの値は pending、paid、failed のいずれかになりますが、支払い試行の作成後に失敗した支払いは、未対応のイベントとして Brew に届きます。支払いが滞った場合の通知には、subscriptionItem.pastDue を使ってください。メールの文面に合計金額を入れるなら、$22.00のように整形済みの値が入った grandTotalFormatted を使えます。


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

イベントの受信とメールの送信は、別々のステップです。一致するオートメーションが稼働中であることを確認してから、そのフィルター、実行履歴、受信者が対象に含まれるかどうか、送信ドメインを確認してください。「Send Example」による配信は Webhook を検証するだけで、オートメーションを開始することはありません。また、作成者がわからない organization.created イベントは、受信者不明として記録されます。


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

- Brew は、Clerk のユーザー、組織、サブスクリプションの作成や変更はできません。
- オートメーションを開始するのは、一覧にある13種類のイベントだけです。ユーザーの更新や削除など、そのほかの Clerk イベントは未対応として記録されます。
- Clerk 側ですべての配信が401エラーになる場合は、Brew の署名シークレットが Clerk のエンドポイントのシークレットと一致していません。Clerk で現在のシークレットを表示し、その値で接続し直してください。
- Brew で使う署名シークレットは、whsec_ で始まり、24文字以上である必要があります。
- 各メールの同意状況と目的を確認してください。Clerk のユーザーを同期しても、プロモーションメールを送ってよいことにはなりません。

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

- [Clerk セットアップガイド](https://docs.brew.new/integrations/import/clerk)
- [オートメーションを作成する](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)
- [Clerk の Webhook の概要](https://clerk.com/docs/guides/development/webhooks/overview)

## 関連リンク

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