پرش به محتوا
مستندات
EN
ورود به پنل
شروع
  • نقشهٔ مستندات
  • راه‌اندازی سریع
  • مفهوم‌ها
جمع‌آوری داده
  • تعریف رویداد
  • فرهنگ‌نامهٔ رویدادها
  • گذاشتن رویداد
  • ادغام هویت
  • SDK وب
  • SDK اندروید
  • ثبت دستگاه
  • سرور به سرور
  • کاتالوگ محصولات
  • وب‌هوک
مخاطب و پیام‌رسانی
  • سگمنت
  • سناریو
  • پیام تراکنشی
  • رضایت و سقف
  • پیام درون‌برنامه‌ای
تحلیل و خروجی
  • گزارش و خروجی
مرجع توسعه‌دهنده
  • مرجع API
    • نقاط ورود داده
    • API مدیریتی
  • کدهای خطا
  • سقف‌ها
  • OpenAPI
ابزارهای توسعه
  • سرور MCP
  • کار با عامل
حریم خصوصی و تغییرات
  • داده‌های شخصی
  • نسخه و تغییرها

کاتالوگ محصولات: پر کردنش و نگه داشتنش

فید دوره‌ای، بارگذاری فایل و یادگیری از سفارش‌ها. سه قالب فید، واحد قیمت، و شناسه‌ای که اگر با رویدادها یکی نباشد هیچ پیشنهادی ساخته نمی‌شود.

کاتالوگ، فهرست محصولات شماست همان‌طور که سگمنتیک می‌بیندشان: شناسه، نام، قیمت، تصویر، لینک و موجودی. تا وقتی این فهرست خالی باشد، بلوک «پیشنهاد محصول» در ایمیل‌ها هیچ چیزی نشان نمی‌دهد و هیچ خطایی هم نمی‌دهد؛ فقط یک قسمت خالی. این صفحه می‌گوید چطور پرش کنید و کدام تصمیم‌ها بی‌سروصدا خرابش می‌کنند.

#کاتالوگ به چه کار می‌آید

CATALOGUE SOURCES
Product feedScheduled sync
CSV fileManual import
Commerce eventsFill missing items
SEGMENTICProduct catalogueMerge richer sources without downgrading records
PERSONALIZATION
RecommendationsRelevant products
Content blocksName, image and price
Stock triggersAvailability changes
تبدیل فید محصول، فایل و رویداد فروشگاه به پیشنهاد و محتوای اختصاصی

به سه چیز، و هر سه فقط با کاتالوگ کار می‌کنند:

  • بلوک پیشنهاد محصول در ایمیل، که چهار محصول را در یک شبکهٔ دو در دو می‌کشد.
  • سناریوی سبد رهاشده، که باید بداند در سبد چه بود تا بتواند نشانش بدهد.
  • پیشنهاد «مشابه» و «دیگران هم خریدند»، که روی ماتریس هم‌خریدی سوارند و آن ماتریس هم فقط محصولاتی را می‌شناسد که در کاتالوگ باشند.

نکتهٔ آخر مهم‌تر از آن است که به نظر می‌رسد: تاریخچهٔ رفتار از رویدادها می‌آید، ولی هر شناسه‌ای که در کاتالوگ نباشد از فهرست پیشنهادها حذف می‌شود. یعنی حسابی با میلیون‌ها رویداد product_viewed و کاتالوگ خالی، صفر پیشنهاد تولید می‌کند.

#شناسه‌ای که باید یکی باشد

این مهم‌ترین جملهٔ این صفحه است.

شناسهٔ محصول در کاتالوگ باید بایت‌به‌بایت همان چیزی باشد که رویدادهایتان در product_id می‌فرستند.

اگر سایت SKU-1024 می‌فرستد و فید 1024 می‌دهد، هر دو طرف درست به نظر می‌رسند: کاتالوگ پر است، رویدادها می‌آیند، هیچ خطایی در هیچ لاگی نیست، و هیچ پیشنهادی هرگز ساخته نمی‌شود. این تنها اشتباهی است در کل این صفحه که هیچ نشانه‌ای از خودش نشان نمی‌دهد.

پیش از پر کردن کاتالوگ، یک بار رویدادهایتان را در صفحهٔ «داده» باز کنید و ببینید product_id واقعا چه شکلی است. بعد فید را با همان شکل بسازید.

#سه راه پر کردن

راهبرای چه کسیچند وقت یک بار
فید دوره‌ایفروشگاهی که آدرس فید دارد یا می‌تواند بسازدهر شش ساعت، خودکار
بارگذاری فایل در پنلکاتالوگ کوچک یا ثابت، یا شروع سریعدستی
وب‌هوک‌های فروشگاههر حسابی که شاپیفای، ووکامرس یا دیجی‌کالا وصل کردهبا هر سفارش

