CrmCustomerDto รีเฟอเรนซ์
สำหรับนักพัฒนาที่จัดการข้อมูลลูกค้า(CRM)ของ ReceiptRoller ผ่าน API・MCP・Webhook อธิบายว่าข้อมูลลูกค้าที่ดึงมาจาก POS ถูกทำให้เป็นรูปแบบมาตรฐานอย่างไร
CrmCustomerDto คือโมเดลมาตรฐานของมาสเตอร์ลูกค้าของ ReceiptRoller ทั้งลูกค้าที่ลงทะเบียนสมาชิกในแอป ลูกค้าที่ดึงมาจากมาสเตอร์สมาชิกของ POS(スマレジ・Square)และลูกค้าที่ลงทะเบียนด้วยมือจากหน้าจอ CRM ของร้านค้า — ทั้งหมดถูกรวมไว้ในชนิดเดียวนี้
1 บัญชีธุรกิจ = 1 เนมสเปซ CRM สามารถแชร์ลูกค้าได้กับหลายร้านค้าภายใต้บัญชีเดียวกัน และแสดง「ลูกค้าอยู่ในร้านใด」ด้วยฟิลด์ StoreIds
ฟิลด์หลัก
ตัวระบุ
| ฟิลด์ | ชนิด | เนื้อหา |
|---|---|---|
OrganizationId | string | ID บัญชีธุรกิจ PartitionKey |
CustomerId | string | ID ลูกค้าภายในของ RR(GUID)RowKey |
StoreIds | string | ID ร้านค้าที่สังกัด คั่นด้วยจุลภาค อ่านเขียนเป็นอาร์เรย์ได้ด้วยพร็อพเพอร์ตี StoreIdList |
ชื่อ・ข้อมูลติดต่อ
| ฟิลด์ | ชนิด | เนื้อหา |
|---|---|---|
LastName / FirstName | string | นามสกุล・ชื่อ(คันจิ)มีพร็อพเพอร์ตี FullName สำหรับแสดงผล |
LastNameKana / FirstNameKana | string | นามสกุล・ชื่อ(คานะ)มีพร็อพเพอร์ตี FullNameKana |
Email | string | อีเมล ทำให้เป็นรูปแบบมาตรฐานด้วยการแปลงเป็นตัวพิมพ์เล็กและตัดช่องว่างหน้าหลัง เป็นหนึ่งในคีย์การจับคู่ |
Phone | string | เบอร์โทร ทำให้เป็นรูปแบบมาตรฐาน E.164(ตัวอย่าง: +819012345678)เป็นหนึ่งในคีย์การจับคู่ |
Gender | string | เพศ ไม่บังคับ |
DateOfBirth | DateTime? | วันเกิด ไม่บังคับ เก็บเป็น UTC |
ที่อยู่
PostalCode / Prefecture / City / Address1 / Address2 แสดงต่อกันด้วยพร็อพเพอร์ตี FullAddress ทั้งหมดเป็น string และไม่บังคับ
ข้อมูลสมาชิก
| ฟิลด์ | ชนิด | เนื้อหา |
|---|---|---|
MembershipCode | string | เลขที่สมาชิก RR ออกให้อัตโนมัติ หรือดึงมาจากฝั่ง POS(customerCode ของ スマレジ, reference_id ของ Square ฯลฯ)เป็นหนึ่งในคีย์การจับคู่ |
MembershipLevel | string | ระดับสมาชิก ค่าเริ่มต้น "Standard" ตัวอย่าง: Standard / Silver / Gold |
ตัวชี้วัดพฤติกรรม
| ฟิลด์ | ชนิด | เนื้อหา |
|---|---|---|
VisitCount | int | จำนวนครั้งที่เข้าร้าน รวมอัตโนมัติจากธุรกรรม POS |
TotalSpent | decimal | ยอดซื้อสะสม รวมอัตโนมัติจากธุรกรรม POS |
LastVisitDate | DateTime? | วันเข้าร้านล่าสุด อัปเดตอัตโนมัติจากธุรกรรม POS |
แท็ก・บันทึก・การตรวจสอบ
Tags(คั่นด้วยจุลภาค), Notes(ข้อความอิสระ), Status(ค่าเริ่มต้น "Active" เช่น ลาออกแล้ว・ถูกบล็อกแล้ว), CreatedAt, UpdatedAt
ความสัมพันธ์กับ POS
CrmCustomerDto เป็นโมเดลมาตรฐานที่ไม่ขึ้นกับ POS ลูกค้าที่ดึงมาจาก POS จะถูกผูก ID ลูกค้าของ RR กับตัวระบุฝั่ง POS(ชุดสามอย่างของ vendor + identityType + vendorIdentifier)ด้วยเอนทิตีแยกต่างหาก PosCustomerLinkEntity
สำหรับการซิงก์ข้อมูลสมาชิกสองทางกับ POS กฎการแก้ไขข้อขัดแย้ง(ฝั่ง vendor / ฝั่ง RR ฝ่ายไหนใหม่กว่า, last-write-wins ในระดับฟิลด์)และลำดับความสำคัญของคีย์การจับคู่ โปรดดู การซิงก์ข้อมูลสมาชิกสองทางกับ スマレジ・Square
การแมปปิงจากผู้ให้บริการ POS
ฟิลด์ลูกค้าของแต่ละ POS สอดคล้องกับฟิลด์ใดของ CrmCustomerDto นั้น สรุปไว้ในบทความแยกของเฮลป์ร้านค้า
- การแมปปิงข้อมูลสมาชิกของ スマレジ กับข้อมูลลูกค้าของ ReceiptRoller
- การแมปปิงข้อมูลลูกค้าของ Square กับข้อมูลลูกค้าของ ReceiptRoller
ข้อควรทราบ
- คีย์ที่ไม่ซ้ำคือการรวม
OrganizationIdกับCustomerIdแม้อีเมลเดียวกัน หากบัญชีธุรกิจต่างกันก็ถูกถือเป็นลูกค้าคนละคน - การจับคู่(ตรวจหารายการซ้ำ)ตรวจสอบตามลำดับ
MembershipCode→Email→Phoneรายละเอียดดู การซิงก์ข้อมูลสมาชิกสองทาง VisitCount/TotalSpent/LastVisitDateเป็นค่าที่รวมมา แม้เขียนทับโดยตรงก็จะถูกเขียนทับด้วยเรกคอร์ดธุรกรรมครั้งถัดไป- ไม่แนะนำให้ลบลูกค้าทางกายภาพ ให้อัปเดต
Statusเป็นลาออกแล้วแทน หากลบทางกายภาพฝั่ง POS จะทำให้การจับคู่ฝั่ง RR ใช้ไม่ได้