إنتقل إلى المحتوى الرئيسي

الإحصائيات

النقطة GET /v1/analytics تُرجع الأرقام التي تعرضها الصفحة الرئيسية للوحة التحكم لفترة معيّنة: عشرة مؤشرات أداء (KPI)، لكل منها قيمته في فترة مقارنة ونسبة التغيّر، وثماني سلاسل للرسوم البيانية. استعملها لتقارير عملائك أو للتصدير إلى أداة BI بدل إعادة حساب الأرقام من GET /v1/orders. الواجهة البرمجية ولوحة التحكم تتقاسمان التعريفات نفسها والذاكرة المؤقتة نفسها، فتعرضان الأرقام نفسها للفترة نفسها. معنى كل رقم بالنسبة للتاجر مشروح في صفحة الإحصائيات والتحليلات من توثيق التاجر.

تحسب الواجهة البرمجية دائماً كل الزيارات: صفحات المتجر وصفحات الهبوط معاً. فلتر الزيارات في لوحة التحكم (صفحات الهبوط وحدها، أو المتجر وحده) لا مقابل له هنا.

قبل أن تبدأ​

  • يحتاج المفتاح صلاحية analytics:read. المفاتيح المُنشأة من لوحة التحكم (الإعدادات ← واجهة API، /dashboard/api) تحملها منذ الإصدار v1.7. الصلاحيات تُجمَّد لحظة إنشاء المفتاح، فالمفتاح الأقدم يُرجع 403 forbidden مع الرسالة Missing scope: analytics:read: أنشئ مفتاحاً جديداً من لوحة التحكم. والمفتاح المُنشأ عبر POST /v1/keys لا يحصل إلا على الصلاحيات التي يملكها المفتاح الذي أنشأه.
  • المفاتيح الشخصية تحتاج متجراً على خطة Enterprise سارية. رمز التطبيق المثبَّت لا يرتبط بخطة Enterprise، لكنه يحتاج analytics:read ضمن الصلاحيات التي وافق عليها التاجر. انظر المقدمة.
  • الإيرادات والربح ومتوسط قيمة الطلب، وقيم revenue داخل الرسوم البيانية، لا تُرسل إلا إذا كان المفتاح تابعاً لحساب مالك المتجر. وإلا تغيب هذه الحقول من الإجابة: فهي لا تُضبط على 0 ولا على null.
النطاقالوصف
analytics:readقراءة إحصائيات المتجر ومؤشرات الأداء. مُضمَّنة في مفاتيح التاجر المُنشأة ابتداءً من v1.7؛ المفتاح الأقدم يحتاج مفتاحاً جديداً.

GET /v1/analytics​

التقرير الخاص بفترة واحدة.

المصادقة: مفتاح منصة بصلاحية analytics:read.

معاملات الاستعلام​

المعاملالنوعالافتراضيملاحظات
rangestringthis_monthtoday أو yesterday أو 7d أو 30d أو this_month أو last_month أو this_year أو custom. أي قيمة أخرى تُرجع 400 bad_request.
fromYYYY-MM-DDلا شيءاليوم الأول. إلزامي مع range=custom، ويُتجاهل في غير ذلك.
toYYYY-MM-DDلا شيءاليوم الأخير. إلزامي مع range=custom، ويُتجاهل في غير ذلك. لا يكون قبل from أبداً، ولا بعده بأكثر من 365 يوماً.

الفترات​

rangeالفترةتُقارَن بـgroup_by
todayاليومأمسhour
yesterdayأمساليوم الذي قبلهhour
7dاليوم و6 أيام قبلهالأيام الـ7 التي قبلهاday
30dاليوم و29 يوماً قبلهالأيام الـ30 التي قبلهاday
this_monthمن اليوم 1 إلى آخر يوم في الشهر الجاريالشهر السابق كاملاًday
last_monthالشهر السابق كاملاًالشهر الذي قبلهday
this_yearمن 1 جانفي إلى 31 ديسمبر من السنة الجاريةالسنة السابقة كاملةmonth
customمن from إلى to، واليومان محسوبانالعدد نفسه من الأيام قبل from مباشرةhour أو day أو month

في custom تكون قيمة group_by هي hour إذا كان to هو from نفسه أو اليوم الذي يليه، وday إذا كان to بعد from بـ90 يوماً على الأكثر، وmonth فيما زاد على ذلك. الفترتان this_month وthis_year تمتدان إلى نهاية الشهر أو السنة، فهما تقارنان الأيام المنقضية حتى الآن بشهر سابق كامل أو بسنة سابقة كاملة.

يُحفظ التقرير في الذاكرة المؤقتة 120 ثانية لكل متجر وفترة، ولوحة التحكم تقرأ من الذاكرة المؤقتة نفسها. قد يُرجع النداء أرقاماً عمرها دقيقتان على الأكثر، والنداءات خلال تلك المدة تحصل على الأرقام نفسها.

الطلب​

curl 'https://api.dzbuild.app/v1/analytics?range=7d' \
-H "Authorization: Bearer $DZ_KEY"

فترة مخصصة:

curl 'https://api.dzbuild.app/v1/analytics?range=custom&from=2026-09-01&to=2026-09-30' \
-H "Authorization: Bearer $DZ_KEY"

الاستجابة 200​

الإجابة على range=7d يوم 6 أكتوبر 2026، لمفتاح أنشأه مالك المتجر. السلاسل الزمنية والقوائم مقطوعة بعد أول عناصرها.

{
"data": {
"period": {
"from": "2026-09-30 00:00:00",
"to": "2026-10-06 23:59:59",
"prev_from": "2026-09-23 00:00:00",
"prev_to": "2026-09-29 23:59:59",
"label": "7d",
"group_by": "day"
},
"kpis": {
"total_orders": { "value": 48, "change": 20, "previous": 40 },
"delivered_orders": { "value": 31, "change": 7, "previous": 29 },
"cancelled_orders": { "value": 6, "change": -25, "previous": 8 },
"total_revenue": { "value": 186000, "change": 8, "previous": 172000 },
"total_profit": { "value": 61500, "change": 6, "previous": 58000 },
"avg_order_value": { "value": 4350, "change": -1, "previous": 4400 },
"total_visitors": { "value": 1520, "change": 17, "previous": 1300 },
"page_views": { "value": 4810, "change": 17, "previous": 4100 },
"conversion_rate": { "value": 3.2, "change": 3, "previous": 3.1 },
"new_customers": { "value": 41, "change": 17, "previous": 35 }
},
"charts": {
"revenue_over_time": [
{ "label": "09/30", "orders": 7, "revenue": 24500 },
{ "label": "10/01", "orders": 5, "revenue": 18000 }
],
"orders_by_hour": [
{ "hour": "00:00", "orders": 0, "impressions": 35 },
{ "hour": "01:00", "orders": 1, "impressions": 22 }
],
"orders_by_status": {
"pending": 5,
"confirmed": 4,
"processing": 2,
"shipped": 9,
"delivered": 20,
"cancelled": 6,
"returned": 2
},
"top_products": [
{
"id": 12,
"name": "Classic watch",
"image": "https://cdn.dzbuild.app/uploads/products/123/123_1700000000_example.webp",
"qty_sold": 14,
"revenue": 49000,
"views": 380
}
],
"visitors_over_time": [
{ "label": "09/30", "page_views": 690, "unique_visitors": 215, "orders": 7 },
{ "label": "10/01", "page_views": 702, "unique_visitors": 230, "orders": 5 }
],
"devices": {
"desktop": { "count": 510, "percent": 11 },
"mobile": { "count": 4180, "percent": 87 },
"tablet": { "count": 120, "percent": 2 }
},
"traffic_sources": [
{ "source": "facebook", "count": 2900, "percent": 60 },
{ "source": "direct", "count": 1210, "percent": 25 },
{ "source": "tiktok", "count": 700, "percent": 15 }
],
"top_wilayas": [
{ "wilaya": "الجزائر", "orders": 9, "revenue": 41000 },
{ "wilaya": "وهران", "orders": 6, "revenue": 27500 }
]
}
}
}

الفترة​

الحقلالمعنى
from، toبداية الفترة ونهايتها، بصيغة YYYY-MM-DD HH:MM:SS وبتوقيت الجزائر.
prev_from، prev_toبداية فترة المقارنة ونهايتها.
labelقيمة range التي طلبتها.
group_byحجم الوحدة الزمنية في revenue_over_time وvisitors_over_time: hour أو day أو month.

مؤشرات الأداء​

لكل مؤشر ثلاثة أرقام: value للفترة، وprevious لفترة المقارنة، وchange وهي نسبة التغيّر المئوية مقرَّبة إلى عدد صحيح. إذا كانت previous تساوي 0 أو أقل، تكون change مساوية لـ100 إذا كانت value أكبر من 0، وتساوي 0 في غير ذلك. المبالغ مقرَّبة إلى أعداد صحيحة.

المؤشرما يحسبه
total_ordersالطلبات المُنشأة في الفترة، أياً كانت حالتها.
delivered_ordersالطلبات المُسلَّمة في الفترة، محسوبة في يوم تسليمها.
cancelled_ordersالطلبات المُنشأة في الفترة والملغاة الآن.
total_revenueللمالك فقط. المجموع الفرعي ناقص الخصم للطلبات المُسلَّمة في الفترة. الشحن ورسوم الدفع غير محسوبة.
total_profitللمالك فقط. total_revenue ناقص الكمية × سعر التكلفة لعناصر تلك الطلبات. المنتج الذي لا سعر تكلفة له تُحسب تكلفته صفراً.
avg_order_valueللمالك فقط. متوسط إجمالي الطلب للطلبات المُنشأة في الفترة، دون الطلبات الملغاة والمرتجعة.
total_visitorsالزوار الفريدون في الفترة، صفحات المتجر وصفحات الهبوط معاً.
page_viewsمشاهدات الصفحات في الفترة، صفحات المتجر وصفحات الهبوط معاً.
conversion_ratetotal_orders ÷ total_visitors × 100، برقم واحد بعد الفاصلة. 0 إذا لم يكن هناك زوار.
new_customersسجلات الزبائن المُنشأة في الفترة.