این سه با هم تداخل ندارند و می‌توانید هر سه را داشته باشید. ترتیب اولویتشان در بخش وقتی چند منبع دارید توضیح داده شده.

#فید دوره‌ای

در پنل، «کاتالوگ» و بعد «فید محصولات». آدرس فید و قالبش را بدهید و فعالش کنید.

از آن به بعد هر شش ساعت خوانده می‌شود. نتیجهٔ آخرین اجرا بالای همان صفحه می‌نشیند: چند محصول خوانده شد، کی، و اگر شکست خورد چرا. اگر بیش از دو روز هیچ اجرای موفقی نداشته باشد، صفحهٔ کاتالوگ هشدار می‌دهد، چون فیدی که بی‌صدا از کار افتاده همان چیزی است که قیمت فصل قبل را در کمپین بعدی می‌نشاند.

سه محدودیت که خوب است بدانید: هر بار حداکثر دو دقیقه فرصت دارد، حداکثر ۶۴ مگابایت خوانده می‌شود، و حداکثر دویست هزار محصول از یک فایل برداشته می‌شود.

آدرس فید باید عمومی باشد. آدرسی که به شبکهٔ داخلی، به localhost یا به رنج‌های خصوصی برسد رد می‌شود، و ریدایرکت به چنین آدرسی هم رد می‌شود. این یک محدودیت عمدی است، نه یک نقص: سروری که آدرس دلخواه شما را واکشی می‌کند، بدون این بررسی یک ابزار حمله به شبکهٔ داخلی ماست.

قالب هرگز حدس زده نمی‌شود. هرچه در فرم انتخاب کنید همان خوانده می‌شود، چون حدسی که یک بار اشتباه دربیاید یک کاتالوگ بی‌معنی را روی کاتالوگ سالم می‌نویسد، و دقیقا وقتی اشتباه درمی‌آید که پلتفرم شما چیزی را عوض کرده و کسی حواسش نیست.

#قالب CSV

سطر اول باید نام ستون‌ها باشد. این نام‌ها شناخته می‌شوند و بقیه نادیده گرفته می‌شوند:

فیلدنام‌های پذیرفته‌شدهلازم
شناسهsku, id, product_id, codeبله
نامtitle, name, product_nameبله
قیمتprice, price_rial, amountبرای دیده شدن، بله
قیمت پیش از تخفیفcompare_at_price, old_price, list_priceنه
دستهcategory, product_type, categoriesنه
برندbrand, manufacturer, vendorنه
تصویرimage, image_url, image_linkنه
آدرس صفحهurl, link, product_url, permalinkنه
موجودیin_stock, stock, availability, quantityنه
توضیحdescription, descنه

یک سطر خراب کل فایل را رد نمی‌کند: شمرده می‌شود و بقیه وارد می‌شوند. اگر ستون شناسه یا ستون نام اصلا پیدا نشود، آن‌وقت کل فایل رد می‌شود، چون فایلی بدون این دو، فایل اشتباهی است نه فروشگاه خالی.

#قالب JSON

یا یک آرایه، یا یک شیء با کلید products:

JSON
{
  "products": [
    {
      "sku": "SHOE-1024",
      "title": "کفش ورزشی مدل رانر",
      "price_rial": 24000000,
      "compare_at_rial": 30000000,
      "category": "کفش",
      "brand": "نایک",
      "image_url": "https://shop.example.ir/img/1024.jpg",
      "url": "https://shop.example.ir/p/1024",
      "in_stock": true
    }
  ]
}

name به جای title، id یا product_id به جای sku، image به جای image_url و link به جای url هم پذیرفته می‌شوند.

اگر in_stock را ننویسید، محصول موجود حساب می‌شود. این عمدی است: فروشگاهی که فقط چیزهای فروختنی‌اش را export می‌کند حالت رایج است، و خواندن نبودن این فیلد به معنی ناموجود یعنی وارد کردن کاتالوگی که هیچ‌چیزش قابل پیشنهاد نیست.

#قالب XML، یعنی گوگل مرچنت

اگر فروشگاهتان برای سایت‌های مقایسهٔ قیمت فید می‌دهد، همان فید احتمالا همین است و لازم نیست چیز تازه‌ای بسازید.

XML
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
  <channel>
    <item>
      <g:id>SHOE-1024</g:id>
      <g:title>کفش ورزشی مدل رانر</g:title>
      <g:price>24000000 IRR</g:price>
      <g:sale_price>19000000 IRR</g:sale_price>
      <g:availability>in stock</g:availability>
      <g:image_link>https://shop.example.ir/img/1024.jpg</g:image_link>
      <g:link>https://shop.example.ir/p/1024</g:link>
      <g:brand>نایک</g:brand>
      <g:product_type>کفش</g:product_type>
    </item>
  </channel>
