# WorkOS + Brew

เริ่มระบบอัตโนมัติของ Brew จากเหตุการณ์ของ WorkOS ด้านผู้ใช้ การยืนยันตัวตน การรีเซ็ตรหัสผ่าน องค์กร Directory Sync (SCIM) การเชื่อมต่อ และคำเชิญ

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

- ทิศทาง: ข้อมูลขาเข้า
- การเชื่อมต่อ: คีย์ลับเว็บฮุก
- ทริกเกอร์การยืนยันตัวตนระดับองค์กร

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

- **ทริกเกอร์จากเหตุการณ์**: เริ่มระบบอัตโนมัติของ Brew จากเหตุการณ์ของ WorkOS ด้านผู้ใช้ การยืนยันตัวตน องค์กร Directory Sync และการเชื่อมต่อ

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

เชื่อมต่อ WorkOS เพื่อเริ่มส่งอีเมลที่ตรงกับแบรนด์เมื่อมีการสร้างผู้ใช้ ผู้ใช้ยืนยันอีเมล รีเซ็ตรหัสผ่าน เข้าร่วมองค์กร หรือได้รับบัญชีผ่าน Directory Sync โดย Brew จะเปลี่ยนเหตุการณ์ WorkOS 18 ประเภทให้เป็นทริกเกอร์ของระบบอัตโนมัติ

WorkOS ยังคงดูแล SSO, Directory Sync, การเข้าสู่ระบบ และการรีเซ็ตรหัสผ่าน ส่วน Brew มีหน้าที่รอรับเหตุการณ์เท่านั้น แล้วสร้างและส่งอีเมลที่ตามมาหลังเหตุการณ์เหล่านั้น


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

- อีเมลต้อนรับ: user.created เกิดขึ้นเมื่อมีการสร้างบัญชีผู้ใช้ WorkOS ส่วน authentication.email_verification_succeeded เกิดขึ้นเมื่อผู้ใช้ยืนยันอีเมล ให้เลือกทริกเกอร์เพียงตัวเดียวเพื่อไม่ให้ส่งอีเมลต้อนรับซ้ำ
- อีเมลยืนยันการรีเซ็ตรหัสผ่าน: password_reset.succeeded เกิดขึ้นเมื่อรีเซ็ตรหัสผ่านเสร็จสมบูรณ์ และเป็นเหตุการณ์ระดับบนสุดของ WorkOS ไม่ได้อยู่ใน authentication.*
- อีเมลแจ้งการเข้าสู่ระบบ: authentication.magic_auth_succeeded เกิดขึ้นเมื่อเข้าสู่ระบบด้วย Magic Link สำเร็จ และ authentication.password_failed เกิดขึ้นเมื่อเข้าสู่ระบบด้วยรหัสผ่านไม่สำเร็จ ทั้งสองเหตุการณ์ส่งถึงผู้ใช้ และไม่มีเหตุการณ์ใดเปิดเผยที่อยู่ IP หรือ user agent เป็นแท็กตัวแปร
- อีเมลแนะนำการใช้งานสำหรับทีม: organization_membership.created และ invitation.accepted เกิดขึ้นทั้งคู่เมื่อมีคนเข้าร่วม และมี role ให้เลือกทริกเกอร์เพียงตัวเดียวเพื่อไม่ให้ส่งอีเมลต้อนรับซ้ำ
- อีเมลแจ้งเปลี่ยนบทบาท: organization_membership.updated เกิดขึ้นเมื่อการเป็นสมาชิกมีการเปลี่ยนแปลง เช่น ได้รับบทบาทใหม่
- ผู้ใช้ที่ซิงค์จากไดเรกทอรี: dsync.user.created, dsync.user.updated และ dsync.user.deleted ช่วยให้ผู้ติดต่อใน Brew ตรงกับไดเรกทอรี SCIM ของคุณเสมอ
- อีเมลแจ้งเมื่อสิ้นสุดการใช้งาน: user.deleted และ organization_membership.deleted เกิดขึ้นเมื่อผู้ใช้ถูกลบหรือออกจากองค์กร

## เหตุการณ์องค์กรและการเชื่อมต่อจะไม่เริ่มส่งอีเมล

organization.created, organization.updated, organization.deleted และ connection.activated ไม่มีผู้รับ Brew จึงบันทึกเหตุการณ์เหล่านี้ไว้ใน “เหตุการณ์ล่าสุด” ว่าระบุผู้รับไม่ได้ และไม่เริ่มระบบอัตโนมัติ

หากต้องการส่งอีเมลถึงบุคคลเกี่ยวกับองค์กรใหม่ ให้ใช้เหตุการณ์ที่มีที่อยู่อีเมลของบุคคลนั้น เช่น organization_membership.created หรือ invitation.accepted

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


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

