# RevenueCat + Brew

เริ่มระบบอัตโนมัติของ Brew จากเหตุการณ์การซื้อในแอป การสมัครสมาชิก และการเรียกเก็บเงินของ RevenueCat ทั้งจาก Apple, Google, Amazon, Stripe และ Web Billing ต้องใช้แพ็กเกจ RevenueCat Pro ขึ้นไป

URL หลัก: https://brew.new/th/browse/integrations/revenuecat

- ทิศทาง: ข้อมูลขาเข้า
- การเชื่อมต่อ: คีย์ลับเว็บฮุก
- เหตุการณ์ IAP + การสมัครสมาชิก

## ความสามารถที่ใช้ได้แล้ว

- **ทริกเกอร์จากเหตุการณ์**: เริ่มระบบอัตโนมัติของ Brew จากเหตุการณ์การซื้อในแอป การสมัครสมาชิก และการเรียกเก็บเงินของ RevenueCat ทั้งจาก Apple, Google, Amazon, Stripe และ Web Billing

## เปลี่ยนเหตุการณ์การสมัครสมาชิกให้เป็นอีเมลที่มีประโยชน์

เชื่อมต่อ 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 ด้วยเงื่อนไขก่อนอีเมลแต่ละฉบับที่ตามมา

กรองตาม environment เพื่อกันไม่ให้เหตุการณ์ SANDBOX เข้าสู่ระบบอัตโนมัติที่ทำงานอยู่


## ตั้งค่า RevenueCat ใน Brew

- เว็บฮุกของ RevenueCat ต้องใช้แพ็กเกจ RevenueCat Pro ขึ้นไป
- เปิดหน้า “การเชื่อมต่อ” เลือก RevenueCat แล้วเลือก “สร้าง URL เว็บฮุก”
- ใน RevenueCat ให้เปิด Integrations > Webhooks แล้วเพิ่มการกำหนดค่า วาง URL ของ Brew เลือก Production, Sandbox หรือทั้งสองอย่าง แล้วเลือกเหตุการณ์ในวงจรการสมัครสมาชิกที่จะส่ง
- เปิดการลงนามเว็บฮุกแบบ HMAC ในการกำหนดค่านั้น แล้วคัดลอกคีย์ลับสำหรับลงนามทันที เพราะ RevenueCat แสดงคีย์นี้เพียงครั้งเดียว วางลงใน Brew แล้วเลือก “เชื่อมต่อ” อย่าวางคีย์ REST API ของ RevenueCat หรือค่าเฮดเดอร์ Authorization ซึ่งเป็นตัวเลือกเสริม
- ส่งเว็บฮุกทดสอบจาก RevenueCat เหตุการณ์ TEST ที่มีลายเซ็นจะเปิดใช้งานการเชื่อมต่อ แต่จะไม่เริ่มระบบอัตโนมัติสำหรับลูกค้าเลย
- ตั้งค่าแอตทริบิวต์ผู้สมัครสมาชิก $email ให้ลูกค้าทุกราย เพื่อให้ Brew มีที่อยู่อีเมลสำหรับส่ง
- เมื่อเลือก “เชื่อมต่อ” Brew จะสร้างทริกเกอร์ให้ครบทั้ง 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, original app user ID หรือ alias ที่มีรูปแบบเป็นอีเมลเป็นค่าสำรอง ทั้งนี้ alias ของ RevenueCat คือประวัติของ app user ID จึงควรตั้งค่า $email ให้ชัดเจนแทนการพึ่ง alias หากไม่มีที่อยู่อีเมลจริงในฟิลด์เหล่านี้เลย 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 คือราคาในสกุล USD และ pricePurchaseCurrency คือราคาในสกุลเงินที่ระบุไว้ใน currency ทั้งนี้เพย์โหลดของ RevenueCat ไม่มีชื่อและนามสกุลให้ Brew

ฟิลด์ store ส่งต่อค่ามาจาก RevenueCat โดยตรง เช่น APP_STORE หรือ PLAY_STORE และ RevenueCat อาจเพิ่มค่าใหม่ได้ ให้จับคู่เฉพาะค่าที่คุณสนใจ

การซื้อไม่ถือเป็นความยินยอมรับอีเมลการตลาด ให้บันทึกความยินยอมแยกต่างหาก และตรวจสอบก่อนส่งอีเมลโปรโมชัน


## ทำไม TRANSFER จึงไม่ส่งอีเมลเลย?

RevenueCat ส่ง TRANSFER มาพร้อม app user ID แต่ไม่มีอีเมลผู้รับ Brew จึงบันทึกเหตุการณ์นี้ว่าระบุผู้รับไม่ได้และไม่เริ่มระบบอัตโนมัติ


## ทำไมมีเหตุการณ์เข้ามาแต่ไม่มีการส่งอีเมล?

การได้รับเหตุการณ์กับการส่งอีเมลเป็นคนละขั้นตอนกัน ตรวจสอบว่าระบบอัตโนมัติที่ตรงกันอยู่ในสถานะ “ทำงานอยู่” จากนั้นดูตัวกรอง ประวัติการทำงาน การเข้าเกณฑ์ของผู้รับ และโดเมนผู้ส่ง เหตุการณ์ TEST จะไม่เริ่มระบบอัตโนมัติเลย เมื่อระบุผู้รับไม่ได้ ให้ตรวจสอบ $email ก่อน นอกจากนี้ Brew ยังยอมรับ app user ID, original app user ID และ alias ที่มีรูปแบบเป็นอีเมลด้วย


## ข้อจำกัดและการแก้ปัญหา

- Brew ให้หรือเพิกถอนสิทธิ์การใช้งาน ออกเงินคืน หรือแก้ไขการสมัครสมาชิกไม่ได้
- รหัส 401 ที่ไม่มีเฮดเดอร์ลายเซ็นมักหมายความว่าการลงนามแบบ HMAC ปิดอยู่ หรือมีการวางค่า Authorization แทนคีย์ลับสำหรับลงนาม ให้เปิดการลงนามแบบ HMAC คัดลอกคีย์ลับใหม่ แล้วเชื่อมต่ออีกครั้ง
- รหัส 401 ที่ HMAC ไม่ตรงกันหมายความว่า Brew เก็บคีย์ลับที่ต่างออกไปหรือล้าสมัยไว้ การเปลี่ยนคีย์ลับใหม่ใน RevenueCat จะทำให้คีย์เดิมใช้ไม่ได้ จึงต้องคัดลอกค่าใหม่แล้วเชื่อมต่อ Brew อีกครั้ง
- หากไม่มีเว็บฮุกเข้ามาเลย ให้ตรวจสอบว่าแพ็กเกจ RevenueCat ของคุณรวมเว็บฮุกไว้ด้วย
- ตรวจสอบความยินยอมและวัตถุประสงค์ของอีเมลแต่ละฉบับ การซิงค์ผู้สมัครสมาชิกไม่ได้ทำให้คุณมีสิทธิ์ส่งอีเมลโปรโมชัน

## แหล่งอ้างอิงและคู่มือการตั้งค่า

- [คู่มือการตั้งค่า 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](https://www.revenuecat.com/docs/integrations/webhooks)
- [แอตทริบิวต์ลูกค้าของ RevenueCat](https://www.revenuecat.com/docs/customers/customer-attributes)

## ที่เกี่ยวข้อง

- [การเชื่อมต่อทั้งหมด](https://brew.new/th/browse/integrations.md)
- [สมัครใช้งาน](https://brew.new/th/sign-up.md)
- เว็บไซต์: https://brew.new