</rss>

وقتی sale_price باشد و از price کمتر باشد، همان قیمت فروش است و price به خط خوردهٔ «قیمت قبل» تبدیل می‌شود. availability مقدارهای خود استاندارد را می‌گیرد، و out of stock تنها مقداری است که محصول را ناموجود می‌کند.

XML تنها قالبی است که واحد پول را خودش حمل می‌کند، و همین باعث می‌شود کم‌ریسک‌ترین قالب باشد.

#قیمت و واحدش

قیمت در دیتابیس ریال ذخیره می‌شود و در پیام‌ها به تومان نمایش داده می‌شود.

این تنها جایی است که یک اشتباه ساکت، عددی غلط را به دست مشتری شما می‌رساند، پس قاعده‌اش سخت‌گیرانه است:

قالبچطور خوانده می‌شود
CSV و JSONعدد را ریال فرض می‌کند. اگر فایل شما تومان است، در خود فایل ضربدر ده کنید.
XML با IRRریال
XML با IRT یا TOMANضربدر ده
XML با هر واحد دیگریبدون قیمت ذخیره می‌شود

سطر آخر عمدی است. محصولی که قیمت ندارد در پنل دیده می‌شود و در هیچ پیامی نمی‌آید، یعنی یک جای خالی که کسی پیدایش می‌کند. قیمتی که ده برابر غلط باشد عددی است که کسی به آن شک نمی‌کند و روی آن سفارش می‌دهد.

جداکننده‌ها اهمیتی ندارند: ۲۴۰۰۰۰۰۰، 24,000,000 و 24.000.000 هر سه یک عدد خوانده می‌شوند.

محصولی با قیمت صفر هرگز پیشنهاد نمی‌شود. اگر کاتالوگ پر است و پیشنهادها خالی‌اند، اول ستون قیمت را نگاه کنید.

#موجودی، و محصولی که از فید می‌رود

محصولی که ناموجود باشد در هیچ پیامی نمی‌آید. دلیلش این است که پیشنهاد چیزی که فروخته نمی‌شود، در مقیاس یک کمپین یعنی یک کلیک به بن‌بست ضربدر کل ارسال.

محصولی که در اجرای بعدی فید دیگر نباشد ناموجود علامت می‌خورد، نه پاک. پاک کردنش تاریخچهٔ هم‌خریدی‌اش را از بین می‌برد و فردا با اولین سفارش دوباره برمی‌گردد؛ علامت‌خوردن یعنی سطر در پنل می‌ماند و کسی می‌بیند که نصف کاتالوگ ساکت شده است.

یک محافظ هم هست که خوب است بدانید وجود دارد: اگر یک اجرا کمتر از نصف اجرای موفق قبلی محصول بخواند، محصولات خوانده‌شده نوشته می‌شوند و هیچ چیزی ناموجود نمی‌شود. فایل نصفه، صفحهٔ ورود به‌جای فید، یا export ناتمام، هیچ‌کدام نباید بتوانند یک کاتالوگ سالم را ساعت سه بامداد خالی کنند.

#بارگذاری از فایل در پنل

در صفحهٔ «فید محصولات»، زیر تنظیمات فید. یک فایل CSV بدهید، ستون‌ها را که خودش حدس زده اصلاح کنید، و پیش از ارسال ببینید چند محصول ساخته شده و اولین‌شان چه قیمتی گرفته است.

دو چیز که این صفحه دارد و فید ندارد: واحد قیمت را همان‌جا انتخاب می‌کنید (تومان یا ریال)، و شناسهٔ تکراری داخل یک فایل را با شمارهٔ سطرش به شما نشان می‌دهد.

فایل بزرگ خودش تکه‌تکه فرستاده می‌شود و نوار پیشرفت را می‌بینید. اگر وسط کار شکست بخورد، متوقف می‌شود و می‌گوید تا آن لحظه چند محصول وارد شده، چون واردات نیمه‌تمامی که کسی فکر کند کامل است بدتر از واردات شکست‌خورده است.

#پیش‌نمایش پیشنهاد برای یک کاربر

در پایین صفحهٔ «کاتالوگ»، بخش پیش‌نمایش همیشه در دسترس است. با نوشتن دو کاراکتر، جستجو هم‌زمان بین شناسه، شماره موبایل و ایمیل انجام می‌شود؛ مثلا 09 هم شماره‌های دارای این عبارت را پیدا می‌کند و هم شناسه یا ایمیلی را که 09 در آن باشد. کاربران همان لحظه زیر فیلد جستجو نمایش داده می‌شوند. یک نفر را انتخاب کنید، اولویت پیشنهاد را روی حالت خودکار بگذارید یا یک اولویت مشخص انتخاب کنید، سپس نتیجه را پیش از ارسال ببینید.

