انتقل إلى المحتوى
ابدأ الآن

دليل FITLD

كل ما تحتاجه لإضافة FITLD إلى متجرك وقراءة النتائج. واجهتك مشكلة؟ راسل contact@fitld.com.

البدء

متجركطريقة التثبيتمن يصدر فاتورتك
Shopifyتطبيق FITLD على Shopify: دون برمجة، والطلبات تُربط تلقائياًShopify، ضمن فاتورة Shopify
Shopifyسكربت FITLD، ملصوقاً في قالبكFITLD، على fitld.com
أي موقع آخرسكربت FITLD، ملصوقاً قبل </body>FITLD، على fitld.com
  1. أنشئ حساب علامة تجارية على fitld.com/signup
  2. افتح التثبيت في لوحة التحكم وانسخ الشيفرة (تتضمّن معرّف الأداة)
  3. Shopify: المتجر الإلكتروني ← السمات ← ⋯ ← تعديل الشيفرة ← افتح layout/theme.liquid والصق قبل </body>. موقع مخصّص: الصق قبل </body> في صفحات المنتجات.
  4. عُد إلى لوحة التحكم، وفي التثبيت ← تحقّق من أنه يعمل الصق عنوان صفحة منتج للتأكد من أن الأداة ومعرّفها وجدول المقاسات في مكانها.
الشيفرة الموصى بها — تظهر في صفحات المنتجات فقط
<script src="https://fitld.com/fitld-widget.js"
  data-widget-id="wgt_YOUR_WIDGET_ID"
  data-mode="product">
</script>

التثبيت بتطبيق Shopify

1. ثبّت التطبيق

  1. في متجر تطبيقات Shopify افتح FITLD Size Finder واضغط تثبيت. يعرض Shopify ما يمكن لـ FITLD رؤيته: وافق عليه.
  2. اختر خطة، وستُضاف إلى فاتورة Shopify.
  3. لديك حساب FITLD؟ إن كان بريد متجرك في Shopify هو نفسه الذي تستخدمه على fitld.com، يطلب منك التطبيق تسجيل الدخول والربط. تبقى جداول المقاسات والنتائج في حساب واحد، وتستمر الخطة التي تدفعها على fitld.com.

2. اتبع الخطوات الثلاث في الصفحة الرئيسية

الصفحة الرئيسية لتطبيق FITLD أثناء الإعداد: الخطوة 1 مكتملة، والخطوة 2 مفتوحة بتعليماتها وزر «أضف جداول المقاسات»، والخطوة 3 في الانتظار.
الصفحة الرئيسية أثناء الإعداد. الخطوة المفتوحة هي التي عليك القيام بها الآن.
  1. فعّل زر «اعرف مقاسي». اضغط افتح محرّر القالب: FITLD مفعّل مسبقاً ضمن تضمينات التطبيقات. اضغط حفظ، ثم تم الحفظ في التطبيق.
  2. أضف جدول مقاسات لمنتجاتك. اضغط أضف جداول المقاسات، وحدّد منتجاتك، ثم اضغط أضف جدول مقاسات. اختر جدولاً قياسياً، أو استخدم استورد جدول مقاسات ليقرأ جدولك الحالي.
  3. جرّبه في متجرك. افتح منتجاً، واضغط اعرف مقاسي وأدخل بعض القياسات. ثم عُد إلى التطبيق واضغط تحقّق مجدداً.
صفحة «جداول المقاسات» في تطبيق FITLD: ثلاث إرشادات مرقّمة في الأعلى، ثم منتجات المتجر وحالة جدول كل منها.
جداول المقاسات: حدّد المنتجات ثم اضغط «أضف جدول مقاسات».

3. اطّلع على نتائجك

مراجعة خطوة أو إعادتها

التثبيت على Shopify بالسكربت

1. أضف الأداة إلى سمتك

  1. في إدارة Shopify افتح المتجر الإلكتروني ← السمات. وبجانب السمة الحالية اختر ⋯ ← تعديل الشيفرة.
  2. افتح layout/theme.liquid.
  3. الصق الشيفرة أدناه قبل وسم </body> مباشرة، واستبدل wgt_YOUR_WIDGET_ID بمعرّفك، ثم اضغط حفظ.
