الانتقال إلى المحتوى الرئيسي
تتيح الاشتراكات لك بيع وصول مستمر مع تجديدات آلية. استخدم دورات فوترة مرنة، تجارب مجانية، تغييرات الخطة، والإضافات لتخصيص التسعير لكل عميل.

Upgrade & Downgrade

تحكم في تغييرات الخطة باستخدام النسبة وتحديثات الكمية.

On‑Demand Subscriptions

فوض تفويضًا الآن وادفع لاحقًا بمبالغ مخصصة.

Customer Portal

دع العملاء يديرون الخطط والفوترة والإلغاءات.

Subscription Webhooks

تفاعل مع أحداث دورة الحياة مثل الإنشاء والتجديد والإلغاء.

ما هي الاشتراكات؟

الاشتراكات هي منتجات متكررة يشتريها العملاء وفق جدول زمني. إنها مثالية لـ:
  • ترخيص SaaS: التطبيقات، واجهات برمجة التطبيقات، أو الوصول إلى المنصات
  • العضويات: المجتمعات، البرامج، أو الأندية
  • المحتوى الرقمي: الدورات، الوسائط، أو المحتوى المتميز
  • خطط الدعم: اتفاقيات مستوى الخدمة، حزم النجاح، أو الصيانة

الفوائد الرئيسية

  • إيرادات متوقعة: فواتير متكررة مع تجديدات تلقائية
  • دورات مرنة: شهرية، سنوية، فترات مخصصة، وتجارب
  • مرونة الخطط: تقسيط للترقيات والتخفيضات
  • إضافات ومقاعد: أضف ترقيات اختيارية وقابلة للقياس
  • تجربة دفع سلسة: دفع مستضاف وبوابة العملاء
  • موجه للمطورين: واجهات برمجة تطبيقات واضحة لإنشاء، تغييرات، وتتبع الاستخدام

إنشاء الاشتراكات

قم بإنشاء منتجات الاشتراك في لوحة معلومات مدفوعات Dodo الخاصة بك، ثم قم ببيعها من خلال الدفع أو واجهة برمجة التطبيقات الخاصة بك. يفصل المنتجات عن الاشتراكات النشطة مما يتيح لك إصدار أسعار، إرفاق إضافات، وتتبع الأداء بشكل مستقل.

إنشاء منتج الاشتراك

قم بتكوين الحقول في لوحة المعلومات لتعريف كيفية بيع اشتراكك، تجديده، وفوترة. الأقسام أدناه تتطابق مباشرة مع ما تراه في نموذج الإنشاء.

تفاصيل المنتج

  • اسم المنتج (مطلوب): الاسم المعروض في الدفع، بوابة العملاء، والفواتير.
  • وصف المنتج (مطلوب): بيان قيمة واضح يظهر في الدفع والفواتير.
  • صورة المنتج (مطلوب): PNG/JPG/WebP حتى 3 ميغابايت. تستخدم في الدفع والفواتير.
  • العلامة التجارية: ربط المنتج بعلامة تجارية معينة للتصميم والبريد الإلكتروني.
  • فئة الضريبة (مطلوب): اختر الفئة (على سبيل المثال، SaaS) لتحديد قواعد الضريبة.
اختر فئة الضريبة الأكثر دقة لضمان جمع الضريبة الصحيح لكل منطقة.

التسعير

  • نوع التسعير: اختر الاشتراك (هذا الدليل). البدائل هي الدفع لمرة واحدة والفوترة بناءً على الاستخدام.
  • السعر (مطلوب): السعر الأساسي المتكرر مع العملة.
  • نسبة الخصم المطبقة (%): نسبة الخصم الاختيارية المطبقة على السعر الأساسي؛ تظهر في صفحة الدفع والفواتير.
  • تكرار الدفع كل (مطلوب): الفاصل الزمني للتجديدات، على سبيل المثال، كل شهر واحد. اختر التكرار (شهور أو سنوات) والكمية.
  • مدة الاشتراك (مطلوب): المدة الإجمالية التي يظل فيها الاشتراك نشطًا (على سبيل المثال، 10 سنوات). بعد انتهاء هذه الفترة، تتوقف التجديدات ما لم يتم تمديدها.
  • أيام فترة التجربة (مطلوب): حدد طول فترة التجربة بالأيام. استخدم 0 لتعطيل التجارب. يتم فرض الرسوم الأولى تلقائيًا عند انتهاء فترة التجربة.
  • اختر الإضافة: أرفق ما يصل إلى 10 إضافات يمكن للعملاء شراؤها جنبًا إلى جنب مع الخطة الأساسية.
