ما زال ROAS تطبيقك يحتسب المشتريات التي ردّت Apple وGoogle قيمتها، لذا ابنِ عروض أسعارك على ROAS الصافي
نادرًا ما تصل المبالغ المستردة إلى منصات الإعلانات، فيظل ROAS ينسب إلى الحملات مشتريات سبق أن ردّت Apple وGoogle قيمتها. نوضح هنا أين تفقد Firebase وGoogle Ads وAdAttributionKit المبالغ المستردة، وكم يكلفك ذلك، وكيف تبني ROAS الصافي لتطبيقك.

أهم الخلاصات
- حدث app_store_refund الذي تجمعه Firebase تلقائيًا لا يُطلق إلا عندما تردّ Google Play قيمة عملية شراء داخل التطبيق. وتصنفه Google على أنه خاص بـ Android فقط، لذا لا تُخفّض المبالغ المستردة في App Store أبدًا إيرادات in_app_purchase التي سجلتها Firebase.
- يتتبع Google Ads مشتريات Google Play داخل التطبيق تلقائيًا في تطبيقات Android، ويبلّغ عن قيمة الشراء بوصفها قيمة التحويل. وفي الاشتراكات لا يسجل إلا الشراء الأول وقيمة الدفعة الأولى.
- يمكن لتعديلات التحويل في Google Ads أن تعيد تحديد قيمة التحويل أو تسحبه إلى الصفر، وتقول Google إن التحويلات عبر الإنترنت لا يمكن تعديلها إلا إذا أُرسل معها معرّف معاملة.
- في AdAttributionKit من Apple ثلاث نوافذ تحويل بعد التشغيل الأول: الأيام من 0 إلى 2، ومن 3 إلى 7، ومن 8 إلى 35. ولا تظهر قيمة التحويل الدقيقة إلا في أول postback.
- ROAS الصافي هو الإيرادات المنسوبة إلى الإعلانات ناقص المبالغ المستردة عن تلك المشتريات، مقسومًا على الإنفاق الإعلاني. وقد تأتي الحملة صاحبة ROAS الإجمالي الأعلى في مرتبة أدنى على ROAS الصافي إذا كان مشتروها يطلبون الاسترداد أكثر.
- تصل إشارات الاسترداد إلى خادم المطوّر، لا إلى شبكة الإعلانات. ترسل Apple إشعار REFUND عبر App Store Server Notification، وتبلّغ Google Play عن عمليات الإلغاء عبر إشعارات المطوّرين في الوقت الفعلي وعبر Voided Purchases API الذي يغطي آخر 30 يومًا.
- لا يوجد سوى مسارين للاسترداد يسمحان للمطوّر بتقديم أدلة: CONSUMPTION_REQUEST من Apple ويُردّ عليه خلال 12 ساعة، ومراجعة رد المبالغ المدفوعة في Google Play عبر orders.reviewrefund ويُردّ عليها خلال 24 ساعة.
تسجّل لوحات الإعلانات عملية الشراء داخل التطبيق لحظة حدوثها، ومعظمها لا يتراجع عنها أبدًا. وعندما تردّ Apple أو Google قيمة تلك العملية لاحقًا، يخرج المال من مستحقاتك لكنه يبقى ضمن إيرادات الحملة، فيظل ROAS ينسب الفضل إلى الإعلان الذي باعها. ROAS الصافي، أي الإيرادات بعد خصم المبالغ المستردة مقسومة على الإنفاق الإعلاني، هو الرقم الذي يخبرك بالحملات التي ربحت فعلًا. وعليك أن تبنيه بنفسك، لأن إشارة الاسترداد تصل إلى خادمك، لا إلى شبكة الإعلانات.
لماذا يضخّم ROAS الإيرادات عند تجاهل المبالغ المستردة
يقسم ROAS الإيرادات المنسوبة على الإنفاق الإعلاني. وجانب الإيرادات يُكتب عادة مرة واحدة عند الشراء، إما عبر SDK على الجهاز أو عبر استيراد التحويلات من المتجر. أما الاسترداد فحدث لاحق يقع خارج الجهاز، بين العميل وApple أو Google. وما لم ينقله شيء إلى الحملة نفسها، تظل عملية الشراء محسوبة.
لن يضر ذلك لو كانت المبالغ المستردة نادرة وموزعة بالتساوي. لكنها في الغالب ليست كذلك. فالإعلان الذي يعد بأكثر مما يقدمه التطبيق، أو العرض الذي يُعرض على الجمهور الخطأ، أو مصدر الزيارات المليء بالبطاقات المسروقة، كلها تجرّ المبالغ المستردة نحو حملات بعينها. وROAS الإجمالي يخفي هذا الفرق تحديدًا.
ما هو ROAS الصافي؟
ROAS الصافي هو النسبة نفسها بعد خصم المبالغ المستردة من الإيرادات: الإيرادات المنسوبة إلى حملة، ناقص المبالغ المستردة عن المشتريات نفسها، مقسومة على تكلفة الحملة. بعض الفرق تخصم أيضًا عمولة المتجر والضرائب. ومهما خصمت غير ذلك، فالمبالغ المستردة هي التي تغيّر الحملة الفائزة.
أين تضيع المبالغ المستردة بين المتجر ولوحة إعلاناتك
Firebase تسجل المبالغ المستردة في Google Play، لا في App Store
تتضمن قائمة Google للأحداث التي تُجمع تلقائيًا حدث in_app_purchase، الذي يُطلق عندما يُكمل المستخدم عملية شراء داخل التطبيق، بما في ذلك الاشتراك الأول، تعالجها Apple App Store أو Google Play. أما نظيره الخاص بالاسترداد، app_store_refund، فيُطلق عندما تردّ Google Play قيمة عملية شراء داخل التطبيق، وتصنفه Google على أنه خاص بـ Android فقط. ولا يُصدَّر app_store_refund ولا أحداث الاشتراك التلقائية إلى BigQuery.
وتذكر الصفحة نفسها أن Analytics لا يقيس تلقائيًا إيرادات شراء التطبيقات المدفوعة ولا المبالغ المستردة عنها، وأن الإيرادات المُبلَّغ عنها قد تختلف عن Google Play Developer Console. وعلى iOS لا يوجد ما يخصم تلقائيًا مبلغًا مستردًا في App Store من عملية شراء سجلتها Firebase بالفعل.
Google Ads يسجل قيمة الشراء بوصفها قيمة التحويل
في تطبيقات Android التي تستخدم الفوترة داخل التطبيق، يستطيع Google Ads تتبع المشتريات داخل التطبيق لمن نقروا على إعلانك، دون أي تعليمات برمجية في التطبيق. وتقول Google إن قيمة الشراء تُبلَّغ تلقائيًا بوصفها قيمة التحويل. وفي الاشتراكات لا يُسجَّل تحويلًا إلا الشراء الأول، ولا تُسجَّل إلا قيمة الدفعة الأولى. ولا تذكر مقالة المساعدة المبالغ المستردة.
لكن Google Ads يملك أداة تصحيح. فتعديلات التحويل تتيح لك إعادة تحديد قيمة التحويل دون تغيير العدد، أو سحبه، ما يجعل قيمته 0.00 ويؤثر في استراتيجيات عروض الأسعار القائمة على CPA وROAS معًا. وتقول Google إن التحويلات عبر الإنترنت لا يمكن تعديلها إلا إذا استخدمت معرّف معاملة، وإن التحويل المسحوب لا يمكن تعديله مرة أخرى. ولا تذكر تلك الصفحة تحويلات التطبيقات، لذا تأكد من أن إعداد التحويلات لديك يدعم التعديلات قبل أن تبني عليها.
نوافذ postback الإعلانية من Apple تُغلق قبل وصول كثير من المبالغ المستردة
في AdAttributionKit ثلاث نوافذ تحويل تبدأ عندما يشغّل المستخدم التطبيق أول مرة: الأيام من 0 إلى 2، والأيام من 3 إلى 7، والأيام من 8 إلى 35. ويستطيع التطبيق تحديث قيمة التحويل حتى تنتهي النافذة. ثم ترسل Apple الـ postback بعد تأخير عشوائي، من 24 إلى 48 ساعة للأول، ومن 24 إلى 144 ساعة للثاني والثالث. وإذا ثبّت التطبيق قيمة مبكرًا، يتجاهل النظام أي تحديثات لاحقة في تلك النافذة.
لا تظهر قيمة التحويل الدقيقة إلا في أول postback. أما الـ postback اللاحقة فتحمل في أحسن الأحوال قيمة تقريبية. فعملية شراء في اليوم 1 ردّت Apple قيمتها في اليوم 10 سبق الإبلاغ عنها في postback لم يعد قابلًا للتغيير.
| أداة القياس | ما تسجله عند الشراء | ما يحدث عند استرداد قيمة الشراء |
|---|---|---|
| Firebase in_app_purchase، على Android وiOS | معرّف المنتج، السعر، القيمة، العملة، الكمية | Android: يُطلق app_store_refund. iOS: لا يوجد حدث استرداد تلقائي |
| Google Ads، تحويلات Google Play، على Android | قيمة الشراء بوصفها قيمة التحويل، والدفعة الأولى فقط في الاشتراكات | غير موصوف. يمكن للتعديلات إعادة تحديد التحويلات عبر الإنترنت المرسلة مع معرّف معاملة أو سحبها |
| postback من AdAttributionKit، على iOS | قيمة تحويل لكل نافذة، والدقيقة في الأولى فقط | تُثبَّت بمجرد تجهيز postback تلك النافذة |
| خادمك الخاص | كل معاملة، مرتبطة بمعرّف المستخدم لديك | إشعار REFUND من Apple، وإشارات المشتريات الملغاة من Google Play |
متى تصل المبالغ المستردة في التطبيقات، ومن يقرر فيها
لا تصل المبالغ المستردة وفق جدول واحد. فبعضها يصل بعد ساعات من الشراء، وبعضها بعد أشهر، ولهذا يظل ROAS المجموعة يتراجع بعد أن بدا تقرير الحملة نهائيًا.
| مسار الاسترداد | التوقيت بكلمات المتجر نفسه | من يقرر | الإشارة على خادمك |
|---|---|---|---|
| طلب استرداد في Google Play | خلال 48 ساعة يطلب العميل من Google. وبعدها تحيله Google إلى المطوّر | Google، ثم أنت | عملية شراء ملغاة عبر RTDN وVoided Purchases API |
| استرداد من المطوّر في Google Play | متى أصدرته | أنت | عملية شراء ملغاة، إذا ألغيت الوصول |
| بلاغ عن رسوم غير مصرّح بها في Google Play | خلال 120 يومًا من المعاملة | عملية شراء ملغاة | |
| استرداد Apple | يُطلب عبر reportaproblem.apple.com، ويصل تحديث خلال 24 إلى 48 ساعة | Apple | إشعار REFUND مع revocationReason |
| طلب الاستهلاك من Apple | تردّ خلال 12 ساعة | Apple، اعتمادًا على بياناتك | CONSUMPTION_REQUEST |
| مراجعة رد المبالغ المدفوعة في Google Play | تردّ خلال 24 ساعة عبر orders.reviewrefund | البنك، بعد أدلتك | عملية شراء ملغاة إذا ثبت رد المبلغ |
كم يكلفك ROAS لا يرى المبالغ المستردة
خذ حملتين بالميزانية نفسها. الأرقام أدناه للتوضيح، وليست معيارًا مرجعيًا.
| البند | الحملة A | الحملة B |
|---|---|---|
| الإنفاق الإعلاني | $10,000 | $10,000 |
| إيرادات الشراء المنسوبة | $14,000 | $12,500 |
| ROAS الإجمالي | 1.40 | 1.25 |
| الحصة المستردة من تلك الإيرادات | 18% | 4% |
| الإيرادات بعد المبالغ المستردة | $11,480 | $12,000 |
| ROAS الصافي | 1.15 | 1.20 |
يقول لك ROAS الإجمالي أن تنقل المال إلى A. ويقول ROAS الصافي إن B احتفظت بالمزيد من كل دولار. وإذا كانت عروض أسعارك تعمل على القيمة الإجمالية، فستواصل الخوارزمية البحث عن مزيد من مشتري A، لأن شيئًا لا يخبرها أبدًا بأنهم طلبوا استرداد أموالهم.
الإنفاق الإعلاني ليس إلا الفاتورة الأولى. فالعميل الذي استرد ماله يترك خلفه أيضًا ما يلي:
- الدفعات. صفقات الشركاء وصنّاع المحتوى والمؤثرين المدفوعة لكل عملية شراء تُدفع عادة على البيع، لا على البيع بعد خصم المبالغ المستردة، ما لم ينص العقد على غير ذلك.
- الحوسبة واستدعاءات API والتخزين. المستخدم الذي استرد ماله شغّل خوادمك وواجهات API المدفوعة من أطراف ثالثة ومساحة التخزين لديك حتى أُلغي وصوله. وتلك الفواتير لا تُسترد.
- تكاليف رد المبالغ المدفوعة. منذ 3 أغسطس 2026 تحمّل Google المطوّر سعر الشراء محل رد المبلغ مع رسوم البنك، لذا فمصدر زيارات Android كثير النزاعات يكلف أكثر من الإيرادات التي يخسرها.
- استهداف أسوأ. عروض الأسعار القائمة على القيمة والمدرَّبة على مشتريات مستردة تبحث عن مزيد من الأشخاص الذين يشبهون من استردوا أموالهم.