theme.liquid — قبل </body>
<script src="https://fitld.com/fitld-widget.js"
  data-widget-id="wgt_YOUR_WIDGET_ID"
  data-mode="product"
  async>
</script>

2. اربط منتجاتك

3. اربط الطلبات والاستردادات

  1. في لوحة تحكم FITLD افتح التثبيت ← اربط طلباتك. أدخل عنوان your-store.myshopify.com وانسخ عنوان الـ webhook.
  2. في إدارة Shopify افتح الإعدادات ← الإشعارات ← Webhooks واضغط إنشاء webhook. الحدث: دفع الطلب. الصيغة: JSON. الرابط: الذي نسخته. ثم احفظ.
  3. أنشئ webhook ثانياً بالحدث إنشاء استرداد، بصيغة JSON، وبالرابط نفسه.
  4. يعرض Shopify مفتاح توقيع تحت قائمة الـ webhooks («سيتم توقيع webhooks الخاصة بك بـ…»). انسخه والصقه في لوحة تحكم FITLD.
  5. اضغط إرسال إشعار تجريبي في Shopify، أو نفّذ طلباً تجريبياً. تُظهر لوحة التحكم وقت وصول آخر طلب.

4. تحقّق من صفحة منتج

تحقّق من أنه يعمل

  1. افتح التثبيت ← تحقّق من أنه يعمل والصق عنوان صفحة منتج منشورة (مثل https://your-store.com/products/classic-tee).
  2. يجلب FITLD الصفحة، ويتعرّف على منصتك، ويحاول مطابقتها مع منتج في كتالوجك.
  3. راجع الفحوصات أدناه، ويتحوّل كل منها إلى الأخضر عند نجاحه.
الفحصما يؤكّده
Widget script installedشيفرة FITLD موجودة في الصفحة.
Brand credentials matchمعرّف الأداة أو مفتاح API في الصفحة يعود إلى حسابك.
Product connected to a size chartالصفحة مرتبطة بمنتج في الكتالوج له قياسات.
Size chart readyلهذا المنتج مقاس واحد على الأقل بقيم.
Size buttons presentعُثر على محدّد مقاس يمكن لـ FITLD تمييزه (قدر الإمكان).

المتاجر المحمية بكلمة مرور

أوضاع الأداة

تلقائي في صفحات المنتجات (موصى به)

وسم السكربت لوضع المنتج
<script src="https://fitld.com/fitld-widget.js"
  data-widget-id="wgt_YOUR_WIDGET_ID"
  data-mode="product">
</script>

التثبيت عند محدّد

وسم السكربت المثبَّت
<script src="https://fitld.com/fitld-widget.js"
  data-widget-id="wgt_YOUR_WIDGET_ID"
  data-attach-to=".product-size-selector">
</script>

عدة منتجات

وسم السكربت
<script src="https://fitld.com/fitld-widget.js"
  data-widget-id="wgt_YOUR_WIDGET_ID">
</script>
أزرار منتجاتك
<button class="my-size-btn" data-pid="SKU001">Find My Size</button>
<button class="my-size-btn" data-pid="SKU002">Find My Size</button>
سكربت الإعداد
<script>
  document.querySelectorAll('.my-size-btn').forEach(function(btn) {
    btn.addEventListener('click', function() {
      FitAPI.setProduct(this.dataset.pid);
      FitAPI.open();
    });
  });
</script>

زر عائم (اختياري)

وسم سكربت الزر العائم
<script src="https://fitld.com/fitld-widget.js"
  data-widget-id="wgt_YOUR_WIDGET_ID"
  data-mode="fab">
</script>

الاختيار التلقائي للمقاس

محدّد المقاس المثبَّت
<script src="https://fitld.com/fitld-widget.js"
  data-widget-id="wgt_YOUR_WIDGET_ID"
  data-fitld-size-target="#size-picker">
</script>
السمةوظيفتها
data-fitld-size-targetمحدِّد CSS لاختيار المقاس؛ يُكتشف تلقائياً افتراضياً
data-fitld-autoselectاجعلها "false" لوضع النصح (دون اختيار تلقائي في الصفحة)
data-fitld-cart-attrsاجعلها "false" لعدم وسم سلة Shopify بالجلسة
data-hide-unconnectedمع data-mode="product" لا يظهر الزر إلا في المنتجات التي لها جدول مقاسات في FITLD. اجعلها "false" لإظهاره في كل صفحات المنتجات. الصفحات التي بلا جدول مقاسات مدرجة في Products بلوحة التحكم.

المنتجات والاستيراد الجماعي

نزّل القالب

املأه

العمودإلزاميملاحظات
Products · productNameنعمالاسم المعروض
Products · productIdنعمSKU فريد: يربط الورقتين
Products · sizesCountNoعدد مقاسات المنتج: يجهّز الرفع هذا العدد من أسطر المقاسات في المعاينة
Products · audienceنعمMen · Women · Unisex (قائمة منسدلة)
Products · ageGroupنعمAdult · Kids · Toddler · Baby (قائمة منسدلة)
Products · categoryنعمانظر ورقة Categories (قائمة منسدلة)
Products · unitNoوحدة الأطوال لهذا المنتج: cm أو in (الافتراضي cm)
Products · subcategory, fitType, stretchLevel, fabric, color, price, currencyNoتفصيل اختياري للمنتج
Size chart · productIdنعماختر من القائمة، أو اتركه فارغاً ليأخذ SKU السطر الذي فوقه
Size chart · sizeنعمأي اسم: M · 42 · 6-12M · 34/36
Size chart · chest, waist, footLength, …Noعمود لكل قياس؛ أرقام بوحدة المنتج. فئات الرضّع والأطفال تستخدم heightMin/Max وageMonthsMin/Max وweightMin/Max

الهوية البصرية

الخيار 1 — وسم السكربت (موصى به)

وسم السكربت بالهوية البصرية
<script src="https://fitld.com/fitld-widget.js"
  data-widget-id="wgt_YOUR_WIDGET_ID"
  data-brand-logo="https://your-site.com/logo.svg"
  data-brand-name="Your Brand"
  data-accent-color="#b08a52">
</script>
السمةوظيفتها
data-brand-logoيستبدل شعار FITLD بشعارك
data-brand-logo-lightشعار بديل يظهر في المظهر الفاتح، موصى به للشعارات البيضاء أو الفاتحة
data-brand-nameاسم علامتك التجارية، يُستخدم نصاً بديلاً للشعار
data-accent-colorتأخذ الأزرار والعناصر المميّزة لونك
data-accent-hoverلون التمرير على عناصر التمييز

توصيات الشعار

الخيار 2 — JavaScript

الهوية البصرية عبر JavaScript
<script>
  FitAPI.init({
    brandLogo: "https://your-site.com/logo.svg",
    brandAccent: "#b08a52",
    brandName: "Your Brand"
  });
</script>

واجهة JavaScript

FitAPI.bind(buttonElement, productId)

يربط زراً بمنتج. يضيف معالج النقر تلقائياً.

FitAPI.setProduct(productId)

يحدّد معرّف المنتج النشط قبل فتح الأداة.

FitAPI.open()

يفتح نافذة الأداة بالمنتج المحدّد.

FitAPI.attachButton(targetElement)

ينشئ زر «اعثر على مقاسي» ويُدرجه بعد العنصر الهدف.

FitAPI.render(containerElement)

يعرض الزر داخل عنصر حاوية.

FitAPI.setTheme('light' | 'dark')

يفرض المظهر الفاتح أو الداكن لنافذة الأداة.

FitAPI.init({ brandLogo, brandAccent, brandName })

يضبط خيارات الهوية البصرية. استدعِه بعد تحميل السكربت.

FitAPI.selectSize(size)

يطبّق مقاساً على محدّد صفحتك. يُرجع "selected" | "out_of_stock" | "not_found" | "opted_out".

FitAPI.setSizeTarget(cssSelector)

يوجّه الاختيار التلقائي إلى محدّدك، أثناء التشغيل.

document "fitld:size-selected"

حدث CustomEvent يُطلق بعد تطبيق مقاس على الصفحة؛ detail: { size, source }.

واجهة REST

Test mode

POST /v1/widget/recommend

الطلب (زائر)
{
  "widgetId": "wgt_YOUR_WIDGET_ID",
  "productId": "SKU001",
  "measurements": {
    "unit": "cm",
    "chest": 96,
    "waist": 80,
    "hips": 98
  }
}
الاستجابة
{
  "recommended_size": "M",
  "confidence": 0.87,
  "fit_quality": "great",
  "measurement_gap_cm": 1.2,
  "category": "Tops",
  "guest": true
}

POST /v1/recommend-size/guest

الطلب
POST https://api.fitld.com/v1/recommend-size/guest
Headers: x-api-key: fit_sk_YOUR_API_KEY

{
  "productId": "SKU001",
  "measurements": { "chest": 96, "waist": 80 }
}

POST /v1/products/resolve

الطلب
{
  "widgetId": "wgt_YOUR_WIDGET_ID",
  "productId": "SKU001"
}
الاستجابة
{
  "productId": "SKU001",
  "productName": "Classic Oxford",
  "category": "Tops"
}

Errors and request IDs

Error response (HTTP 401)
{
  "error": "Authentication required. Provide x-api-key or widgetId.",
  "code": "authentication_required",
  "requestId": "req_8fK2xQm1Lw0aZt7c"
}

الطلبات والاستردادات

سمة السلةخاصية السطرالقيمة
fitld_sid_fitld_sidمعرّف الجلسة
fitld_size_fitld_sizeالمقاس المؤكَّد
fitld_space_fitld_spaceفئة المقاس (مثل بالغ / طفل)
fitld_variant_fitld_variantالنوع، إن كان معروفاً

كيف تُطابَق الطلبات

الاستردادات

Webhooks

EventSent when
order.attributedA Shopify order includes items bought after using FITLD: the size bought, FITLD’s size and whether they matched.
refund.createdItems bought after using FITLD were refunded.
return.recordedSuch an item was returned, with the reason (<code>size_too_small</code>, <code>size_too_large</code>, …).
fit_feedback.receivedA shopper answered “How did it fit?”: <code>too_small</code>, <code>right</code> or <code>too_large</code>.
product.unmatchedA product page without a FITLD size chart was seen for the first time.
usage.threshold_reachedRecommendations this month reached 80% or 100% of your plan.
pingYou pressed <strong>Send test event</strong>.
Example: order.attributed
{
  "id": "evt_Q2xmN0VtZ3pDbFh0",
  "type": "order.attributed",
  "created": "2026-11-10T14:02:11.402Z",
  "livemode": true,
  "api_version": "v1",
  "data": {
    "order_id": "5890112340",
    "order_name": "#1042",
    "currency": "EUR",
    "paid_at": "2026-11-10T14:01:58.000Z",
    "lines": [{
      "product_id": "OXFORD-SHIRT",
      "sku": "OXF-BLU-M",
      "product_name": "Classic Oxford",
      "size": "M",
      "recommended_size": "M",
      "size_matched": true,
      "quantity": 1
    }]
  }
}

Check the signature

Node.js (Express)
const crypto = require("crypto");

// Use the raw request body, exactly as received (before JSON parsing).
function verifyFitld(rawBody, header, secret) {
  const parts = Object.fromEntries(header.split(",").map((p) => p.split("=")));
  const age = Math.abs(Date.now() / 1000 - Number(parts.t));
  if (!parts.t || !parts.v1 || age > 300) return false; // older than 5 minutes
  const expected = crypto.createHmac("sha256", secret)
    .update(`${parts.t}.${rawBody}`).digest("hex");
  return expected.length === parts.v1.length &&
    crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));
}

