رُتبة CRM

واجهة إنفاق الإعلانات

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

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

قبل أن تبدأ

  • يجب أن تشمل الباقة واجهة API وعائد الحملات معًا. ومن دون عائد الحملات يرد المسار 403 مع Campaign returns are not in this plan.
  • استخدم مفتاحًا بصلاحية قراءة وكتابة أنشأه مالك أو مسؤول. والمفتاح الذي أنشأه عضو أو مشاهد يتلقى 403.
  • إن كان لمنشئ المفتاح دور مخصص يمنع عائد الحملات، يرد المسار 403 مع Campaign returns are not allowed for this role.
  • استخدم أسماء الحملات نفسها التي تحملها طلبات متجرك في وسوم الحملة، مثل قيمة utm_campaign، ليتطابق الإنفاق مع المبيعات.

إرسال الإنفاق

POST /ad-spend

للجسم حقل واحد هو rows، وهو قائمة من 1 إلى 1000 رقم يومي:

الحقل مطلوب القواعد
campaign نعم اسم الحملة، حتى 120 حرفًا
source لا مكان ظهور الإعلان، مثل google، حتى 120 حرفًا
spent_on نعم اليوم بصيغة YYYY-MM-DD، ليس في المستقبل ولا أقدم من 399 يومًا قبل اليوم
amount نعم تكلفة اليوم، نصًا مثل "120.50" أو رقمًا. غير سالب. والنص بخانتين عشريتين على الأكثر، أما الرقم فيُقرَّب إلى خانتين
currency نعم USD أو EUR أو GBP أو TRY أو SAR أو AED
curl -X POST https://rutbacrm.com/api/v1/ad-spend \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"rows": [
        {"campaign": "ramadan-sale", "source": "google", "spent_on": "2026-11-06", "amount": "120.50", "currency": "SAR"},
        {"campaign": "ramadan-sale", "source": "google", "spent_on": "2026-11-07", "amount": "30.00", "currency": "SAR"}
      ]}'

الرد 200 مع عددين:

{
  "data": {
    "saved": 2,
    "unchanged": 0
  }
}
العدد المعنى
saved الصفوف التي أضافت رقمًا جديدًا، أو استبدلت رقمًا سابقًا، أو حذفته. ويُحسب هنا أيضًا 0 ليوم لا رقم له، مع أنه لا يُحفظ شيء
unchanged الصفوف التي كان رقمها محفوظًا بالمبلغ نفسه

كيف تُطابق الصفوف

الصف هو نفسه رقم سابق حين تتطابق الحملة واليوم والعملة والمصدر جميعًا. وتُقارن أسماء الحملات دون اعتبار لحالة الأحرف أو المسافات المحيطة، فـRamadan-Sale وramadan-sale حملة واحدة. والصف دون مصدر لا يطابق إلا الأرقام السابقة التي لا مصدر لها.

ما ترسله النتيجة
يوم لا رقم له بعد يُضاف الرقم
اليوم نفسه بالمبلغ نفسه لا يتغير شيء، ويُحسب في unchanged
اليوم نفسه بمبلغ جديد يُستبدل الرقم القديم، ويُحسب في saved
اليوم نفسه بمبلغ 0 يُحذف الرقم القديم، ويُحسب في saved
يوم لا رقم له بعد، بمبلغ 0 لا يُحفظ شيء، ويُحسب في saved

الأرقام المستبدلة والمحذوفة تبقى قيودًا ملغاة ولا تُمحى.

الأخطاء

الطلب كله أو لا شيء. فإن كان أي صف غير صالح لا يُحفظ شيء، ويكون الرد 422:

مفتاح الخطأ السبب
rows rows مفقودة أو فارغة أو ليست قائمة، أو فيها أكثر من 1000 صف. والرسالة Send between 1 and 1000 rows.
rows.N.amount المبلغ في الصف N (العد من 0) سالب، أو نص فيه أكثر من خانتين عشريتين
campaign وsource وspent_on وamount وcurrency حقل مطلوب مفقود، أو نص أطول من المسموح، أو التاريخ في المستقبل أو أقدم من 399 يومًا، أو العملة غير مدعومة. وهذه المفاتيح لا تحمل رقم الصف

صحح الصف وأرسل الطلب كاملًا مرة أخرى.

سكربت يومي

الإعداد المعتاد سكربت يعمل مرة في اليوم في أداة السكربتات لدى منصة الإعلانات، ويرسل أمس والأيام الستة التي قبله، فتُلتقط التصحيحات المتأخرة من منصة الإعلانات. ولأن كل يوم يستبدل نفسه فإعادة الإرسال لا تكلف شيئًا. أبقِ كل تشغيل تحت 1000 صف، وإن كنت تتابع حملات كثيرة فوزّع الأيام على عدة طلبات.

معلومات مفيدة

  • يُحفظ الإنفاق يوميًا، ولا يوجد رقم بالساعة.
  • تظهر الأرقام التي ترسلها في تقرير عائد الحملات في التطبيق بجانب الإنفاق المكتوب يدويًا، ويستطيع المالكون والمسؤولون إزالتها من هناك.
  • لا يُحوَّل أي رقم بين العملات. أرسل الإنفاق بالعملة التي يبيع بها متجرك، وإلا ظهرت العملات منفصلة في التقرير.

آخر تحديث 2026-11-08