Retention Messaging API ของ Apple วางข้อความของคุณไว้บนหน้ายกเลิก แต่คำขอคืนเงินไม่เคยผ่านหน้านั้นเลย
Retention Messaging API ของ Apple ให้คุณแสดงข้อความ ข้อเสนอให้เปลี่ยนแพ็กเกจ หรือข้อเสนอโปรโมชันเมื่อผู้สมัครสมาชิกแตะ Cancel บทความนี้อธิบายวิธีการทำงาน ต้นทุนในการใช้งาน และเหตุผลที่คำขอคืนเงินไปถึง Apple โดยไม่ผ่านหน้าจอนั้นเลย

ประเด็นสำคัญ
- Retention Messaging API ของ Apple ให้นักพัฒนาเลือกข้อความที่ผู้สมัครสมาชิกบน iPhone จะเห็นหลังแตะ Cancel Subscription โดยเลือกได้หนึ่งในสี่ประเภท ได้แก่ ข้อความ ข้อความพร้อมรูปภาพ ข้อเสนอให้เปลี่ยนแพ็กเกจ หรือข้อเสนอโปรโมชัน
- เอกสารของ Apple ยังระบุว่า Retention Messaging API เป็นรุ่นก่อนเปิดตัวที่นักพัฒนาต้องขอเข้าร่วม เวอร์ชัน 1.0 เปิดตัวเมื่อวันที่ 16 กรกฎาคม 2025 และเวอร์ชัน 1.5 ตามมาเมื่อวันที่ 27 เมษายน 2026
- ในโฟลว์แบบเรียลไทม์ Apple จะเรียก endpoint Get Retention Message ของนักพัฒนาเมื่อผู้สมัครสมาชิกที่ยังใช้งานอยู่เปิดดูหน้ารายละเอียดการสมัครสมาชิกที่มีปุ่ม Cancel และ endpoint ต้องตอบภายใน 700 ms บน production มิฉะนั้น Apple จะใช้ข้อความเริ่มต้นแทน
- ข้อความรักษาลูกค้ามีผลกับการต่ออายุครั้งถัดไปเท่านั้น คำขอคืนเงินไปถึง Apple ผ่าน reportaproblem.apple.com หรือหน้าต่างขอคืนเงินในแอป และหน้ายกเลิกที่ข้อความรักษาลูกค้าปรากฏไม่ได้อยู่บนเส้นทางนั้น
- เมื่อลูกค้าขอคืนเงินภายในแอปผ่าน API คำขอคืนเงินของ StoreKit ทาง Apple จะปิดการต่ออายุอัตโนมัติเอง และส่ง DID_CHANGE_RENEWAL_STATUS พร้อม subtype AUTO_RENEW_DISABLED ซึ่งเป็น type และ subtype เดียวกับการยกเลิกจากหน้าการตั้งค่า Subscriptions
- สิ่งเดียวที่นักพัฒนาส่งเข้าไปได้ในการคืนเงินของ Apple คือการตอบ CONSUMPTION_REQUEST ภายใน 12 ชั่วโมงด้วย Send Consumption Information และทำได้ก็ต่อเมื่อลูกค้ายินยอมให้แชร์ข้อมูลนั้นเท่านั้น
- Google Play ไม่มีฟีเจอร์ที่เทียบเท่าตามเอกสารสำหรับข้อความบนหน้ายกเลิกที่นักพัฒนาเลือกเอง นักพัฒนาจะได้รับการแจ้งเตือน SUBSCRIPTION_CANCELED ภายหลัง และฟิลด์ userInitiatedCancellation จะบอกเหตุผลที่ผู้สมัครสมาชิกออกไป
ตอนนี้ผู้สมัครสมาชิกที่แตะ Cancel บน iPhone จะเห็นข้อความที่คุณเลือก แพ็กเกจที่ถูกกว่า หรือส่วนลด ก่อนที่จะยืนยันได้ นั่นคือ Retention Messaging API ของ Apple และนี่เป็นครั้งแรกที่นักพัฒนามีสิทธิ์มีเสียงบนหน้ายกเลิกของ Apple เอง ฟีเจอร์นี้ยังเป็นรุ่นก่อนเปิดตัวที่ต้องขอเข้าร่วม และยังมีขอบเขตที่ชัดเจนซึ่งสำคัญมากหากคุณใส่ใจเรื่องการคืนเงิน: มันสื่อสารกับคนที่กำลังจะหยุดจ่ายเงิน ไม่ใช่กับคนที่ขอเงินคืน คำขอเหล่านั้นไปถึง Apple ผ่านอีกเส้นทางหนึ่ง
Retention Messaging API ของ Apple ทำอะไร
Retention Messaging API เป็นบริการแบบ server-to-server คุณอัปโหลดข้อความและรูปภาพไปให้ Apple ล่วงหน้า Apple ตรวจสอบ จากนั้นคุณเลือกว่าข้อความที่ผ่านการอนุมัติแล้วข้อความใดจะแสดงให้ผู้สมัครสมาชิกเห็นเมื่อเขากำลังจะยกเลิกการสมัครสมาชิกแบบต่ออายุอัตโนมัติ เอกสารของ Apple ระบุข้อความไว้สี่ประเภท:
- ข้อความตัวอักษร ซึ่งใส่หัวข้อย่อยได้
- ข้อความตัวอักษรพร้อมรูปภาพ
- ข้อความเปลี่ยนแพ็กเกจ ซึ่งแนะนำการสมัครสมาชิกอื่นในกลุ่มการสมัครสมาชิกเดียวกัน
- ข้อความข้อเสนอโปรโมชัน ซึ่งเสนอราคาลดในระดับเดียวกันหรือต่างระดับ โดยใช้ข้อเสนอโปรโมชันที่คุณตั้งค่าใน App Store Connect และลงนามบนเซิร์ฟเวอร์ของคุณ
ข้อความจะปรากฏหลังจากลูกค้าแตะ Cancel Subscription บนหน้ารายละเอียดการสมัครสมาชิก จากนั้น Apple จะแสดงหน้า Confirm Cancellation ลูกค้ายังยกเลิกได้ แตะ Keep Subscription ได้ หรือรับข้อเสนอหรือแพ็กเกจที่คุณแนะนำก็ได้ คุณซ่อนทางออกไม่ได้ และ Apple บอกนักพัฒนาว่าห้ามอัปโหลดเนื้อหาที่ชวนให้เข้าใจผิดหรือไม่ถูกต้อง
ข้อความเริ่มต้นและโฟลว์แบบเรียลไทม์
ใช้งานได้สองแบบ แบบง่ายคือข้อความเริ่มต้น: ข้อความตัวอักษร จะมีหรือไม่มีรูปภาพหรือหัวข้อย่อยก็ได้ กำหนดไว้สำหรับแต่ละผลิตภัณฑ์และแต่ละภาษา แบบที่ทำได้มากกว่าคือโฟลว์แบบเรียลไทม์ ซึ่ง Apple จะเรียก endpoint Get Retention Message บนเซิร์ฟเวอร์ของคุณ และคุณตอบกลับด้วย ID ของข้อความ มีเพียงโฟลว์แบบเรียลไทม์เท่านั้นที่แสดงข้อความเปลี่ยนแพ็กเกจและข้อเสนอโปรโมชันได้
ในทางปฏิบัติ ข้อความเริ่มต้นไม่ใช่ตัวเลือกเสริม Apple ใช้ข้อความเหล่านี้เป็นตัวสำรองทุกครั้งที่การเรียกแบบเรียลไทม์ล้มเหลว และจะไม่แสดงข้อความรักษาลูกค้าใดๆ เลยสำหรับผลิตภัณฑ์ในภาษาที่ไม่มีข้อความเริ่มต้น
| รายการ | สิ่งที่เอกสารของ Apple ระบุ |
|---|---|
| สถานะ | รุ่นก่อนเปิดตัว นักพัฒนาแจ้งความสนใจเพื่อขอเข้าร่วม |
| ผลิตภัณฑ์ | การสมัครสมาชิกแบบต่ออายุอัตโนมัติ |
| ประเภทข้อความ | ข้อความ ข้อความพร้อมรูปภาพ เปลี่ยนแพ็กเกจ ข้อเสนอโปรโมชัน |
| ขีดจำกัดเวลาตอบกลับแบบเรียลไทม์ | 700 ms บน production |
| สิทธิ์ใช้งาน production | ต้องผ่านการทดสอบประสิทธิภาพใน sandbox ก่อน ประมาณ 700 ms |
| ข้อความหัวเรื่องและหัวข้อย่อย | อย่างละ 66 ตัวอักษร หัวข้อย่อยสูงสุดห้าข้อ |
| ข้อความเนื้อหา | 144 ตัวอักษร |
| ข้อความ alt ของรูปภาพ | 150 ตัวอักษร |
| จำนวนข้อความต่อแอป | 2,000 |
| การตรวจสอบ | ข้อความใหม่เริ่มที่สถานะ PENDING และจะแสดงเมื่อเป็น APPROVED แล้วเท่านั้น |
| อุปกรณ์ | iOS 15.1, iPadOS 15.1, visionOS 1, macOS 14 ขึ้นไป |
สิ่งที่ Apple ส่งให้เซิร์ฟเวอร์ของคุณในการเรียกแบบเรียลไทม์
คำขอเป็น JWS ที่ App Store ลงนาม เมื่อถอดรหัสแล้วจะมี originalTransactionId, appAppleId, productId, userLocale, requestIdentifier ที่เป็น UUID, environment และ signedDate Apple ให้คุณตรวจสอบว่า appAppleId ตรงกับแอปของคุณ และห้ามตอบหากไม่ตรง ส่วนที่มีประโยชน์คือ originalTransactionId เพราะทำให้คุณค้นดูได้ว่าผู้สมัครสมาชิกคนนี้ทำอะไรในแอปของคุณจริงๆ ก่อนเลือกว่าจะพูดอะไร
ข้อความรักษาลูกค้าปรากฏที่ไหน และไม่ปรากฏที่ไหน
Apple วางข้อความไว้บนหน้าจอเดียว คือขั้นตอน Confirm Cancellation หลังลูกค้าแตะ Cancel Subscription เช่น จาก Apple Account > Subscriptions หรือจากหน้าของการสมัครสมาชิกบน App Store หน้าจอนั้นเกี่ยวกับว่าการต่ออายุครั้งถัดไปจะเกิดขึ้นหรือไม่ มันไม่แตะต้องเงินที่เก็บไปแล้ว
คำขอคืนเงินเป็นการกระทำแยกต่างหาก หน้าสนับสนุนของ Apple พาลูกค้าไปที่ reportaproblem.apple.com ซึ่งลูกค้าจะเลือก "Request a refund" (ขอคืนเงิน) เลือกเหตุผลและรายการ แล้วรอการอัปเดต 24 ถึง 48 ชั่วโมง ภายในแอปของคุณ beginRefundRequest ของ StoreKit จะเปิดหน้าต่างขอคืนเงินของ Apple และ Apple ระบุว่า App Store ใช้เวลาสูงสุด 48 ชั่วโมงในการอนุมัติหรือปฏิเสธ ไม่มีเส้นทางใดผ่านหน้าจอ Confirm Cancellation เลย
| ช่วงเวลา | เกิดขึ้นที่ไหน | สิ่งที่เป็นเดิมพัน | ใครตัดสิน | สิ่งที่คุณส่งเข้าไปได้ |
|---|---|---|---|---|
| ยกเลิก | หน้ารายละเอียดการสมัครสมาชิก แล้วต่อด้วย Confirm Cancellation | การต่ออายุครั้งถัดไป | ลูกค้า | ข้อความรักษาลูกค้าที่คุณเลือก ตอบภายใน 700 ms |
| คำขอคืนเงิน | reportaproblem.apple.com หรือหน้าต่างขอคืนเงินในแอปของคุณ | เงินที่จ่ายไปแล้ว | Apple | ข้อมูล CONSUMPTION_REQUEST ภายใน 12 ชั่วโมง หากลูกค้ายินยอม |
ข้อความรักษาลูกค้าหยุดคำขอคืนเงินได้หรือไม่
ไม่ได้ คำขอคืนเงินไม่เคยไปถึงหน้าจอที่ข้อความอยู่ มีรายละเอียดหนึ่งในเอกสารการแจ้งเตือนของ Apple ที่ทำให้เรื่องนี้ชัดเจน เมื่อลูกค้าขอคืนเงินผ่านแอปของคุณด้วย API คำขอคืนเงิน Apple จะปิดการต่ออายุอัตโนมัติเองและส่ง DID_CHANGE_RENEWAL_STATUS พร้อม subtype AUTO_RENEW_DISABLED ลูกค้าที่ยกเลิกจากหน้าการตั้งค่า Subscriptions ก็สร้าง type และ subtype เดียวกัน เซิร์ฟเวอร์ของคุณเห็นการแจ้งเตือนแบบเดียวกันสำหรับลูกค้าสองคนที่ต่างกันมาก และมีเพียงคนเดียวที่เห็นข้อความรักษาลูกค้าของคุณ
หากคำขอคืนเงินดำเนินต่อไป ช่องทางส่งหลักฐานคือ CONSUMPTION_REQUEST Apple ส่งสิ่งนี้สำหรับคำขอคืนเงินของผลิตภัณฑ์ทุกประเภท และคุณมีเวลา 12 ชั่วโมงในการตอบด้วย Send Consumption Information คุณตอบได้ก็ต่อเมื่อลูกค้าให้ความยินยอมเท่านั้น หลังจากนั้น คำตัดสินของ Apple จะมาในรูปการแจ้งเตือน REFUND หรือ REFUND_DECLINED หาก Apple ปฏิเสธการคืนเงินที่ลูกค้าเริ่มจากในแอปของคุณ
Google Play มี API สำหรับข้อความตอนยกเลิกหรือไม่
ไม่มีในเอกสารวงจรชีวิตการสมัครสมาชิกของ Google ผู้สมัครสมาชิก Google Play ยกเลิกจากศูนย์การสมัครสมาชิกของ Play ยังคงใช้งานได้จนสิ้นรอบการเรียกเก็บเงินปัจจุบัน และแตะ Resubscribe เพื่อย้อนกลับได้ก่อนถึงเวลานั้น ซึ่ง Google เรียกว่าการกู้คืน (restore) คุณจะรู้เรื่องนี้ภายหลังผ่านการแจ้งเตือน SUBSCRIPTION_CANCELED และฟิลด์ userInitiatedCancellation ใน resource ของการสมัครสมาชิกจะบอกเหตุผลที่ผู้ใช้ออกไป การหยุดชั่วคราว (pause) ซึ่ง Google ระบุว่าเปิดไว้เป็นค่าเริ่มต้นสำหรับการสมัครสมาชิกทั้งหมด คือวิธีหลักในตัวของ Google ในการลดการเลิกใช้งานโดยสมัครใจ
ในฝั่งการคืนเงิน Google Play มีช่องทางส่งหลักฐานของตัวเอง PendingRefundReviewNotification จะมาถึงเมื่อ chargeback ต้องให้นักพัฒนาตรวจสอบ และคุณมีเวลา 24 ชั่วโมงในการตอบผ่าน orders.reviewrefund สำหรับคำสั่งซื้อที่เกิดขึ้นหลังวันที่ 3 สิงหาคม 2026 เมื่อ chargeback สำเร็จ Google จะเรียกเก็บจากนักพัฒนาเป็นราคาซื้อหักค่าบริการของ Play บวกค่าธรรมเนียม chargeback ของธนาคาร
หน้ายกเลิกทำให้คุณเสียเงินเท่าไร
ข้อความรักษาลูกค้าดูเหมือนฟรี แต่ไม่ใช่ และค่าใช้จ่ายมาจากสามที่
ค่าประมวลผลในทุกการเปิดดูหน้า
Apple เรียก endpoint ของคุณเมื่อผู้สมัครสมาชิกที่ยังใช้งานอยู่เปิดดูหน้ารายละเอียดการสมัครสมาชิกที่มีปุ่ม Cancel ไม่ใช่เฉพาะตอนที่เขายกเลิก ทุกการเข้าชมคือคำขอที่เซิร์ฟเวอร์ของคุณต้องยืนยันตัวตน ค้นข้อมูล และตอบภายใน 700 ms มิฉะนั้น Apple จะใช้ข้อความเริ่มต้น นั่นตัดฟังก์ชันที่ต้อง cold start และบางครั้งใช้เวลาสองวินาทีออกไปเลย คุณต้องจ่ายค่าทรัพยากรที่พร้อมทำงานอยู่ตลอด บวกกับการอ่านฐานข้อมูลและการเรียก API ของบุคคลที่สามแบบเสียเงินที่ตรรกะการตัดสินใจของคุณใช้ในแต่ละคำขอ