app.post("/fitld/webhooks", express.raw({ type: "application/json" }), (req, res) => {
  if (!verifyFitld(req.body.toString("utf8"), req.get("FITLD-Signature") || "", process.env.FITLD_WEBHOOK_SECRET)) {
    return res.status(400).end();
  }
  const event = JSON.parse(req.body);
  // Answer quickly, then do the work: FITLD waits 10 seconds at most.
  res.status(200).end();
  handle(event); // e.g. event.type === "order.attributed"
});

Retries

الخطط والحدود

الخطةالتوصيات / شهرالسعر
Free1,000$0
Starter5,000$19/mo
Growth15,000$79/mo
Pro100,000$249/mo
Enterpriseيُحدَّد معكمخصّص

رموز الأخطاء

HTTPcodeCommon cause
400invalid_request, invalid_jsonA required field is missing or malformed, or the body isn’t valid JSON.
401authentication_requiredNo API key, an invalid one, or an expired shopper sign-in.
403api_key_browser_originA secret API key was sent from a website. Use the widget ID in storefront code.
404not_found, unknown_endpointUnknown widget ID or product, or no such endpoint in /v1.
409conflictA product with this SKU already exists.
422invalid_requestRequired measurements missing (chest, waist, etc.).
429rate_limited, quota_exceededToo many requests, or the plan limit is reached. Wait for the Retry-After header.
5xxserver_errorA problem on our side. Retry with backoff, and quote the request ID if it continues.

