# Stripe + Brew

ซิงค์ลูกค้า Stripe เข้าสู่กลุ่มเป้าหมายของแบรนด์ เริ่มระบบอัตโนมัติจากเหตุการณ์ Stripe 22 รายการ และส่งอีเมลตามวงจรชีวิตลูกค้าที่สร้างไว้ให้แล้ว (ต้อนรับ ช่วงทดลองใช้สิ้นสุด กู้คืนการชำระเงินที่ไม่สำเร็จ ดึงลูกค้ากลับ)

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

- ทิศทาง: ข้อมูลขาเข้า
- การเชื่อมต่อ: OAuth
- ซิงค์ลูกค้า + ทริกเกอร์จากเหตุการณ์

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

- **ทริกเกอร์จากเหตุการณ์**: เริ่มระบบอัตโนมัติของ Brew จากเหตุการณ์ Stripe 22 รายการ ครอบคลุมการสมัครสมาชิก ใบแจ้งหนี้ เซสชันชำระเงิน ใบเสนอราคา รายการเรียกเก็บเงิน การคืนเงิน และ Payment Intent
- **ซิงค์ผู้ติดต่อ**: ซิงค์ลูกค้า Stripe เข้าสู่กลุ่มเป้าหมายของแบรนด์ พร้อมฟิลด์ที่กำหนดเอง `stripe_*` ที่ใช้เป็นเงื่อนไขกรองได้
- **นำเข้าลูกค้าจำนวนมาก**: ดึงลูกค้าทุกรายใน Stripe ย้อนหลังเข้าสู่แบรนด์ที่ใช้งานอยู่ได้ในคลิกเดียว ทำต่อจากจุดเดิมได้และทำงานอย่างทนทานด้วย Vercel Workflow
- **เทมเพลตอีเมลตามวงจรชีวิตลูกค้า**: เทมเพลตตั้งต้นสำหรับอีเมลต้อนรับ ช่วงทดลองใช้สิ้นสุด กู้คืนการชำระเงินที่ไม่สำเร็จ และดึงลูกค้ากลับ

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

เชื่อมต่อ Stripe ผ่าน OAuth เพื่อเริ่มส่งอีเมลที่ตรงกับแบรนด์เมื่อการสมัครสมาชิกเริ่มต้น ช่วงทดลองใช้ใกล้สิ้นสุด หรือการชำระใบแจ้งหนี้ไม่สำเร็จ Brew จะลงทะเบียนเว็บฮุกและเปิดให้ใช้เหตุการณ์ที่รองรับเป็นทริกเกอร์ของระบบอัตโนมัติ

Stripe ยังคงดูแลการชำระเงิน การลองเรียกเก็บซ้ำ การคืนเงิน และการเปลี่ยนแปลงการสมัครสมาชิก ส่วน Brew สร้างและส่งอีเมล


## สิ่งที่คุณสร้างได้