يؤثر تغيير التسعير على منتج نشط على المشتريات الجديدة. تتبع الاشتراكات الحالية إعدادات تغيير الخطة والنسبة الخاصة بك.
الإضافات مثالية للميزات القابلة للقياس مثل المقاعد أو التخزين. يمكنك التحكم في الكميات المسموح بها وسلوك النسبة عندما يغيرها العملاء.

الإعدادات المتقدمة

  • تسعير شامل للضرائب: عرض الأسعار شاملة الضرائب المطبقة. لا يزال حساب الضريبة النهائي يختلف حسب موقع العميل.
  • إنشاء مفاتيح الترخيص: إصدار مفتاح فريد لكل عميل بعد الشراء. راجع دليل مفاتيح الترخيص.
  • تسليم المنتج الرقمي: تسليم الملفات أو المحتوى تلقائيًا بعد الشراء. تعرف على المزيد في تسليم المنتج الرقمي.
  • البيانات الوصفية: إرفاق أزواج مفتاح-قيمة مخصصة للتصنيف الداخلي أو تكاملات العملاء. راجع البيانات الوصفية.
استخدم البيانات الوصفية لتخزين المعرفات من نظامك (على سبيل المثال accountId) حتى تتمكن من تسوية الأحداث والفواتير لاحقًا.

تجارب الاشتراك

تتيح التجارب للعملاء الوصول إلى الاشتراكات دون دفع فوري. يتم فرض الرسوم الأولى تلقائيًا عند انتهاء التجربة.

تكوين التجارب

قم بتعيين أيام الفترة التجريبية في قسم تسعير المنتج (استخدم 0 لتعطيلها). يمكنك تجاوز هذا عند إنشاء الاشتراكات:
// Via subscription creation
const subscription = await client.subscriptions.create({
  customer_id: 'cus_123',
  product_id: 'prod_monthly',
  trial_period_days: 14  // Overrides product's trial period
});

// Via checkout session
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_monthly', quantity: 1 }],
  subscription_data: { trial_period_days: 14 }
});
يجب أن تكون القيمة trial_period_days بين 0 و10,000 يوم.

اكتشاف حالة التجربة

حاليًا لا يوجد حقل مباشر لاكتشاف حالة الفترة التجريبية. الحل البديل التالي يتطلب استعلامًا عن المدفوعات، وهو أمر غير فعال. نحن نعمل على حل أكثر كفاءة.
لتحديد ما إذا كان الاشتراك في فترة تجربة، استرجع قائمة المدفوعات للاشتراك. إذا كان هناك دفعة واحدة فقط بمبلغ 0، فإن الاشتراك في فترة التجربة:
const subscription = await client.subscriptions.retrieve('sub_123');
const payments = await client.payments.list({
  subscription_id: subscription.subscription_id
});

// Check if subscription is in trial
const isInTrial = payments.items.length === 1 && 
                  payments.items[0].total_amount === 0;

تحديث فترة التجربة

مدد الفترة التجريبية بتحديث next_billing_date:
await client.subscriptions.update('sub_123', {
  next_billing_date: '2025-02-15T00:00:00Z'  // New trial end date
});
لا يمكنك تعيين next_billing_date إلى وقت ماضي. يجب أن يكون التاريخ في المستقبل.

تغييرات خطة الاشتراك