حلّ المشكلات

  1. الأداة لا تظهر: استخدم التثبيت ← تحقّق من أنه يعمل؛ فهو يفحص السكربت ومعرّف الأداة وجدول المقاسات في صفحتك المنشورة. ويمكنك أيضاً فتح وحدة تحكم المتصفح (F12) والتأكد من أن رابط السكربت يُحمَّل دون أخطاء.
  2. «هذا المنتج غير مرتبط بجدول مقاسات FITLD بعد»: لم يتمكّن FITLD من ربط الصفحة بمنتج. مع تطبيق Shopify، افتح Size charts وتأكّد أن للمنتج جدولاً. لا يُربط المنتج إلا إذا كانت مقاساته موجودة في الجدول، فإن ظهر كمتجاوَز، اختر جدولاً يضمّ مقاساته. ومع السطر البرمجي، يجب أن يكون معرّف المنتج في FITLD هو handle صفحته (آخر عنوانها) أو رمز SKU أو عنوان الصفحة.
  3. «لا يناسب أيّ مقاس في هذا المنتج»: مقاسات المتسوّق خارج كل مقاسات الجدول. يقول FITLD ذلك بدل التوصية بأقرب مقاس. وإن تكرّر الأمر، أضف المقاسات الناقصة إلى الجدول.
  4. مقاس خاطئ موصى به: تأكد من اكتمال جداول المقاسات في المنتجات. القياسات الناقصة تقلّل الدقة.
  5. Your site sets a Content-Security-Policy: allow FITLD's two addresses: script-src https://fitld.com, connect-src https://api.fitld.com https://fitld.com and font-src https://fitld.com. The widget loads its size window from fitld.com and asks api.fitld.com for sizes; it calls nothing else.
  6. متجر محمي بكلمة مرور: يصل المتسوّقون إلى صفحة كلمة المرور بدل منتجك، فلا يمكن للأداة التحميل لهم. أزل كلمة المرور لنشر المتجر؛ ويظل التحقق قادراً على قراءة الصفحة إن أعطيته كلمة المرور.
  7. صفحة مكافحة الروبوتات: إن أبلغ التحقق عن فحص للروبوتات، فالمتجر متاح للزوّار الحقيقيين لكنه يمنع الفحوص الآلية. تحقّق من الأداة بصرياً في المتصفح.
  8. «Secret API keys can't be used from a website»: استخدمت data-api-key أو أرسلت x-api-key من متجر. استخدم data-widget-id بدلاً منه، وأعد إنشاء المفتاح من الإعدادات إن كان قد نُشر.
  9. تواصل مع الدعم: ما زلت عالقاً؟ راسل contact@fitld.com.