اگر یک عبارت به چند کاربر بخورد، همهٔ نتیجه‌ها به شکل کارت نمایش داده می‌شوند. با انتخاب یک نفر، کارت‌های دیگر کنار می‌روند و همان کارت انتخاب‌شده باقی می‌ماند. این انتخاب مهم است، چون پیشنهاد هر کاربر از تاریخچهٔ رفتار همان کاربر ساخته می‌شود و حدس زدن اولین نتیجه می‌تواند پیش‌نمایش فرد دیگری را نشان دهد.

#از وب‌هوک‌های فروشگاه

اگر شاپیفای، ووکامرس یا دیجی‌کالا را وصل کرده‌اید، هر سفارشی که می‌آید نام و شناسه و قیمت محصولاتش را هم دارد. این‌ها خودبه‌خود وارد کاتالوگ می‌شوند، بدون هیچ تنظیمی.

با یک قاعده که مهم است: وب‌هوک فقط جای خالی را پر می‌کند و هرگز چیزی را بازنویسی نمی‌کند. یک سطر سفارش کمترین چیز را دربارهٔ محصول می‌داند: نه تصویر دارد، نه دسته‌بندی، نه قیمت پیش از تخفیف. پس اگر فید یا فایلی قبلا آن محصول را نوشته باشد، سفارش دست بهش نمی‌زند. اگر برعکس بود، فروشگاهی با فید سالم می‌دید که کاتالوگش با هر سفارش کمی بدتر می‌شود.

واحد پول از خود پلتفرم خوانده می‌شود. اگر پلتفرم واحدی بگوید که نمی‌شناسیم، محصول بدون قیمت ذخیره می‌شود، دقیقا مثل فید.

سفارش لغوشده و مرجوعی چیزی یاد نمی‌دهند. محصول مرجوعی هنوز یک محصول واقعی است، ولی پیامی که برای پس گرفتن چیزی آمده، اولین جای خوبی برای دیدن یک محصول نیست، و سفارش بعدی همان سطرها را دارد.

#همگام‌سازی از بک‌اند

برای همگام‌سازی خودکار، داده کاتالوگ را به‌شکل یک فید JSON روی یک نشانی HTTPS منتشر کنید و آن نشانی را در پنل بدهید. سگمنتیک فید را دوره‌ای دریافت می‌کند و وضعیت آخرین اجرا را در همان صفحه نشان می‌دهد.

#عیب‌یابی سریع

نشانهمحتمل‌ترین دلیل
کاتالوگ پر است، پیشنهادها خالیشناسه‌ها با product_id رویدادها یکی نیستند. بخش شناسه
بعضی محصولات هرگز پیشنهاد نمی‌شوندقیمتشان صفر است یا ناموجودند
قیمت‌ها ده برابرندفایل تومان بوده و ریال خوانده شده. بخش قیمت
فید ذخیره می‌شود ولی هیچ اجرایی نمی‌بینمفید فعال نیست، یا آدرسش خصوصی است و رد شده. متن خطا بالای همان صفحه است
کارت سلامت فید «نیازمند بررسی» استبیش از دو روز است هیچ اجرای موفقی نبوده. دلیلش در last_error صفحهٔ فید است
محصولات دیروز ناموجود شدنداز فید حذف شده‌اند. اگر عمدی نبوده، فید را نگاه کنید

#بعد چه بخوانید

  • گذاشتن رویداد اگر هنوز product_viewed و order_completed نمی‌فرستید. بدون آن‌ها کاتالوگ پر هم تاریخچه‌ای برای پیشنهاد دادن ندارد.
  • فرهنگ‌نامهٔ رویدادها برای فهرست رویدادهای یک فروشگاه اینترنتی.
  • سناریوها برای ساختن سبد رهاشده.
قبلیسرور به سروربعدیسگمنت

در این صفحه

  • کاتالوگ به چه کار می‌آید
  • شناسه‌ای که باید یکی باشد
  • سه راه پر کردن
  • فید دوره‌ای
  • قالب CSV
  • قالب JSON
  • قالب XML، یعنی گوگل مرچنت
  • قیمت و واحدش
  • موجودی، و محصولی که از فید می‌رود
  • بارگذاری از فایل در پنل
  • پیش‌نمایش پیشنهاد برای یک کاربر
  • از وب‌هوک‌های فروشگاه
  • همگام‌سازی از بک‌اند
  • عیب‌یابی سریع
  • بعد چه بخوانید

سگمنتیک

این صفحه از روی کد نوشته شده است