- อีเมลเตือนช่วงทดลองใช้: ใช้เหตุการณ์ customer.subscription.trial_will_end เพื่ออธิบายว่าจะเกิดอะไรขึ้นต่อไป และลิงก์ไปยังหน้าแพ็กเกจหรือหน้าการเรียกเก็บเงินของคุณ
- อีเมลแจ้งการชำระเงินไม่สำเร็จ: ใช้เหตุการณ์ invoice.payment_failed เพื่อส่งการแจ้งเตือนอย่างทันท่วงที พร้อมลิงก์ไปยังหน้าการเรียกเก็บเงินของคุณเอง และประสานกับอีเมลถึงลูกค้าที่ Stripe ส่ง เพื่อไม่ให้การแจ้งเตือนเดียวกันถูกส่งซ้ำสองครั้ง
- อีเมลต้อนรับผู้สมัครสมาชิก: เริ่มจากเหตุการณ์ customer.subscription.created หรือ checkout.session.completed โดยเลือกทริกเกอร์เพียงตัวเดียวเพื่อไม่ให้ส่งอีเมลต้อนรับซ้ำ
- อีเมลแจ้งเปลี่ยนแพ็กเกจ: เหตุการณ์ customer.subscription.updated ให้ฟิลด์ previousPlan และ newPlan ได้ เมื่อเหตุการณ์นั้นมีฟิลด์เหล่านี้
- อีเมลยืนยันการชำระเงิน: invoice.paid เกิดขึ้นเมื่อมีการชำระใบแจ้งหนี้ ใช้ amount, currency และ invoiceNumber เป็นแท็กตัวแปรได้
- อีเมลแจ้งล่วงหน้าก่อนต่ออายุ: invoice.upcoming เกิดขึ้นก่อนที่ Stripe จะสร้างใบแจ้งหนี้ถัดไปของการสมัครสมาชิก และมี amount กับ currency มาด้วย เพย์โหลดของเหตุการณ์นี้ไม่มีวันต่ออายุ จึงควรลิงก์ไปยังหน้าการเรียกเก็บเงินของคุณเพื่อให้ดูรายละเอียด
- อีเมลติดตามหลังการยกเลิก: customer.subscription.deleted เกิดขึ้นเมื่อการสมัครสมาชิกถูกยกเลิกหรือถูกลบ การสมัครสมาชิกใหม่จะไม่หยุดรอบการทำงานที่กำลังดำเนินอยู่ จึงควรเพิ่มเงื่อนไข contact.stripe_subscription_status ไว้ก่อนอีเมลแต่ละฉบับที่ตามมา
- อีเมลแจ้งหยุดชั่วคราวและกลับมาใช้ต่อ: customer.subscription.paused และ customer.subscription.resumed ใช้แจ้งยืนยันการเปลี่ยนแปลงให้ผู้สมัครสมาชิกทราบ
- อีเมลแจ้งผลการชำระเงินแบบล่าช้า: checkout.session.async_payment_succeeded และ checkout.session.async_payment_failed แจ้งผลของวิธีชำระเงินที่ต้องรอดำเนินการหลังลูกค้าผ่านหน้าชำระเงินแล้ว ใช้ paymentStatus และ sessionMode เป็นแท็กตัวแปรได้
- อีเมลเตือนการชำระเงินที่ถูกทิ้ง: Brew ไม่มีทริกเกอร์สำหรับเซสชัน Checkout ที่หมดอายุ ให้ส่งเหตุการณ์ที่กำหนดเองของคุณเมื่อแอปพลิเคชันพบว่าเซสชันหมดอายุ
- อีเมลยืนยันการคืนเงิน: refund.created มี refundAmount, refundCurrency, refundReason และ refundStatus ของการคืนเงินรายการนั้น ส่วน charge.refunded มีเฉพาะยอดรวมระดับรายการเรียกเก็บเงิน เช่น amountRefunded
- อีเมลติดตามใบเสนอราคา: quote.finalized, quote.accepted และ quote.canceled มียอดเงิน สกุลเงิน และสถานะของใบเสนอราคา แต่ไม่มีฟิลด์ลิงก์ใบเสนอราคา จึงควรพาผู้ซื้อไปยังหน้าของคุณเอง
- อีเมลแจ้งการชำระเงินครั้งเดียวไม่สำเร็จ: payment_intent.payment_failed มี failureCode, failureMessage และ declineCode อีเมลจึงบอกได้ว่าการชำระเงินไม่สำเร็จเพราะอะไร

## อีเมลติดตามการชำระเงินไม่สำเร็จที่ตรวจสอบสถานะปัจจุบัน

เริ่มจากอีเมลหนึ่งฉบับที่ส่งเมื่อเกิดเหตุการณ์ invoice.payment_failed สำหรับอีเมลเตือนครั้งถัดไป ให้แอปพลิเคชันของคุณตั้งเวลาตรวจสอบสถานะใบแจ้งหนี้ใน Stripe ใหม่อีกครั้ง แล้วส่งเหตุการณ์ที่กำหนดเองของ Brew แยกต่างหาก เฉพาะเมื่อใบแจ้งหนี้ยังไม่ได้ชำระและลูกค้ายังเข้าเกณฑ์อยู่