- เปิดหน้า “การเชื่อมต่อ” เลือก WorkOS แล้วเลือก “สร้าง URL เว็บฮุก”
- ในแดชบอร์ด WorkOS ให้เปิด Webhooks สร้างเอนด์พอยต์ แล้ววาง URL ของ Brew
- สมัครรับเหตุการณ์ที่รองรับทั้ง 18 รายการ ได้แก่ user.*, authentication.email_verification_succeeded, authentication.magic_auth_succeeded, authentication.password_failed, password_reset.succeeded, organization.*, organization_membership.*, dsync.user.*, connection.activated และ invitation.accepted อย่าเลือก authentication.* เพราะจะเพิ่มเหตุการณ์การยืนยันตัวตนที่ Brew ไม่รองรับเข้ามาด้วย
- คัดลอกคีย์ลับสำหรับลงนามของเอนด์พอยต์ วางลงใน Brew แล้วเลือก “เชื่อมต่อ” โดย Brew จะตรวจสอบเว็บฮุกที่ส่งมาแต่ละรายการด้วยเฮดเดอร์ลายเซ็นของ WorkOS และยอมให้ timestamp คลาดเคลื่อนได้ไม่เกิน 180 วินาที
- ใน WorkOS ให้ส่งเหตุการณ์ทดสอบ user.created จากเอนด์พอยต์ สถานะใน Brew จะเปลี่ยนจาก “รอเหตุการณ์ทดสอบ” เป็น “เชื่อมต่อแล้ว” ทั้งนี้ Brew จะข้ามตัวอย่างจาก WorkOS ที่รู้จัก แต่อาจประมวลผลตัวอย่างที่ไม่รู้จักเหมือนเหตุการณ์จริง จึงควรส่งการทดสอบก่อนเผยแพร่ระบบอัตโนมัติที่ใช้ทริกเกอร์นั้น
- เมื่อเลือก “เชื่อมต่อ” Brew จะสร้างทริกเกอร์ให้ครบทั้ง 18 เหตุการณ์ โดยไม่มีสวิตช์เปิดหรือปิดเหตุการณ์
- สร้างระบบอัตโนมัติ เลือกเหตุการณ์ WorkOS ที่ใช้ แล้วส่งทดสอบขณะที่ยังเป็น “ฉบับร่าง” เฉพาะระบบอัตโนมัติที่ “ทำงานอยู่” เท่านั้นที่จะทำงานเมื่อได้รับเหตุการณ์ที่ตรงกัน

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

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

- user.created
- user.updated
- user.deleted
- authentication.email_verification_succeeded
- authentication.password_failed
- password_reset.succeeded
- authentication.magic_auth_succeeded
- organization.created
- organization.updated
- organization.deleted
- organization_membership.created
- organization_membership.updated
- organization_membership.deleted
- dsync.user.created
- dsync.user.updated
- dsync.user.deleted
- connection.activated
- invitation.accepted

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

เหตุการณ์ที่ยืนยันแล้วแต่ละรายการซึ่งมีที่อยู่อีเมลจริงจะสร้างหรืออัปเดตผู้ติดต่อใน Brew โดยจับคู่ตามอีเมล ไม่ว่าจะมีระบบอัตโนมัติใช้เหตุการณ์นั้นหรือไม่ก็ตาม หากมีข้อมูล Brew จะบันทึกชื่อ-นามสกุล, workos_user_id และ workos_email_verified ด้วย

เหตุการณ์การยืนยันตัวตนจะบันทึก workos_last_verification_at, workos_last_failed_auth_at, workos_last_password_reset_at หรือ workos_last_magic_auth_at เหตุการณ์การเป็นสมาชิกและคำเชิญจะบันทึก workos_organization_id และ workos_org_role ส่วนเหตุการณ์ไดเรกทอรีจะบันทึก workos_directory_user_id และ workos_directory_id

user.deleted และ dsync.user.deleted จะตั้งค่า workos_account_status เป็น deleted และ organization_membership.deleted จะตั้งค่าเป็น removed_from_org โดย Brew จะไม่ลบผู้ติดต่อออก

ใช้สคีมาเพย์โหลดที่ประกาศไว้ของเหตุการณ์ที่เลือกสำหรับแท็กตัวแปร ทุกเหตุการณ์มี email, firstName, lastName และ createdAt หากมีข้อมูลเหล่านี้ เหตุการณ์ผู้ใช้จะเพิ่ม emailVerified เหตุการณ์องค์กรจะเพิ่ม organizationName และเหตุการณ์การเป็นสมาชิกและคำเชิญจะเพิ่ม role ส่วน createdAt เป็น timestamp แบบ Unix หน่วยวินาที

ID ของออบเจ็กต์ WorkOS ไม่ใช่แท็กตัวแปร และที่อยู่ IP กับ user agent ในเหตุการณ์การยืนยันตัวตนก็ไม่ใช่แท็กตัวแปรเช่นกัน

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


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

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


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

- Brew สร้างหรือแก้ไขผู้ใช้ องค์กร ไดเรกทอรี หรือการเชื่อมต่อใน WorkOS ไม่ได้
- รหัส 401 พร้อม timestamp_invalid:out_of_tolerance หมายความว่า timestamp ของเว็บฮุกคลาดเคลื่อนเกิน 180 วินาที ให้ตรวจสอบความคลาดเคลื่อนของนาฬิกา แล้วส่งใหม่จากแดชบอร์ด WorkOS
- หากระบบอัตโนมัติสำหรับการรีเซ็ตรหัสผ่านไม่ทำงานเลย ให้ตรวจสอบว่าเอนด์พอยต์สมัครรับ password_reset.succeeded ไว้ เพราะ WorkOS จะไม่ส่ง authentication.password_reset_succeeded เลย
- หากเว็บฮุกทุกรายการไม่ผ่านการตรวจสอบลายเซ็น ให้คัดลอกคีย์ลับปัจจุบันของเอนด์พอยต์จาก WorkOS แล้วเชื่อมต่ออีกครั้ง Brew กำหนดให้คีย์ลับยาวอย่างน้อย 16 อักขระ
- ตรวจสอบความยินยอมและวัตถุประสงค์ของอีเมลแต่ละฉบับ การซิงค์ผู้ใช้ WorkOS ไม่ได้ทำให้คุณมีสิทธิ์ส่งอีเมลโปรโมชัน

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

- [คู่มือการตั้งค่า WorkOS](https://docs.brew.new/integrations/import/workos)
- [สร้างระบบอัตโนมัติ](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)
- [เหตุการณ์ของ WorkOS](https://workos.com/docs/events)

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

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