هل ارتفاع معدل الاسترداد في حملة واحدة احتيال أم وعد لم يتحقق؟
غالبًا ما يكون الوعد. يخبرك حقل revocationReason من Apple بالجهة التي يقع عليها الاسترداد. القيمة 0 تعني أن App Store ردّ قيمة المعاملة لأسباب أخرى، مثل عملية شراء عن طريق الخطأ. والقيمة 1 تعني أنه ردّها بسبب مشكلة فعلية أو متصوَّرة في تطبيقك. وتجمّع القيمة 1 في حملة واحدة يشير عادة إلى الإعلان نفسه أو إلى تجربة البدء التي يقود إليها. أما تجمّع بلاغات الرسوم غير المصرّح بها في Google Play فيشير إلى مصدر الزيارات.
كيف تبني ROAS الصافي لتطبيقك
لا تحتاج إلى أداة جديدة كي تبدأ. تحتاج إلى بضع عمليات ربط لا تجريها بياناتك على الأرجح بعد.
- اربط الحملة بالمستخدم. خزّن نتيجة الإسناد بجوار معرّف المستخدم لديك عند التثبيت، كي يمكن تتبع أي معاملة لاحقة إلى حملة.
- اربط المعاملة بالمستخدم. اضبط appAccountToken في مشتريات iOS ومعرّف حساب مموَّهًا في مشتريات Google Play، كي يرتبط كل حدث من المتجر بالمستخدم لديك دون تخمين.
- استمع إلى المبالغ المستردة على الخادم. عالج إشعار REFUND من Apple عبر App Store Server Notifications V2، وإشعارات المشتريات الملغاة من Google Play. واستعلم من Voided Purchases API دوريًا كخط دفاع احتياطي، لأنه لا يعيد إلا عمليات الإلغاء في آخر 30 يومًا.
- اعرض الأرقام الإجمالية والصافية جنبًا إلى جنب، حسب مجموعة الشراء. احتسب كل استرداد على الحملة وتاريخ الشراء اللذين حققاه، لا على اليوم الذي ظهر فيه الاسترداد.
- أرسل التصحيحات حيث تقبلها المنصة. إذا كانت تحويلات Google Ads لديك تحمل معرّف معاملة، فأعد تحديد قيمة التحويلات المستردة أو اسحبها. وحيث لا تقبل المنصة التصحيحات، انقل ميزانيتها اعتمادًا على الأرقام الصافية.
- ردّ على طلبَي الأدلة في الوقت المحدد. يردّ RefundHalt على CONSUMPTION_REQUEST من Apple ضمن مهلة 12 ساعة، وعلى مراجعة رد المبالغ المدفوعة في Google Play خلال 24 ساعة، لتصل روايتك في المبالغ المستردة التي يمكنك الاعتراض عليها.
هل تُحتسب المبالغ المستردة في تاريخ الشراء أم في تاريخ الاسترداد؟
لقرارات الحملات، في تاريخ الشراء. فالاسترداد حقيقة تخص عملية شراء، وعملية الشراء تنتمي إلى حملة. أما الإدارة المالية فتقيّده في تاريخ الاسترداد، ولهذا لن يتطابق تقرير ROAS مع مستحقاتك في أي يوم بعينه. احتفظ بالعرضين وسمِّ كلًّا منهما بوضوح.
متى يصبح ROAS الصافي للمجموعة نهائيًا؟
يستقر على مراحل. تُغلق نافذة الاسترداد الذاتي في Google بعد 48 ساعة، وتخبر Apple العملاء بأن يتوقعوا تحديثًا لطلب الاسترداد خلال 24 إلى 48 ساعة، وقد يصل بلاغ عن رسوم غير مصرّح بها في Google Play خلال 120 يومًا من المعاملة. اعتبر الأرقام المبكرة مؤقتة، وأعد فحص المجموعة نفسها لاحقًا.
الأسئلة الشائعة
- هل تخصم Firebase المبالغ المستردة من إيرادات الشراء داخل التطبيق؟
- في Google Play فقط. حدث app_store_refund الذي تجمعه Firebase تلقائيًا يُطلق عندما تردّ Google Play قيمة عملية شراء داخل التطبيق، وتصنفه Google على أنه خاص بـ Android فقط. لا يوجد مقابل تلقائي للمبالغ المستردة في App Store، وتقول Google إن Analytics لا يقيس تلقائيًا إيرادات شراء التطبيقات المدفوعة ولا المبالغ المستردة عنها.
- هل يزيل Google Ads المشتريات المستردة داخل التطبيق من التحويلات؟
- مقالة Google نفسها عن تحويلات Google Play لا تقول ذلك. فهي تذكر أن قيمة الشراء تُبلَّغ بوصفها قيمة التحويل، ولا تذكر المبالغ المستردة. يمكن لتعديلات التحويل في Google Ads إعادة تحديد التحويل أو سحبه، وتقول Google إن التحويلات عبر الإنترنت لا يمكن تعديلها إلا إذا أُرسل معها معرّف معاملة.
- هل يمكن أن تعكس postback من AdAttributionKit عملية استرداد؟
- فقط إذا وقع الاسترداد قبل تجهيز postback نافذة التحويل تلك. تمتد النوافذ على الأيام من 0 إلى 2، ومن 3 إلى 7، ومن 8 إلى 35 بعد التشغيل الأول، وبمجرد انتهاء النافذة أو تثبيت القيمة تتجاهل Apple أي تحديثات لاحقة في تلك النافذة.
- كيف أحسب ROAS الصافي لتطبيق؟
- خذ الإيرادات المنسوبة إلى حملة، واطرح منها المبالغ المستردة عن المشتريات نفسها، ثم اقسم الناتج على الإنفاق الإعلاني للحملة. احتسب كل استرداد على مجموعة الشراء التي حققته، مستخدمًا إشعار REFUND من Apple وإشارات المشتريات الملغاة من Google Play سجلًّا للاسترداد.
- هل يمكنني الاعتراض على المبالغ المستردة التي تخفّض ROAS لديّ؟
- نوعان فقط. يتيح لك CONSUMPTION_REQUEST من Apple إرسال بيانات الاستهلاك خلال 12 ساعة، وتمنحك مراجعة رد المبالغ المدفوعة في Google Play عبر orders.reviewrefund مهلة 24 ساعة. أما استرداد Google Play خلال 48 ساعة، والمبالغ المستردة عبر الدعم، والمشتريات الملغاة فتُحسم دونك، ورد المبالغ المدفوعة عبر البنك نهائي.
المصادر وقراءات إضافية
- Firebase Help: [GA4] Automatically collected events
- Google Ads Help: Measure app conversions with Google Play
- Google Ads Help: About conversion adjustments
- Apple Developer Documentation: Receiving postbacks in multiple conversion windows
- Apple Developer Documentation: notificationType
- Apple Developer Documentation: revocationReason
- Google Play Developer API: Voided Purchases API
- Google Play Help: Apps, games, and in-app purchases refund policies
- Google Play Help: Learn about Google Play refund policies
- Apple Support: Request a refund for apps or content that you bought from Apple
RefundHalt
الطيار الآلي للاستردادات في App Store وGoogle Play
تابع القراءة
يخبرك App Store order ID المطبوع على إيصال العميل بما اشتراه، وما إذا كانت Apple قد ردّت له المبلغ بالفعل
تحوّل نقطة النهاية Look Up Order ID من Apple رقم order ID الموجود في إيصال App Store الخاص بالعميل إلى signed transactions، بما فيها تواريخ الاسترداد وأسبابه. إليك كيف تستخدمها مع رسائل طلب الاسترداد، وما الذي لا تستطيع فعله، وكيف يختلف order ID في Google Play.
استرداد مبالغ الدفع عبر الويب في iOS يصل إليك الآن بدلًا من Apple، وكذلك نزاعات البنوك
أصبح بإمكان تطبيقات iPhone في الولايات المتحدة توجيه المشترين إلى صفحة دفع عبر الويب. تقول Apple إنها لا تستطيع المساعدة في استرداد المبالغ عن هذه المبيعات، لذا ينتقل إليك مكتب الاسترداد والاعتراضات على المدفوعات ورسوم النزاع البالغة $15. إليك ما يتغير، وكم يكلّف، وكيف تقلّل النزاعات.