تسمح لك تغييرات الخطة بالترقية أو التخفيض للاشتراكات، تعديل الكميات، أو الانتقال إلى منتجات مختلفة. اعتمادًا على وضع التقسيم الذي تختاره، قد تؤدي التغيير إلى تحميل فوري، إنشاء رصيد، أو عدم تطبيق أي تعديل في الفواتير.
يمكنك تغيير خطط الاشتراك وتحديث تاريخ الفوترة التالي مباشرة من لوحة تحكم Dodo Payments. يوفر ذلك وسيلة سريعة لتعديل الاشتراكات لطلبات دعم العملاء أو الترقيات الترويجية أو انتقالات الخطط دون استدعاء واجهة برمجة التطبيقات.
تمكين تغييرات الخطة بالخدمة الذاتية: هل تريد أن يقوم العملاء بترقية أو تخفيض اشتراكاتهم عبر بوابة العملاء؟ أضف منتجات الاشتراك إلى مجموعة منتجات وقم بتمكين “السماح بتحديثات الاشتراك” في إعدادات الاشتراك.

Product Collections

جمع المنتجات ذات الصلة في مجموعات لتمكين مسارات ترقية/تخفيض سلسة في بوابة العملاء.

أوضاع النسبة

اختر كيف يتم محاسبة العملاء عند تغيير الخطط:
مقارنة سريعة لأنماط التقسيم الأربعة:
prorated_immediatelydifference_immediatelyfull_immediatelydo_not_bill
ترقيةتحميل مقسم للأيام المتبقيةالفرق الكامل في السعر محملسعر الخطة الجديدة بالكامل محمللا يوجد تحميل — التحويل فوراً
تخفيضرصيد مقسم للأيام المتبقيةالفرق الكامل في السعر كرصيدلا يوجد رصيد، تحميل كامللا يوجد رصيد — التحويل فوراً
دورة الفوترةتبقى كما هيتبقى كما هيتعيد التعيين لليومتبقى كما هي
الأفضل لـفوترة عادلة تعتمد على الوقتتغييرات بسيطة في الطبقاتإعادة تعيين دورة الفوترةانتقالات مجانية أو تغييرات مجاملة

prorated_immediately

تحصل على المبلغ المحسوب بناءً على الوقت المتبقي في دورة الفوترة الحالية. الأفضل للفوترة العادلة التي تأخذ في الحسبان الوقت غير المستخدم.
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'prorated_immediately'
});

difference_immediately

تحصل على فرق السعر فورًا (عند الترقية) أو تضيف رصيدًا للتجديدات المستقبلية (عند التخفيض). الأفضل للسيناريوهات البسيطة للترقية/التخفيض.
// Upgrade: charges $50 (difference between $30 and $80)
// Downgrade: credits remaining value, auto-applied to renewals
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'difference_immediately'
});
يتم تطبيق الاعتمادات من التخفيضات التي تستخدم difference_immediately ضمن نطاق الاشتراك وتُطبق تلقائيًا على عمليات التجديد المستقبلية. وهي مختلفة عن الامتيازات الخاصة بـ Credit-Based Billing.
عندما يخفض العميل باستخدام difference_immediately، تصبح القيمة غير المستخدمة رصيدًا مخصصًا للاشتراك يعوض التجديدات المستقبلية تلقائيًا:

full_immediately

تحصل على مبلغ الخطة الجديدة بالكامل فورًا، متجاهلًا الوقت المتبقي. الأفضل لإعادة تعيين دورات الفوترة.
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_monthly',
  quantity: 1,
  proration_billing_mode: 'full_immediately'
});

do_not_bill

