لماذا دمجنا باقتَي الوكالات في باقة واحدة
ملاحظات ميدانية من الفريق
خطأ الباقتين
كان في المنتج باقتان للوكالات: Agency بـ249 دولارًا شهريًا (10 مساحات عمل للعملاء، و5 مقاعد للفريق، دون لوحة تحكم بعلامة الوكالة ولا إعداد يتولّاه فريقنا)، وAgency Pro بـ499 دولارًا شهريًا (25 عميلًا، و15 مقعدًا، ولوحة تحكم بعلامة الوكالة، ودعم مخصّص). بدا التقسيم منطقيًا في جدول الميزات، لكنّه كان خاطئًا على أرض الواقع.
الوكالات التي أبدت اهتمامًا اصطدمت كلّها بالعقبة نفسها: الميزات التي أرادتها فعلًا من اليوم الأول (لوحة تحكم بعلامتها، والدعم المخصّص، وتفعيل الجماهير) كانت محجوزة في باقة Pro. فبدت Agency بـ249 دولارًا مجرّد عيّنة للتجربة، وبدت Agency Pro بـ499 دولارًا غالية بلا مبرّر. وبقي الوسط فارغًا.
ما الذي غيّرناه
باقة Agency واحدة بـ399 دولارًا شهريًا (أو 299 دولارًا شهريًا عند الدفع السنوي). تشمل كلّ ما كان في Agency Pro: 25 مساحة عمل للعملاء، و15 مقعدًا للفريق مع صلاحيات حسب الدور، ولوحة تحكم بعلامة الوكالة، وتخصيص الشريط لكل عميل (الألوان والنصوص والموضع والشعار)، وإرسال الأحداث من الخادم إلى 10 منصّات، والجماهير (تفعيل بيانات الطرف الأول)، وإعدادًا يتولّاه فريقنا، ودعمًا مخصّصًا.
وحّدنا عرض الدفع السنوي على "وفّر حتى 25%" في كل الباقات، ومنها Agency. لا مزيد من حجب الميزات بين باقتين. ومع الدفع السنوي تنزل تكلفة Agency إلى أقلّ من 12 دولارًا لكل عميل شهريًا ضمن العملاء الـ25 المشمولين، وهو رقم مقنع حين تقارنه الوكالة ببديل "نبني منظومة الموافقة والأحداث والجماهير بأنفسنا".
العملية الجراحية في Stripe
لم يكن الدمج تعديلًا في الكود فحسب، بل تطلّب تعديلات فعلية داخل Stripe. كان لا بدّ من أرشفة أسعار Agency القديمة (249 دولارًا شهريًا و2,388 سنويًا) و Agency Pro (499 دولارًا شهريًا و4,788 سنويًا)، وإنشاء سعرين جديدين (399 دولارًا شهريًا و3,588 سنويًا) مع مصفوفة currency_options الكاملة بـ13 عملة. ولم يكن لأيّ من أسعار Agency القديمة شيء منها، فقد كانت بالدولار فقط.
كتبنا العملية كلّها في الملف scripts/stripe-agency-collapse.js بوضعين: --audit لفحص الحالة الراهنة دون أيّ تعديل، و--apply لتنفيذ التعديلات. وأثبت مبدأ "الفحص أولًا" قيمته فورًا: اصطدم التنفيذ بقيد في Stripe لم نحسب حسابه (لا يمكن أرشفة سعر ما زال معيّنًا default_price لمنتج)، وكان الفحص قد أخبرنا بالضبط أيّ المنتجات يجب تغيير سعرها الافتراضي أولًا.
الأثر الفعلي على البيئة الحيّة: أرشفة 4 أسعار، وإنشاء 2، وإيقاف منتج واحد (Agency Pro المستقل)، و0 عملاء متأثرين (لم يكن لدينا أيّ مشترك في agency_pro وقت الدمج، وتأكّدنا من ذلك قبل التنفيذ).
ما كنّا سنفعله بشكل مختلف
أمران نندم عليهما:
- أطلقنا باقتين دون أيّ دليل على وجود طلب على باقتين. جاء التقسيم من منطق "هكذا تفعل منصّات إدارة الموافقة الأخرى"، ومن حدس بأنّ الوكالات الأصغر تريد نقطة دخول أرخص. وتبيّن أنّ الاثنين خطأ بالنسبة إلى عميلنا تحديدًا: وكالات المنطقة التي تدير متاجر عملائها على سلة وزد. كان علينا أن نبدأ بباقة واحدة، ولا نقسّمها إلا حين يطلب ذلك عميل حقيقي.
- لم نضف
currency_optionsإلى أسعار Agency الأصلية. صدرت Agency و Agency Pro بالدولار فقط، فكانت الوكالة السعودية التي تتعامل بالريال في كل شيء آخر تدفع اشتراكنا بالدولار. احتكاك صغير، لكنّه حقيقي. أمّا السعر الجديد الموحّد فيدعم SAR و AED و KWD و QAR و BHD و OMR و EGP و JOD و MAD و EUR إلى جانب USD، مباشرةً عند الدفع.
المبدأ
كلّ باقة تسعير يجب أن تجيب عن جملة يقولها عميل حقيقي: "سأدفع كذا مقابل كذا". إن لم تستطع كتابة هذه الجملة وفي ذهنك عميل حقيقي بعينه، فالباقة لا ينبغي أن توجد بعد. ونطبّق هذا الاختبار على كل باقة أخرى قبل أن نضيف أيّ تقسيم.
ما الذي سيكشفه الفحص في موقعك؟
فحص مجاني دون تسجيل، والنتائج خلال 60 ثانية تقريبًا.