Introductory offer App Store Connect: ทดลองใช้ฟรี iOS
โดย Mehdi Azizi
เผยแพร่เมื่อ , 8 นาที
Introductory offer คือช่วงทดลองใช้ฟรีหรือราคาลดช่วงแรกของ subscription iOS ใช้ได้ครั้งเดียวต่อกลุ่มต่อบัญชี Apple มาดูวิธีสร้างและแสดงผลกัน
Introductory offer หรือข้อเสนอแนะนำ คือราคาเริ่มต้นของ subscription แบบต่ออายุอัตโนมัติ มีสามแบบ: ทดลองใช้ฟรี จ่ายล่วงหน้า หรือจ่ายตามรอบ ลูกค้าแต่ละคนใช้ได้แค่ครั้งเดียวต่อหนึ่งกลุ่ม subscription ดังนั้นแอปของคุณต้องเช็กสิทธิ์ก่อนจะเขียนว่า "ทดลองใช้ฟรี" คุณสร้างข้อเสนอนี้ได้ในหน้าราคาของ subscription และ paywall ของคุณต้องแสดงระยะเวลาของข้อเสนอและราคาที่จะเรียกเก็บหลังจากนั้นให้ชัดเจน
ใน Solys และ TradaZen ผมผูกช่วงทดลองใช้ฟรี 7 วันไว้กับแพ็กรายปี ส่วนแพ็กรายสัปดาห์ไม่มีช่วงทดลองใช้ บทความนี้จะพาไปดูข้อเสนอทั้งสามแบบ ใครมีสิทธิ์ใช้ วิธีสร้าง แล้วก็ข้อผิดพลาดสองอย่างที่ผมเคยทำตอนแสดงผล คำว่า "ข้อเสนอเปิดตัว" ก็มักหมายถึงสิ่งเดียวกัน รวมถึงในคู่มือของผมเรื่องข้อผิดพลาดใน paywall
Introductory offer คืออะไร?
ศูนย์ช่วยเหลือของ App Store Connect นิยามว่าเป็นราคาลดหรือช่วงทดลองใช้ฟรีแบบจำกัดเวลา สำหรับรอบแรกของ subscription ใช้ได้กับ subscription แบบต่ออายุอัตโนมัติเท่านั้น เมื่อข้อเสนอจบ subscription จะต่ออายุในราคาปกติ เว้นแต่ผู้ใช้ยกเลิกก่อน
ข้อเสนอจะแสดงบนหน้า App Store ของคุณสำหรับคนที่มีสิทธิ์ ตอนซื้อ Apple จะใช้ข้อเสนอให้อัตโนมัติถ้าคนนั้นมีสิทธิ์ หน้าที่ของคุณคืออย่าสัญญาบนหน้าจอว่าจะได้ข้อเสนอที่ Apple ไม่ให้จริง
Introductory offer สามแบบ
เอกสาร StoreKit อธิบายรูปแบบการจ่ายไว้สามแบบ นี่คือตัวอย่างสมมติของแต่ละแบบ: แพ็กรายปี 39.99 ยูโร และรายเดือน 6.99 ยูโร ซึ่งไม่ใช่ราคาของแอปไหนของผมเลย
| แบบ | ตัวอย่างสมมติ | จ่ายตอนเริ่ม | หลังจากนั้น |
|---|---|---|---|
| ทดลองใช้ฟรี | ฟรี 7 วัน | 0 ยูโร | 39.99 ยูโร/ปี |
| จ่ายล่วงหน้า | 3 เดือนในราคา 9.99 ยูโร | 9.99 ยูโร ครั้งเดียว | 39.99 ยูโร/ปี |
| จ่ายตามรอบ | 2.99 ยูโร/เดือน นาน 3 เดือน | 2.99 ยูโร ต่อเดือน | 6.99 ยูโร/เดือน |
และนี่คือสิ่งที่หน้าจอควรบอกในแต่ละแบบ โดยยังใช้ราคาสมมติชุดเดิม:
- ทดลองใช้ฟรี: "ฟรี 7 วัน จากนั้น 39.99 ยูโรต่อปี" ระหว่างช่วงทดลอง subscription เริ่มแล้ว แต่ยังไม่มีการตัดเงินจนกว่าจะจบช่วงทดลอง
- จ่ายล่วงหน้า: "9.99 ยูโรสำหรับ 3 เดือนแรก จากนั้น 39.99 ยูโรต่อปี" ผู้ใช้จ่ายครั้งเดียวสำหรับช่วงราคาลดทั้งหมด
- จ่ายตามรอบ: "2.99 ยูโรต่อเดือน นาน 3 เดือน จากนั้น 6.99 ยูโรต่อเดือน" ราคาลดจะถูกเรียกเก็บทุกรอบ
ทั้งสามแบบ ประโยคต้องมีราคาที่จะเรียกเก็บหลังข้อเสนอจบเสมอ
ใครมีสิทธิ์ได้ introductory offer?
ศูนย์ช่วยเหลือของ Apple บอกชัด: subscription หนึ่งตัวตั้งข้อเสนอได้ แต่แต่ละคนใช้ introductory offer ได้แค่ครั้งเดียวต่อกลุ่ม subscription เอกสาร StoreKit แยกไว้สามกรณี:
- ผู้สมัครใหม่ มีสิทธิ์เสมอ
- อดีตผู้สมัครที่กลับมา มีสิทธิ์ ถ้าไม่เคยใช้ introductory offer ในกลุ่มนี้มาก่อน
- ผู้สมัครปัจจุบัน ไม่มีสิทธิ์ แม้จะเปลี่ยนแพ็กภายในกลุ่มเดียวกัน
สิทธิ์ผูกกับบัญชี Apple ที่จ่ายเงิน ไม่ใช่ iPhone หรือบัญชีที่สร้างในแอปของคุณ คนที่เคยทดลองใช้ ยกเลิก แล้วติดตั้งแอปใหม่ จะไม่มีสิทธิ์อีก แต่ตัวสินค้ายังคงประกาศข้อเสนออยู่ นี่แหละคือจุดที่การแสดงผลแบบชวนเข้าใจผิดเกิดขึ้น
ผลที่ตามมาตรงๆ: ช่วงทดลองใช้บนแพ็กรายสัปดาห์จะกินสิทธิ์ทดลองใช้ของแพ็กรายปีไปด้วย เพราะทั้งสองอยู่ในกลุ่มเดียวกัน นี่คือเหตุผลที่ผมใส่ช่วงทดลองไว้แค่แพ็กรายปี
ข้อจำกัดอีกข้อ: คุณมี introductory offer ที่กำลังใช้งานได้หนึ่งตัวและข้อเสนอในอนาคตหนึ่งตัวต่อประเทศ ถ้าสองข้อเสนอทับกัน ตัวที่สร้างทีหลังจะแทนที่ตัวเดิม ในเดือนกรกฎาคม 2026 ผมอยากให้แพ็กรายปีของ TradaZen มีทั้งราคาลดและทดลองใช้ฟรี แต่ได้ข้อเสนอแค่ทีละตัว ต้องเลือกอย่างใดอย่างหนึ่ง สุดท้ายผมสร้าง subscription รายปีตัวที่สองที่ถูกกว่า แล้วผูกช่วงทดลองไว้กับตัวนั้น
สร้างข้อเสนอใน App Store Connect
คุณต้องมีบทบาท Account Holder, Admin, App Manager หรือ Marketing ชื่อเมนูด้านล่างตรงกับศูนย์ช่วยเหลือของ Apple:
- ใน Apps เปิดแอปของคุณ แล้วเลือก Subscriptions ในแถบด้านข้าง
- เลือกกลุ่ม แล้วเลือก subscription
- ในส่วน Subscription Prices คลิก View all Subscription Pricing แล้วคลิก Set up Introductory Offer
- เลือกประเทศหรือภูมิภาค แล้วเลือกวันเริ่มและวันสิ้นสุด ถ้าเริ่มวันนี้ ข้อเสนอจะเริ่มทันที
- เลือก Free, Pay up front หรือ Pay as you go แล้วเลือกระยะเวลาและราคา
- App Store Connect จะเสนอราคาเทียบเท่าสำหรับ 175 ประเทศ ปรับได้ถ้าจำเป็น แล้วกดยืนยัน
ข้อเสนอที่สร้างแล้วแก้ไขไม่ได้: ถ้าจะเปลี่ยนระยะเวลาหรือราคา ให้ลบในแท็บ Introductory Offers แล้วสร้างใหม่ การเปลี่ยนแปลงอาจใช้เวลาถึงหนึ่งชั่วโมงกว่าจะมีผลใน sandbox เอกสารของ RevenueCat ยังแนะนำให้รอได้ถึง 24 ชั่วโมงก่อนสรุปว่าข้อเสนอไม่ทำงาน
ระยะเวลาที่เลือกได้
ทดลองใช้ฟรีได้ 3 วัน, 1 หรือ 2 สัปดาห์, 1, 2, 3 หรือ 6 เดือน หรือ 1 ปี ไม่ว่า subscription จะมีรอบเท่าไร จ่ายล่วงหน้าครอบคลุมได้ 1, 2, 3 หรือ 6 เดือน หรือ 1 ปี ส่วนจ่ายตามรอบขึ้นกับรอบของ subscription:
| Subscription | จ่ายตามรอบ |
|---|---|
| 1 สัปดาห์ | 1 ถึง 12 สัปดาห์ |
| 1 เดือน | 1 ถึง 12 เดือน |
| 2 เดือน | 2 ถึง 12 เดือน ทีละ 2 |
| 3 เดือน | 3, 6, 9 หรือ 12 เดือน |
| 6 เดือน | 6 หรือ 12 เดือน |
| 1 ปี | 1 ปี |
ในแอปของผม ผมเลือก 7 วันบนแพ็กรายปี นี่ไม่ใช่กฎของ Apple แต่เป็นการตัดสินใจเชิงผลิตภัณฑ์ ควรทบทวนด้วยตัวเลขที่คุณวัดเอง
แสดงช่วงทดลองเฉพาะคนที่มีสิทธิ์
Apple บอกไว้ในหน้าช่วยเหลือเดียวกัน: ถ้าคุณแสดงข้อเสนอในแอป ต้องเช็กว่าคนนั้นใช้ได้จริง ให้โค้ดของคุณตอบสองคำถาม: สินค้านี้มีช่วงทดลองใช้ฟรีไหม และคนนี้ยังมีสิทธิ์อยู่ไหม?
คำถามแรกอ่านได้จากตัวสินค้า แต่ระวัง introductory offer ไม่จำเป็นต้องฟรี ใน TradaZen แพ็กรายปีมาตรฐานมีแบบจ่ายล่วงหน้า คือปีแรกถูกกว่า ส่วนช่วงทดลองอยู่ที่แพ็กรายปีอีกตัว ทั้งสองถูกส่งกลับมาเป็น "introductory offer" เหมือนกัน โค้ดของผมจึงอ่านราคาของข้อเสนอ: ถ้าเป็นศูนย์คือช่วงทดลอง ถ้ามากกว่าศูนย์คือข้อเสนอแบบเสียเงิน
คำถามที่สองต้องถาม store ใน Swift นั้น StoreKit 2 มี isEligibleForIntroOffer ตั้งแต่ iOS 15 Apple ระบุว่าค่านี้อาจเป็นจริงได้แม้ไม่ได้ตั้งข้อเสนอไว้ นั่นคือเหตุผลของคำถามแรก ถ้าใช้ RevenueCat ในแอป Expo จะเป็น checkTrialOrIntroductoryPriceEligibility ซึ่งคืนค่า มีสิทธิ์, ไม่มีสิทธิ์, ไม่มีข้อเสนอ หรือไม่ทราบ หลักการใน TypeScript เป็นแบบนี้:
import Purchases, {
INTRO_ELIGIBILITY_STATUS as S,
type PurchasesStoreProduct,
} from "react-native-purchases";
type Essai = "oui" | "non" | "doute";
export async function essaiGratuit(p: PurchasesStoreProduct): Promise<Essai> {
if (!p.introPrice || p.introPrice.price > 0) return "non";
try {
const r = await Purchases.checkTrialOrIntroductoryPriceEligibility([
p.identifier,
]);
const statut = r[p.identifier]?.status;
if (statut === S.INTRO_ELIGIBILITY_STATUS_ELIGIBLE) return "oui";
if (statut === S.INTRO_ELIGIBILITY_STATUS_INELIGIBLE) return "non";
if (statut === S.INTRO_ELIGIBILITY_STATUS_NO_INTRO_OFFER_EXISTS)
return "non";
return "doute";
} catch {
return "doute";
}
}
กรณี "doute" (ไม่แน่ใจ) คือประเด็นจริง RevenueCat อธิบายว่าการเช็กของตนเป็นการประเมินให้ดีที่สุดเท่านั้น และหน้าชำระเงินของ Apple จะแสดงเงื่อนไขจริงก่อนยืนยันอยู่แล้ว สำหรับสถานะที่ไม่ทราบ RevenueCat แนะนำให้แสดงราคาปกติ เพื่อไม่ให้ใครเข้าใจผิด
ผมได้เรียนรู้อีกด้านของปัญหานี้จาก TradaZen เวอร์ชันแรกถือว่าการอ่านค่าผิดพลาดคือการปฏิเสธ ผลคือคนที่มีสิทธิ์ทดลองใช้กลับมองไม่เห็นช่วงทดลอง ทุกวันนี้แอปของผมจะซ่อนช่วงทดลองเฉพาะเมื่อ store ปฏิเสธชัดเจนเท่านั้น คือไม่มีสิทธิ์หรือไม่มีข้อเสนอ ถ้าไม่แน่ใจจะคงการแสดงตามข้อมูลสินค้าไว้ นี่คือการชั่งน้ำหนักของผม ไม่ใช่คำแนะนำของ RevenueCat ถ้าคุณอยากระวังไว้ก่อน ก็ทำตามแนวของเขา ไม่ว่าทางไหน อย่าสับสนระหว่าง "ไม่รู้" กับ "ไม่"
ถ้าคุณใช้ paywall ของ RevenueCat ข้อความแต่ละส่วนจะมีเวอร์ชันสำหรับคนที่มีสิทธิ์ได้ข้อเสนอได้ ตามหน้าเรื่องข้อเสนอของเขา การตั้งค่าที่เหลืออยู่ในคู่มือของผม RevenueCat สำหรับ subscription iOS
สิ่งที่ 3.1.2 กำหนดให้แสดงบนหน้าจอ
Guideline 3.1.2(a) อนุญาตให้มีช่วงทดลองใช้ฟรีบน subscription โดยต้องให้ข้อมูลตามที่ App Store Connect กำหนด หน้าเรื่อง subscription ของ Apple ระบุว่า ในขั้นตอนซื้อช่วงทดลอง ต้องบอกระยะเวลาและราคาที่จะเรียกเก็บเมื่อจบให้ชัดเจน และยอดเงินที่เรียกเก็บต้องเป็นองค์ประกอบด้านราคาที่เด่นที่สุดบนหน้าจอด้วย
การถูก reject ที่ Solys ได้รับเมื่อวันที่ 10 ตุลาคม 2026 บอกไว้ตรงๆ: ช่วงทดลองใช้ฟรี ราคาเปิดตัว และราคาที่คำนวณได้ ต้องเด่นน้อยกว่ายอดเงินที่เรียกเก็บ ประกาศช่วงทดลองได้ แต่ราคาที่เรียกเก็บหลังจากนั้นต้องเป็นราคาที่อ่านง่ายที่สุดบนหน้าจอ การถูก reject ทั้งสองครั้งและวิธีแก้อยู่ในคู่มือของผมเรื่อง guideline 3.1.2
ความผิดพลาดแบบกลับด้านก็มีเหมือนกัน คือมีช่วงทดลองแต่ไม่บอก ครั้งหนึ่งปุ่มใน paywall ของผมเขียนแค่ว่า "ดำเนินการต่อ" ใน Solys คำว่า "ฟรี 7 วัน" มีอยู่แค่ใน label ของ VoiceOver ด้วยซ้ำ ไม่ได้เป็นข้อความที่มองเห็น
ทดสอบข้อเสนอใน sandbox
ซื้อ subscription ด้วยบัญชี sandbox: ช่วงทดลองต้องปรากฏบนหน้าชำระเงินของ Apple ถ้าจะเล่นซ้ำขั้นตอนของผู้สมัครใหม่ ให้เลือก Clear Purchase History ในการตั้งค่าบัญชี sandbox บน iPhone ตามเอกสาร sandbox ของ Apple บัญชีจะกลับมามีสิทธิ์ได้ introductory offer อีกครั้ง
ทดสอบบัญชีที่เคยใช้ช่วงทดลองไปแล้วด้วย: paywall ของคุณต้องไม่ประกาศอะไรฟรีอีก ถ้าสินค้าไม่โหลดเลย อ่านคู่มือของผมเรื่องสถานะ Missing Metadata
ต่อระบบช่วงทดลองใช้ฟรีโดยไม่พลาด
iOS & Android Kit เริ่มจากโค้ดตั้งต้นของแอปผม: onboarding, paywall และ subscription เขียนไว้ให้แล้ว และขั้นที่สาม "ต่อระบบรับเงิน" จะพาคุณตั้งค่าสินค้าและช่วงทดลอง ทั้งกระบวนการอธิบายไว้ในหน้า subscription ในแอป iOS ถ้ายังลังเลเรื่องโมเดล เริ่มจาก subscription หรือซื้อครั้งเดียว
ถ้าคุณกำลังเตรียมปล่อยแอปแรก ทำแบบประเมินฟรี: จะช่วยเรียงขั้นตอนให้ถูกลำดับ และส่ง checklist กันถูก Apple reject ของผมให้คุณ ถ้าอยากให้ฟรีหนึ่งเดือนหรือดึงอดีตผู้สมัครกลับมา อ่านต่อในคู่มือของผมเรื่อง offer code
คำถามที่พบบ่อย
Introductory offer บน App Store คืออะไร?
คือราคาเริ่มต้นของ subscription แบบต่ออายุอัตโนมัติ: ทดลองใช้ฟรี จ่ายล่วงหน้า หรือจ่ายตามรอบ สร้างได้ใน App Store Connect และ Apple จะใช้ให้อัตโนมัติตอนซื้อกับคนที่มีสิทธิ์ จากนั้น subscription จะเปลี่ยนเป็นราคาปกติ
ผู้ใช้หนึ่งคนทดลองใช้ฟรีสองครั้งได้ไหม?
ไม่ได้ในกลุ่ม subscription เดียวกัน: introductory offer ใช้ได้ครั้งเดียวต่อกลุ่มต่อบัญชี Apple การติดตั้งแอปใหม่ไม่ได้คืนสิทธิ์ แต่ถ้าเขาสมัครในอีกกลุ่มหนึ่งของแอปคุณ ก็ใช้ข้อเสนอของกลุ่มนั้นได้
ใช้ช่วงทดลองใช้ฟรีร่วมกับส่วนลดได้ไหม?
ไม่ได้บน subscription ตัวเดียวกันในเวลาเดียวกัน: มี introductory offer ที่ใช้งานได้แค่หนึ่งตัวต่อประเทศ คุณสร้าง subscription ตัวที่สองเพื่อผูกข้อเสนออีกแบบได้ หรือใช้ offer code ซึ่งต่อจาก introductory offer ได้ขึ้นกับการตั้งค่าของคุณ
ต้องออกแอปเวอร์ชันใหม่เพื่อเพิ่มช่วงทดลองไหม?
สำหรับตัวข้อเสนอไม่ต้อง: ตั้งค่าใน App Store Connect และมีผลตอนซื้อ แต่ถ้า paywall ของคุณเขียน "7 วัน" ตายตัวไว้ในโค้ด ก็ต้องอัปเดต ให้อ่านระยะเวลาจากสินค้าที่ store ส่งกลับมา แล้วหน้าจอจะตามไปเอง
อดีตผู้สมัครมีสิทธิ์ทดลองใช้ฟรีไหม?
มี ถ้าไม่เคยใช้ introductory offer ในกลุ่ม subscription นี้มาก่อน ถ้าเคยใช้แล้วก็ไม่มีสิทธิ์อีก แม้จะผ่านไปหลายเดือน ถ้าอยากดึงเขากลับมา Apple มี win-back offer และ promotional offer ให้ใช้