التحويل إلى الخطة الجديدة دون أي تعديل في الفواتير. لا توجد رسوم تقسيم، ولا أرصدة — ينتقل العميل ببساطة إلى الخطة الجديدة. الأفضل للانتقالات المجاملة أو التبديلات المجانية أو السيناريوهات التي ترغب في استيعاب فرق التكلفة.
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_new_plan',
  quantity: 1,
  proration_billing_mode: 'do_not_bill'
});
سيناريو: عميل في الخطة الأساسية (30/شهر)يترقىإلىالخطةالاحترافية(30/شهر) يترقى إلى الخطة الاحترافية (80/شهر) في اليوم 16 من دورة 30 يومًا باستخدام prorated_immediately.
Unused credit from Basic = $30 × (15 remaining / 30 total) = $15.00
Prorated cost of Pro     = $80 × (15 remaining / 30 total) = $40.00
────────────────────────────────────────────────────────────────────
Immediate charge         = $40.00 − $15.00 = $25.00
التجديد التالي في تاريخ الفوترة الأصلي: $80.00/شهر.
لمزيد من أمثلة الحسابات التفصيلية والحالات المتقدمة، انظر دليل Upgrade & Downgrade Guide الكامل.
سيناريو: عميل في الخطة الاحترافية (80/شهر)يخفضإلىالخطةالمبدئية(80/شهر) يخفض إلى الخطة المبدئية (20/شهر) باستخدام difference_immediately.
Credit = Old plan − New plan = $80 − $20 = $60.00
$60 رصيد يُطبق تلقائيًا على تجديدات المستقبل:
  • التجديد 1: 2020 − 20 (رصيد) = **0.00(0.00** (40 رصيد متبقي)
  • التجديد 2: 2020 − 20 (رصيد) = **0.00(0.00** (20 رصيد متبقي)
  • التجديد 3: 2020 − 20 (رصيد) = $0.00 (الرصيد مستهلك)
  • التجديد 4: $20.00 (السعر الكامل)
تعرف على المزيد حول كيفية إدارة الأرصدة في Upgrade & Downgrade Guide.

تغيير الخطط مع الإضافات

تعديل الإضافات عند تغيير الخطط. تُدرج الإضافات في حسابات التقسيم:
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'difference_immediately',
  addons: [{ addon_id: 'addon_extra_seats', quantity: 2 }]  // Add add-ons
  // addons: []  // Empty array removes all existing add-ons
});
تؤدي تغييرات الخطة إلى تحميلات فورية. قد تؤدي الفشل في التحميل إلى نقل الاشتراك إلى حالة on_hold. تتبع التغييرات عبر أحداث ويب هوك subscription.plan_changed.

معاينة تغييرات الخطة

قبل الالتزام بتغيير الخطة، معاينة التحميل الدقيق والاشتراك الناتج:
const preview = await client.subscriptions.previewChangePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'prorated_immediately'
});

// Show customer the charge before confirming
console.log('You will be charged:', preview.immediate_charge.summary);

Preview Change Plan API

معاينة تغييرات الخطة قبل الالتزام بها.

حالات الاشتراك

يمكن أن تكون الاشتراكات في حالات مختلفة طوال دورة حياتها:
  • active: الاشتراك نشط وسيتجدد تلقائيًا
  • on_hold: الاشتراك متوقف بسبب فشل الدفع. تحديث طريقة الدفع مطلوب لتفعيلها من جديد
  • cancelled: تم إلغاء الاشتراك ولن يتم تجديده
  • expired: وصل الاشتراك إلى تاريخ نهايته
  • pending: يجري إنشاء الاشتراك أو معالجته

حالة الانتظار

يدخل الاشتراك في حالة on_hold عندما:
  • يفشل الدفع في التجديد (رصيد غير كافٍ، بطاقة منتهية، إلخ.)
  • يفشل تحميل تغيير الخطة
  • يفشل ترخيص طريقة الدفع
عندما يكون الاشتراك في حالة on_hold، لن يتجدد تلقائيًا. يجب عليك تحديث طريقة الدفع لإعادة تفعيل الاشتراك.

إعادة التفعيل من الانتظار

لإعادة تفعيل الاشتراك من حالة on_hold، قم بتحديث طريقة الدفع. يقوم هذا تلقائيًا:
  1. بإنشاء تحميل للمبالغ المستحقة
  2. توليد فاتورة
  3. معالجة الدفع باستخدام طريقة الدفع الجديدة
  4. إعادة تفعيل الاشتراك إلى حالة active عند نجاح الدفع
// Reactivate subscription from on_hold
const response = await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'new',
  return_url: 'https://example.com/return'
});

// For on_hold subscriptions, a charge is automatically created
if (response.payment_id) {
  console.log('Charge created:', response.payment_id);
  // Redirect customer to response.payment_link to complete payment
  // Monitor webhooks for payment.succeeded and subscription.active
}
بعد تحديث طريقة الدفع بنجاح لاشتراك في حالة on_hold، ستتلقى payment.succeeded متبوعًا بأحداث ويب هوك subscription.active.

إدارة API

استخدم POST /subscriptions لإنشاء الاشتراكات برمجيًا من المنتجات، مع التجارب الاختيارية والإضافات.