ส่วนลดคือรายได้ที่คุณเลือกไม่เก็บ
ข้อเสนอโปรโมชันที่รักษาผู้สมัครสมาชิกไว้ได้คือเงินจริงที่เก็บไว้ได้ แต่ข้อเสนอที่ไปถึงคนที่ยังไงก็จะอยู่ต่ออยู่แล้วคือส่วนลดล้วนๆ นี่คือตัวอย่างประกอบ ไม่ใช่ตัวเลขมาตรฐาน แพ็กเกจรายเดือน $9.99 ที่เสนอลดครึ่งราคาเป็นเวลาสามเดือนจะเสียรายได้ $14.99 ต่อข้อเสนอที่ถูกรับ หากหนึ่งในสามของคนที่รับข้อเสนอจะอยู่ต่อในราคาเต็มอยู่แล้ว การรับข้อเสนอหนึ่งพันครั้งจะทำให้เสียส่วนลดประมาณ $5,000 ให้กับคนที่ไม่เคยต้องการมันเลย อีกฝั่งของบัญชีคือผู้สมัครสมาชิกที่กำลังจะออกไปจริงๆ
การคืนเงินที่ทางออกอันน่าหงุดหงิดชักนำมา
Apple ยังคงปุ่ม Cancel Subscription ไว้บนหน้า คุณจึงขังใครไว้ไม่ได้ แต่คุณยังทำให้คนรำคาญได้ ลูกค้าที่รู้สึกถูกกดดันมีอีกทางเลือกหนึ่ง คือขอให้ Apple คืนเงินค่าบริการครั้งล่าสุด เมื่อการคืนเงินเกิดขึ้นจริง เงินจะกลับไป ส่วนค่าประมวลผล พื้นที่จัดเก็บ การเรียก API และค่าคอมมิชชันพันธมิตรที่ผูกกับผู้สมัครสมาชิกคนนั้นก็ถูกใช้ไปแล้ว ต้นทุนเหล่านี้ไม่มีข้อความรักษาลูกค้าใดเรียกคืนได้
วิธีใช้ข้อความรักษาลูกค้าโดยไม่ทำให้อัตราการคืนเงินสูงขึ้น
ให้มองหน้ายกเลิกเป็นที่สำหรับความถูกต้อง ไม่ใช่ความแยบยล กฎไม่กี่ข้อต่อไปนี้ช่วยให้คุณอยู่ฝั่งที่ถูกต้องของเส้นแบ่งเรื่องการคืนเงิน:
- ตัดสินใจเป็นรายผู้สมัครสมาชิก ใช้ originalTransactionId ในคำขอของ Apple เพื่อดูการใช้งานล่าสุด เสนอส่วนลดหรือแพ็กเกจที่ถูกกว่าให้คนที่ใช้งานผลิตภัณฑ์อยู่ ส่งข้อความสั้นๆ ที่ตรงไปตรงมาให้คนที่ไม่ได้เปิดแอปมาหลายสัปดาห์
- ตอบให้เร็ว คำนวณการตัดสินใจไว้ล่วงหน้าเมื่อข้อมูลการใช้งานเปลี่ยน เพื่อให้คำขอเหลือเพียงการค้นหาครั้งเดียวซึ่งเสร็จได้สบายๆ ภายใน 700 ms
- เขียนข้อความเริ่มต้นสำหรับทุกผลิตภัณฑ์และทุกภาษา หากไม่มี การเรียกที่ล้มเหลวหมายความว่าจะไม่มีข้อความใดเลย
- จับตา AUTO_RENEW_DISABLED อย่างใกล้ชิด หาก CONSUMPTION_REQUEST ตามมาสำหรับ originalTransactionId เดียวกัน สิ่งที่คุณเห็นคือคำขอคืนเงิน ไม่ใช่การยกเลิก และนาฬิกา 12 ชั่วโมงได้เริ่มเดินแล้ว
- ตอบทุก CONSUMPTION_REQUEST ที่คุณได้รับอนุญาตให้ตอบ RefundHalt ส่งข้อมูลการใช้งานที่ถูกต้องให้ Apple ภายในกรอบเวลา 12 ชั่วโมง และตอบการตรวจสอบ chargeback ของ Google Play ภายใน 24 ชั่วโมง เพราะนี่เป็นเพียงสองช่วงเวลาที่ร้านค้าแต่ละแห่งขอฟังฝั่งของคุณ
คุ้มไหมที่จะขอสิทธิ์เข้าใช้งานจาก Apple
หากคุณขายการสมัครสมาชิกแบบต่ออายุอัตโนมัติและรองรับ App Store Server Notifications V2 อยู่แล้ว คำตอบน่าจะเป็นคุ้ม หน้ายกเลิกคือจุดสุดท้ายที่คุณจะเข้าถึงผู้สมัครสมาชิกได้ก่อนที่เขาจะจากไป และการเปลี่ยนแพ็กเกจทำให้คุณเสียน้อยกว่าการเสียเขาไปทั้งหมด เพียงแต่ต้องเผื่องบไว้สำหรับ endpoint ที่ต้องตอบทุกครั้งที่มีการเปิดดูหน้าการสมัครสมาชิก และวางแนวป้องกันการคืนเงินไว้ในจุดที่การคืนเงินเกิดขึ้นจริง
คำถามที่พบบ่อย
- Retention Messaging API ของ Apple คืออะไร
- เป็น API แบบ server-to-server ที่ให้นักพัฒนาเลือกข้อความที่ผู้สมัครสมาชิกจะเห็นหลังแตะ Cancel Subscription บนการสมัครสมาชิกแบบต่ออายุอัตโนมัติ Apple รองรับสี่ประเภท ได้แก่ ข้อความ ข้อความพร้อมรูปภาพ ข้อเสนอให้เปลี่ยนแพ็กเกจ และข้อเสนอโปรโมชัน เอกสารของ Apple ยังระบุว่าเป็นรุ่นก่อนเปิดตัวที่นักพัฒนาต้องขอเข้าร่วม
- endpoint Get Retention Message ของฉันต้องตอบเร็วแค่ไหน
- ภายใน 700 ms บน production หากเซิร์ฟเวอร์ของคุณช้ากว่านั้นหรือล้มเหลว Apple จะแสดงข้อความเริ่มต้นที่ตั้งค่าไว้สำหรับผลิตภัณฑ์และภาษานั้น และจะไม่แสดงอะไรเลยหากไม่มีข้อความเริ่มต้น คุณยังต้องผ่านการทดสอบประสิทธิภาพใน sandbox ที่ประมาณ 700 ms ก่อนที่ Apple จะยอมให้คุณตั้งค่า URL สำหรับ production
- ข้อความรักษาลูกค้าจะแสดงเมื่อลูกค้าขอคืนเงินหรือไม่
- ไม่ Apple แสดงข้อความรักษาลูกค้าบนหน้าจอ Confirm Cancellation หลังลูกค้าแตะ Cancel Subscription คำขอคืนเงินผ่าน reportaproblem.apple.com หรือหน้าต่างขอคืนเงินในแอปที่เปิดด้วย beginRefundRequest และสิ่งเดียวที่นักพัฒนาส่งเข้าไปได้คือการตอบ CONSUMPTION_REQUEST ภายใน 12 ชั่วโมง หากลูกค้ายินยอม
- จะแยกคำขอคืนเงินออกจากการยกเลิกใน App Store Server Notifications ได้อย่างไร
- ดูจากการแจ้งเตือนเรื่องการต่ออายุอย่างเดียวไม่ได้ การยกเลิกจากหน้าการตั้งค่า Subscriptions และคำขอคืนเงินที่ทำผ่านแอปของคุณต่างก็สร้าง DID_CHANGE_RENEWAL_STATUS พร้อม subtype AUTO_RENEW_DISABLED เหมือนกัน CONSUMPTION_REQUEST สำหรับธุรกรรมเดียวกัน และการแจ้งเตือน REFUND หรือ REFUND_DECLINED ที่ตามมาภายหลัง คือสัญญาณว่ามีคำขอคืนเงินเกิดขึ้น
- Google Play ให้นักพัฒนาแสดงข้อความเมื่อผู้ใช้ยกเลิกได้หรือไม่
- เอกสารวงจรชีวิตการสมัครสมาชิกของ Google ไม่ได้อธิบายฟีเจอร์แบบนั้น นักพัฒนาจะได้รับการแจ้งเตือน SUBSCRIPTION_CANCELED หลังเกิดเหตุ และอ่านฟิลด์ userInitiatedCancellation เพื่อดูเหตุผลที่ผู้ใช้ยกเลิกได้ การหยุดชั่วคราว (pause) ซึ่งเปิดไว้เป็นค่าเริ่มต้นสำหรับการสมัครสมาชิกทั้งหมด คือเครื่องมือหลักในตัวของ Google Play ในการรับมือกับการเลิกใช้งานโดยสมัครใจ
แหล่งข้อมูลและเนื้อหาเพิ่มเติม
- Apple Developer Documentation: Retention Messaging API
- Apple Developer Documentation: Setting up your Get Retention Message endpoint
- Apple Developer Documentation: Upload Message
- Apple Developer Documentation: Retention Messaging API changelog
- Apple Developer Documentation: notificationType
- Apple Developer Documentation: Send Consumption Information
- Apple Support: Request a refund for apps or content that you bought from Apple
- Google Play Billing: Subscription lifecycle
- Google Play Billing: Real-time developer notifications reference
- Google Play Console Help: Updates to refund protection and chargeback cost responsibility
RefundHalt
ระบบอัตโนมัติสำหรับการคืนเงินบน App Store และ Google Play
อ่านต่อ
ROAS ของแอปคุณยังนับรายการซื้อที่ Apple และ Google คืนเงินไปแล้ว ดังนั้นให้ประมูลด้วย ROAS สุทธิแทน
การคืนเงินแทบไม่เคยถูกส่งกลับไปยังแพลตฟอร์มโฆษณา ROAS จึงยังนับรายการซื้อที่ Apple และ Google คืนเงินไปแล้ว บทความนี้อธิบายว่า Firebase, Google Ads และ AdAttributionKit ทำข้อมูลการคืนเงินหายไปตรงไหน ต้นทุนที่ตามมา และวิธีสร้าง ROAS สุทธิสำหรับแอป
Order ID ของ App Store บนใบเสร็จของลูกค้าบอกคุณได้ว่าเขาซื้ออะไร และ Apple คืนเงินไปแล้วหรือยัง
endpoint Look Up Order ID ของ Apple เปลี่ยน order ID จากใบเสร็จ App Store ของลูกค้าให้เป็นธุรกรรมที่มีลายเซ็น พร้อมวันที่และเหตุผลของการคืนเงิน นี่คือวิธีใช้กับอีเมลขอคืนเงิน สิ่งที่มันทำไม่ได้ และ order ID ของ Google Play ต่างกันอย่างไร