หลังขั้นตอน “รอ” ฟิลด์ของเหตุการณ์จะยังเป็นเพย์โหลดเดิมของเหตุการณ์นั้น เงื่อนไข contact.stripe_subscription_status จะอ่านค่าปัจจุบันของฟิลด์นี้ในผู้ติดต่อของ Brew ตอนที่โหนดนั้นทำงาน โดยไม่ได้ดึงข้อมูลจาก Stripe และไม่ได้ยืนยันว่าใบแจ้งหนี้ใบนั้น ๆ ได้รับการชำระแล้ว การอัปเดตผู้ติดต่อและเหตุการณ์การชำระเงินใหม่จะไม่ยกเลิกรอบการทำงานก่อนหน้าโดยอัตโนมัติ และการอัปเดตบัตรก็ไม่ใช่หลักฐานว่าชำระเงินแล้ว

ทดสอบทั้งสองเส้นทาง: ลูกค้าที่ยังไม่ได้ชำระใบแจ้งหนี้และยังเข้าเกณฑ์อยู่จะได้รับอีเมลเตือน ส่วนลูกค้าที่ชำระก่อนการตรวจสอบตามเวลาที่ตั้งไว้จะไม่ได้รับ ทดสอบการลองซ้ำตามข้อกำหนด idempotency ที่ระบุไว้ในเอกสาร


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

- เปิดหน้า “การเชื่อมต่อ” เลือก Stripe แล้วเลือก “เชื่อมต่อ” จากนั้นอนุญาตการเข้าถึงผ่าน Stripe OAuth
- Brew จัดเตรียมเว็บฮุกและประเภทเหตุการณ์ที่รองรับ 22 ประเภทให้ โดยไม่มีสวิตช์เปิดหรือปิดเหตุการณ์
- หากต้องการนำเข้าลูกค้าที่มีอยู่ ให้เปิด “จัดการ” แล้วเลือก “ซิงค์ลูกค้าจาก Stripe” ข้อมูลลูกค้าเพียงอย่างเดียวไม่ถือเป็นความยินยอมรับอีเมลการตลาด
- สร้างระบบอัตโนมัติแล้วเลือกเหตุการณ์ Stripe ที่ใช้ ตรวจทานผู้รับ ฟิลด์ในเพย์โหลด เนื้อหาอีเมล และลิงก์เกี่ยวกับการเรียกเก็บเงิน
- Brew เชื่อมต่อกับบัญชี Stripe ที่ใช้งานจริง และเหตุการณ์จากโหมดทดสอบจะไม่ซิงค์ผู้ติดต่อหรือเริ่มระบบอัตโนมัติ ให้เก็บระบบอัตโนมัติไว้เป็นฉบับร่าง แล้วทดสอบกับผู้รับที่คุณควบคุมได้ก่อนเผยแพร่ เฉพาะระบบอัตโนมัติที่ “ทำงานอยู่” เท่านั้นที่จะทำงานเมื่อได้รับเหตุการณ์ที่ตรงกัน
- เอเจนต์สร้าง ทดสอบ และเผยแพร่ระบบอัตโนมัติผ่าน Brew MCP หรือ API ได้ หลังจากผู้ที่มีสิทธิ์เชื่อมต่อบัญชี Stripe ในแอปแล้ว

## เหตุการณ์ Stripe ที่รองรับ

Brew รองรับประเภทเหตุการณ์ 22 ประเภทต่อไปนี้:

- checkout.session.async_payment_succeeded
- checkout.session.async_payment_failed
- checkout.session.completed
- customer.created
- customer.updated
- customer.deleted
- customer.subscription.created
- customer.subscription.updated
- customer.subscription.paused
- customer.subscription.resumed
- customer.subscription.trial_will_end
- customer.subscription.deleted
- invoice.created
- invoice.paid
- invoice.payment_failed
- invoice.upcoming
- quote.finalized
- quote.accepted
- quote.canceled
- charge.refunded
- refund.created
- payment_intent.payment_failed