API Reference

عرض API إنشاء الاشتراك.
استخدم PATCH /subscriptions/{id} لتحديث الكميات، الإلغاء في تاريخ الفاتورة التالي، أو تعديل البيانات الوصفية.

API Reference

تعلم كيفية تحديث تفاصيل الاشتراك.
تغيير المنتج النشط والكميات مع التحكم في التقسيم.

API Reference

مراجعة خيارات تغيير الخطة.
بالنسبة للاشتراكات عند الطلب، قم بتحميل مبالغ محددة عند الطلب.

API Reference

تحميل اشتراك عند الطلب.
استخدم GET /subscriptions لإدراج جميع الاشتراكات وGET /subscriptions/{id} لاسترجاع واحدة.

API Reference

تصفح APIs الإدراج والاسترجاع.
استرجاع الاستخدام المسجل لنماذج التسعير المتدرجة أو الهجينة.

API Reference

شاهد API تاريخ الاستخدام.
تحديث طريقة الدفع للاشتراك. بالنسبة للاشتراكات النشطة، يتم تحديث طريقة الدفع للتجديدات المستقبلية. بالنسبة للاشتراكات في حالة on_hold، يقوم هذا بإعادة تفعيل الاشتراك بإنشاء تحميل للمبالغ المستحقة.

API Reference

تعلم كيفية تحديث طرق الدفع وإعادة تفعيل الاشتراكات.

حالات الاستخدام الشائعة

  • SaaS وAPIs: الوصول المتدرج مع الإضافات للمقاعد أو الاستخدام
  • المحتوى والإعلام: الوصول الشهري مع التجارب التمهيدية
  • خطط دعم B2B: عقود سنوية مع إضافات دعم متميزة
  • الأدوات والمكونات الإضافية: مفاتيح الترخيص والأصدارات المحددة

أمثلة التكامل

جلسات الخروج (الاشتراكات)

عند إنشاء جلسات الخروج، قم بتضمين منتج الاشتراك والإضافات الاختيارية:
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_subscription',
      quantity: 1
    }
  ]
});

تغيير الخطط مع التقسيم

الترقية أو التخفيض للاشتراك والتحكم في سلوك التقسيم:
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_new',
  quantity: 1,
  proration_billing_mode: 'difference_immediately'
});

الإلغاء في تاريخ الفاتورة التالي

جدولة إلغاء يسري في نهاية فترة الفاتورة الحالية:
await client.subscriptions.update('sub_123', {
  cancel_at_next_billing_date: true
});

اشتراكات عند الطلب

إنشاء اشتراك عند الطلب وتحميل لاحقًا كما هو مطلوب:
const onDemand = await client.subscriptions.create({
  customer_id: 'cus_123',
  product_id: 'prod_on_demand',
  on_demand: true
});

await client.subscriptions.createCharge(onDemand.id, {
  amount: 4900,
  currency: 'USD',
  description: 'Extra usage for September'
});

تحديث طريقة الدفع للاشتراك النشط

تحديث طريقة الدفع لاشتراك نشط:
// Update with new payment method
const response = await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'new',
  return_url: 'https://example.com/return'
});

// Or use existing payment method
await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'existing',
  payment_method_id: 'pm_abc123'
});

إعادة تفعيل الاشتراك من on_hold

إعادة تفعيل اشتراك تم تعليقه بسبب فشل الدفع:
// Update payment method - automatically creates charge for remaining dues
const response = await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'new',
  return_url: 'https://example.com/return'
});

if (response.payment_id) {
  // Charge created for remaining dues
  // Redirect customer to response.payment_link
  // Monitor webhooks: payment.succeeded → subscription.active
}

اشتراكات مع التفويضات المتوافقة مع RBI

تعمل اشتراكات UPI والبطاقات الهندية ضمن لوائح RBI (بنك الاحتياطي الهندي) بمتطلبات تفويض محددة:

حدود التفويض