هذه المؤشرات تأتي من مجموعات طلبات مختلفة، فلا تتطابق حسابياً: total_revenue ÷ total_orders لا يساوي avg_order_value.

الرسوم البيانية​

الرسمالمحتوى
revenue_over_timeعنصر لكل وحدة زمنية: label، وorders المُنشأة في تلك الوحدة، وللمالك فقط revenue، أي مجموع إجماليات تلك الطلبات التي حالتها الآن مُسلَّمة. وهو ليس total_revenue الذي يُحسب بيوم التسليم ولا يدخل فيه الشحن.
orders_by_hour24 عنصراً دائماً، من 00:00 إلى 23:00: الطلبات المُنشأة ومشاهدات الصفحات (impressions) في تلك الساعة من اليوم، على طول الفترة كلها.
orders_by_statusالطلبات المُنشأة في الفترة حسب حالتها الحالية: pending وconfirmed وprocessing وshipped وdelivered وcancelled وreturned.
top_productsحتى 10 منتجات حسب الكمية المباعة في الطلبات المُنشأة في الفترة، دون الطلبات الملغاة والمرتجعة. لكل منتج id وname وimage (رابط الصورة الرئيسية أو null) وqty_sold وviews (الزوار الفريدون على المنتج في الفترة)، وللمالك فقط revenue (الكمية × السعر المسجَّل في الطلب).
visitors_over_timeعنصر لكل وحدة زمنية: label وpage_views وunique_visitors وorders. الزائر الذي يعود في يوم آخر يُحسب في الوحدتين، لذا قد يتجاوز مجموع قيم unique_visitors قيمة total_visitors.
devicesمشاهدات الصفحات حسب الجهاز: المفاتيح desktop وmobile وtablet، لكل منها count وpercent. الجهاز الذي لا مشاهدات له لا مفتاح له، ويكون الحقل مصفوفة فارغة [] إذا لم تكن في الفترة أي زيارة.
traffic_sourcesحتى 6 مصادر حسب مشاهدات الصفحات، الأكثر أولاً، لكل منها source وcount وpercent. وقيمة percent هي الحصة بين المصادر المذكورة فقط.
top_wilayasحتى 10 ولايات حسب عدد الطلبات المُنشأة في الفترة، بكل الحالات: wilaya (الاسم بالعربية، وغير محدد للطلبات التي لا ولاية لها) وorders، وللمالك فقط revenue، أي مجموع إجماليات تلك الطلبات أياً كانت حالتها.

تتبع التسميات قيمة group_by: من 00:00 إلى 23:00 في hour (24 عنصراً؛ وفترة custom من يومين تجمع اليومين في الساعات نفسها)، وMM/DD في day، واسم الشهر بالإنجليزية مع السنة في month، مثل Sep 2026. الأيام التي بعد اليوم والأشهر التي بعد الشهر الجاري لا تظهر.

تسجّل المنصة source بإحدى القيم direct أو facebook أو instagram أو tiktok أو google أو youtube أو twitter أو snapchat أو telegram أو other. الزيارة التي يحمل رابطها utm_source تُصنَّف حسب هذا الوسم (fb تُحسب facebook، وig تُحسب instagram، وx تُحسب twitter، وأي وسم خارج القائمة يُحسب other)؛ والزيارة بدونه تُصنَّف حسب الموقع الذي جاءت منه.

الأخطاء​

HTTPالرمزالسبب
400bad_requestrange ليست إحدى القيم الثماني (Invalid range. Allowed: ...)، أو فترة custom ينقصها from أو to أو ليسا بصيغة YYYY-MM-DD، أو يكون فيها to قبل from أو بعده بأكثر من 365 يوماً (Invalid date range ...).
401unauthorizedمفتاح خاطئ أو مفقود.
402quota_exceededاستُنفدت حصة الطلبات الشهرية للمتجر. راجع حدود المعدل.
403forbiddenMissing scope: analytics:read، أو مفتاح شخصي متجره ليس على خطة Enterprise سارية (API access requires an active Enterprise plan).
429rate_limitedتجاوز حد الطلبات في الدقيقة للمتجر، وهو مشترك بين كل مفاتيحه، أو الحد الخاص بكل تثبيت لرمز التطبيق المثبَّت. انتظر مدة Retry-After. راجع حدود المعدل.

حدود معروفة​

  • نهايات الأشهر. إذا كان رقم اليوم الحالي غير موجود في الشهر السابق، كما في 31 أكتوبر، فإن range=last_month تُرجع الشهر الجاري، وrange=this_month تُقارَن بالشهر الجاري نفسه. وتُقارَن last_month أيضاً بنفسها إذا كان اليوم غير موجود قبل شهرين، كما في 30 أفريل. في تلك الأيام، اطلب التواريخ التي تحتاجها عبر range=custom.
هذه الصفحة لأدوات الذكاء الاصطناعيعرض بصيغة Markdownفتح في ChatGPTفتح في Claude