## การซิงค์ลูกค้าและการปรับเนื้อหาเฉพาะบุคคล

เหตุการณ์ลูกค้าและการสมัครสมาชิกอัปเดตผู้ติดต่อใน Brew ด้วยข้อมูลการเรียกเก็บเงินได้ ฟิลด์ผู้ติดต่อที่มีให้ใช้ ได้แก่ stripe_subscription_status, stripe_subscription_plan, stripe_plan_amount_cents, stripe_trial_end, stripe_renews_at, stripe_cancel_at_period_end และ stripe_delinquent ทั้งนี้ขึ้นอยู่กับเหตุการณ์ Stripe และข้อมูลที่ได้รับ

ใช้สคีมาเพย์โหลดที่ประกาศไว้ของเหตุการณ์ที่เลือกสำหรับแท็กตัวแปร ฟิลด์ที่ใช้ได้ขึ้นอยู่กับเหตุการณ์ ซึ่งรวมถึง firstName, lastName, amount, currency, status, invoiceNumber, previousPlan, newPlan และ failureMessage จำนวนเงินจะเป็นหน่วยเซนต์ในกรณีที่สคีมาระบุว่าเป็นเซนต์

ID ของออบเจ็กต์ Stripe จะถูกตัดออกจากเพย์โหลดของระบบอัตโนมัติ อย่าคาดว่าจะใช้ ID ของใบแจ้งหนี้หรือการสมัครสมาชิกเป็นแท็กตัวแปรได้ และ Brew ก็ไม่ได้เก็บ ID ลูกค้า Stripe ไว้ในผู้ติดต่อด้วย

การตั้งค่า “ซิงค์ชื่อ-นามสกุล” ของแต่ละเหตุการณ์ใช้กำหนดว่า Stripe อัปเดตชื่อของผู้ติดต่อได้หรือไม่ โดยไม่ได้เปิดหรือปิดทริกเกอร์


## หยุดอีเมลเตือนหลังลูกค้าชำระเงินแล้วได้ไหม?

เหตุการณ์การชำระเงินที่ตามมาทีหลังจะไม่ยกเลิกรอบการทำงานที่เริ่มจากการชำระเงินไม่สำเร็จก่อนหน้าโดยอัตโนมัติ ให้ตั้งเวลาตรวจสอบฝั่งแอปพลิเคชันก่อนส่งอีเมลเตือน และส่งเหตุการณ์ใหม่เฉพาะเมื่อใบแจ้งหนี้ยังไม่ได้ชำระ


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

การได้รับเหตุการณ์กับการส่งอีเมลเป็นคนละขั้นตอนกัน ตรวจสอบว่าระบบอัตโนมัติที่ตรงกันอยู่ในสถานะ “ทำงานอยู่” ดูตัวกรองและประวัติการทำงาน แล้วตรวจสอบว่าผู้รับเข้าเกณฑ์และโดเมนผู้ส่งพร้อมใช้งาน การตั้งค่า “ซิงค์ชื่อ-นามสกุล” มีผลแค่การอัปเดตชื่อเท่านั้น


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

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

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

- [สร้างเวิร์กโฟลว์อีเมลตามวงจรชีวิตลูกค้าจาก Stripe](/th/blog/how-to-automate-lifecycle-emails-from-stripe-subscription-events)
- [เปรียบเทียบเครื่องมืออีเมลที่เชื่อมต่อกับ Stripe](/th/blog/best-email-marketing-tools-with-stripe-integration-subscription-events-and-automation-compared)
- [คู่มือการตั้งค่า Stripe](https://docs.brew.new/integrations/import/stripe)
- [สร้างระบบอัตโนมัติ](https://docs.brew.new/create-emails/build-an-automation)
- [แท็กตัวแปร](https://docs.brew.new/create-emails/merge-tags)
- [ข้อมูลอ้างอิงเหตุการณ์ของ Stripe](https://docs.stripe.com/api/events/types)
- [การตั้งค่าอีเมลถึงลูกค้าของ Stripe](https://docs.stripe.com/billing/revenue-recovery/customer-emails)

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

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