يعتمد نوع وكلفة التفويض على الرسوم المتكررة لاشتراكك:
  • الرسوم أقل من 15,000 روبية: نقوم بإنشاء تفويض عند الطلب بقيمة 15,000 INR. يتم فرض مبلغ الاشتراك بشكل دوري وفقًا لتكرار اشتراكك، حتى الحد الأقصى للتفويض.
  • الرسوم من 15,000 روبية أو أكثر: نقوم بإنشاء تفويض اشتراك (أو تفويض عند الطلب) للمبلغ الدقيق للاشتراك.
لمزيد من المعلومات التفصيلية حول التفويضات المتوافقة مع RBI لطرق الدفع الهندية، انظر صفحة طرق الدفع الهندية.

اعتبارات الترقية والتخفيض

مهم: عند ترقية أو تخفيض الاشتراكات، يجب مراعاة حدود التفويض بعناية:
  • إذا نتجت عن الترقية/التخفيض رسوم تفوق 15,000 روبية وتتجاوز الحد الحالي للدفع عند الطلب، فقد يفشل تحميل المعاملة.
  • في مثل هذه الحالات، قد يحتاج العميل إلى تحديث طريقة الدفع الخاصة به أو تغيير الاشتراك مرة أخرى لإنشاء تفويض جديد بالحد المناسب.

التفويض للرسوم العالية القيمة

بالنسبة لرسوم الاشتراك التي تبلغ 15,000 روبية أو أكثر:
  • سيتم توجيه العميل من قبل بنكه لتفويض المعاملة.
  • إذا فشل العميل في تفويض المعاملة، ستفشل المعاملة وسيتم وضع الاشتراك في الانتظار.

تأخير المعالجة لمدة 48 ساعة

الجدول الزمني للمعالجة: تتبع الرسوم المتكررة على البطاقات الهندية واشتراكات UPI نمط معالجة فريد:
  • تبدأ الرسوم في التاريخ المجدول وفقًا لتكرار الاشتراك.
  • يتم الخصم الفعلي من حساب العميل فقط بعد 48 ساعة من بدء الدفع.
  • قد تمتد هذه النافذة البالغة 48 ساعة إلى ساعتين إلى 3 ساعات إضافية بناءً على استجابات واجهات برمجة التطبيقات الخاصة بالبنك.

نافذة إلغاء التفويض

خلال نافذة المعالجة التي تستغرق 48 ساعة:
  • يمكن للعملاء إلغاء التفويض عبر تطبيقاتهم المصرفية.
  • إذا ألغى العميل التفويض خلال هذه الفترة، سيبقى الاشتراك نشطًا (هذه حالة خاصة بالبطاقات الهندية واشتراكات UPI AutoPay).
  • ومع ذلك، قد يفشل الخصم الفعلي، وفي هذه الحالة، سنضع الاشتراك في الانتظار.
التعامل مع الحالة الخاصة: إذا قدمت فوائد أو أرصدة أو استخدام اشتراك للعملاء فور بدء الرسوم، فستحتاج للتعامل مع هذه النافذة البالغة 48 ساعة بطريقة مناسبة في تطبيقك. انظر في:
  • تأخير تفعيل الفائد حتى تأكيد الدفع
  • تنفيذ فترات السماح أو الوصول المؤقت
  • مراقبة حالة الاشتراك لإلغاءات التفويض
  • معالجة حالات تعليق الاشتراك في منطق التطبيق الخاص بك
مراقبة إشعارات الاشتراك لتتبع تغييرات حالة الدفع والتعامل مع الحالات الحادة حيث يتم إلغاء التفويضات خلال نافذة 48 ساعة.

أفضل الممارسات

  • ابدأ بخطط واضحة: 2–3 خطط مع اختلافات واضحة
  • تواصل في التسعير: اعرض الإجماليات، التقسيم، والتجديد التالي
  • استخدم التجارب بذكاء: التحويل مع الإدخال، وليس فقط الوقت
  • استفد من الإضافات: احتفظ بخطط الأساس بسيطة وبيع الإضافات
  • اختبر التغييرات: تحقق من تغييرات الخطط والتقسيم في وضع الاختبار
الاشتراكات هي أساس مرن للإيرادات المتكررة. ابدأ ببساطة، اختبر بدقة، وقم بالتكرار بناءً على التبني، والتخلي، ومقاييس التوسع.
Last modified on April 1, 2026