כיצד להשתמש ב-Merchant API של Shoply

A secure merchant key unlocks an API connector carrying storefront chat, analytics, and knowledge into backend code

ה-Merchant API של Shoply מאפשר לסוחר להשתמש באופן מאובטח בנתוני Shoply שלו בכלי דיווח, בתהליכי תמיכה, בייצואים מתוזמנים וביישומים עסקיים פרטיים.

כל אינטגרציה מזדהה באמצעות אישור בר-ביטול, תחום לחנות, שנוצר ב-Shoply Settings. אין צורך לשתף אסימון גישה של Shopify Admin API, ואינטגרציה יכולה לגשת רק לחנות שהנפיקה את האישור שלה.

מה אפשר לעשות עם ה-Merchant API?

אפשר להשתמש ב-Merchant API כדי:

  • לייצא תוצאות ביצועים יומיות, שבועיות או חודשיות לגיליון אלקטרוני או למחסן נתונים.
  • לבנות לוח מחוונים פרטי עבור סשנים, צ’אטים, חיפושים, הקלקות על מוצרים, אירועי הוספה לעגלה, רכישות והכנסות משויכות.
  • לנטר פעילות לקוחות ולגלות שינויים חריגים במעורבות.
  • לסקור סשנים של צ’אט וחיפוש לצורכי תמיכה, מרצ’נדייזינג ועבודה על איכות התשובות.
  • לאחזר ציר זמן של שיחה בודדת בעת חקירת בעיה של לקוח.
  • ליצור, לעדכן, להציג ולמחוק את הידע המותאם אישית שבו Shoply AI משתמש.
  • להוסיף דף אינטרנט חיצוני או קובץ PDF, טקסט או Markdown שהועלה לבסיס הידע.
  • להתאים נתוני אירועים ב-UTC לאזור הזמן המקומי של החנות.

מדריך זה מתעד שבעה endpoints. חמישה מהם הם אותם endpoints שבהם משתמשים Shoply Admin → Analytics, בעוד ששניים מנהלים את בסיס הידע:

APIקטגוריהמה הוא מחזיר
admin_store_analyticsביצועיםשורות וסיכומים של ביצועים יומיים, שבועיים או חודשיים
query_api_usage_countמעורבותספירות פעילות המקובצות לפי דקה או יום ב-UTC
query_sessionized_chatשיחותסיכומי סשנים של צ’אט וחיפוש
query_log_visualizationשיחותציר הזמן המלא של אירועים עבור סשן נבחר אחד
admin_get_store_metadataתצורת חנותאזור הזמן של החנות המשמש להצגה נכונה של נתוני UTC
admin_store_knowledgeידעטקסט מותאם אישית, דפים חיצוניים, קבצים שהועלו, מחיקה וסריקה מחדש
user_generated_fileקובצי ידעהעלאה של קובץ PDF, טקסט או Markdown לפני רישומו כידע

גופי התשובה להלן הם דוגמאות מייצגות. השדות והערכים שלכם ישקפו את הפעילות שנרשמה עבור החנות שלכם.

דרישת פריסה: אימות באמצעות סוד של בעל החנות חייב להיות פרוס בשרת ה-API שאליו אתם פונים. אם סוד תקף מחזיר HTTP 403 עם No access_token found, השרת הזה עדיין מריץ את קוד האימות הישן שתומך רק ב-access token.

איך יוצרים סוד API?

  1. פתחו את ממשק הניהול של Shoply AI.
  2. עברו אל Settings → Store owner API secret.
  3. צרו סוד ותנו לו שם שמזהה את האינטגרציה, למשל Weekly reporting export.
  4. העתיקו את הסוד כשהוא מופיע. Shoply מציג את ערך הטקסט הגלוי פעם אחת בלבד.
Shoply Settings showing the Store owner API secret panel, Create API secret button, expiry date, and revoke control

כל סוד תקף ל-90 ימים. לחנות יכולים להיות סודות נפרדים עבור אינטגרציות נפרדות, ואפשר לבטל סוד אחד בלי להפריע לאחרים.

שמרו את הערכים האלה כמשתני סביבה בצד השרת:

bash
export SHOPLY_STORE_KEY="your-store.myshopify.com" export SHOPLY_STORE_OWNER_API_SECRETE="shoply_owner_key_example123.secret-value"

השתמשו בדומיין הקבוע myshopify.com של החנות עבור SHOPLY_STORE_KEY, גם אם לקוחות בדרך כלל מבקרים בדומיין מותאם אישית.

Settings → Store owner API secret contains the Create API secret control. Keep generated secrets private.
Settings → Store owner API secret contains the Create API secret control. Keep generated secrets private. Click the screenshot to view it at full size.

איך האימות עובד?

כל בקשת Merchant API שולחת כותרת Authorization שהערך שלה הוא מחרוזת JSON:

json
{ "store_key": "your-store.myshopify.com", "store_owner_api_secrete": "YOUR_STORE_OWNER_API_SECRET" }

store_owner_api_secrete הוא שם השדה הציבורי המדויק, כולל האיות ההיסטורי שלו. זה אינו אסימון Bearer. שימו את מחרוזת ה-JSON המלאה ישירות בכותרת Authorization.

שמרו את הסוד רק בקוד backend. אל תמקמו אותו ב-URL, בחבילת דפדפן, במאגר ציבורי, באירוע אנליטיקה או בלוג של היישום.

האם יש חבילות רשמיות ל-Python ול-Node.js?

כן. Shoply מפרסמת שתי חבילות צד-שרת שמוסיפות את האימות הנדרש אוטומטית וחושפות את ה-Merchant API כפונקציות עם טיפוסים. שתי החבילות הן קוד פתוח תחת ארגון GitHub של shoplyai-public.

חבילת Python

החבילה shoply-merchant-api תומכת ב-Python 3.12 ומשתמשת במודלי תגובה של Pydantic v2. התקינו את גרסת 2.1.3 המקובעת:

bash
python3.12 -m venv .venv source .venv/bin/activate python -m pip install "git+https://github.com/shoplyai-public/shoply-merchant-api.git@v2.1.3"

אחזרו את סשני הצ’אט והחיפוש החדשים ביותר כמודלים מטיפוס SessionSummary:

python
import os from shoply_merchant_api import ShoplyMerchantClient with ShoplyMerchantClient( store_key=os.environ["SHOPLY_STORE_KEY"], api_secret=os.environ["SHOPLY_STORE_OWNER_API_SECRETE"], ) as shoply: session_response = shoply.list_sessions(limit=40) for conversation in session_response.data: print(conversation.customer_id, conversation.user_questions)

החבילה מספקת גם פונקציות עבור אנליטיקה, ספירות פעילות, צירי זמן מלאים של סשנים, אזור הזמן של החנות וניהול ידע. ראו את מדריך מקרי השימוש העסקיים  ואת הפניית ה-API .

חבילת Node.js ו-TypeScript

מאגר ה-shoply-merchant-api-js מספק את החבילה @shoplyai/merchant-api עבור Node.js 20 ומעלה. זוהי חבילת ESM עם הצהרות TypeScript מובנות וללא תלויות זמן ריצה. התקינו את גרסת 2.1.3 המקובעת ישירות מ-GitHub:

bash
npm install "github:shoplyai-public/shoply-merchant-api-js#v2.1.3"

אחזרו את אותם הסשנים החדשים ביותר משרת Node.js:

typescript
import { ShoplyMerchantClient } from "@shoplyai/merchant-api"; const storeKey = process.env.SHOPLY_STORE_KEY; const apiSecret = process.env.SHOPLY_STORE_OWNER_API_SECRETE; if (!storeKey || !apiSecret) { throw new Error("SHOPLY_STORE_KEY and SHOPLY_STORE_OWNER_API_SECRETE are required"); } const shoply = new ShoplyMerchantClient({ storeKey, apiSecret, }); const sessionResponse = await shoply.listSessions({ limit: 40 }); for (const conversation of sessionResponse.data) { console.log(conversation.customer_id, conversation.user_questions); }

חבילת npm מכסה את אותם endpoints של Merchant API כמו חבילת Python. ראו את מדריך מקרי השימוש העסקיים  ואת הפניית ה-API .

שתי החבילות מיועדות לשירותי backend מהימנים, למשימות מתוזמנות ולכלים פנימיים פרטיים. אל תייבאו אף אחת מהחבילות לקוד storefront ואל תחשפו את סוד ה-API בחבילת דפדפן.

האם אפשר לקרוא ל-HTTP API בלי חבילה?

כן. ה-Merchant API נשאר API סטנדרטי מעל HTTPS. דוגמאות ה-Python ברמה הנמוכה להלן משתמשות ב-Requests כדי שתוכלו לראות את חוזה התקשורת המלא או להשתלב משפה אחרת.

התקינו את Requests אם הסביבה שלכם אינה כוללת אותו כבר:

bash
python -m pip install requests

העוזר שלמטה מוסיף לכל בקשה את מפתח החנות ואת כותרת האימות:

python
import json import os from typing import Any import requests BASE_URL = "https://api.shoplyai.ai" STORE_KEY = os.environ["SHOPLY_STORE_KEY"] STORE_OWNER_API_SECRETE = os.environ["SHOPLY_STORE_OWNER_API_SECRETE"] session = requests.Session() session.headers.update({ "Authorization": json.dumps({ "store_key": STORE_KEY, "store_owner_api_secrete": STORE_OWNER_API_SECRETE, }) }) def shoply_get(api_name: str, **params: Any) -> dict[str, Any]: """Call one store-scoped Shoply API and surface HTTP or API-level errors.""" response = session.get( f"{BASE_URL}/{api_name}", params={"store_key": STORE_KEY, **params}, timeout=30, ) response.raise_for_status() payload = response.json() if payload.get("error") is not None or payload.get("statusCode") not in (None, 200): raise RuntimeError(payload.get("error", "Shoply API request failed")) return payload def shoply_post( api_name: str, payload: dict[str, Any] | None = None, **params: Any, ) -> dict[str, Any]: """Write store-scoped data and surface HTTP or API-level errors.""" response = session.post( f"{BASE_URL}/{api_name}", params={"store_key": STORE_KEY, **params}, json=payload, timeout=60, ) response.raise_for_status() result = response.json() if result.get("error") is not None or result.get("statusCode") not in (None, 200): raise RuntimeError(result.get("error", "Shoply API request failed")) return result

הדוגמאות להלן משתמשות בלקוח המשותף הזה. שני העוזרים מוסיפים אוטומטית את מפתח החנות המאומת.

האם אפשר לנהל את הידע של Shoply AI דרך ה-API?

כן. admin_store_knowledge משתמש ב-GET כדי לאחזר ידע וב-POST כדי ליצור, לעדכן, למחוק או לסרוק אותו מחדש. POST שמשתמש במזהה ידע קיים מעדכן את הרשומה הזו; שימוש במזהה חדש יוצר רשומה חדשה.

לפני אוטומציה של עדכונים, תכננו ידע חנות מועיל בעזרת הדוגמאות שבמדריך האימון שלנו.

כתיבות ידע יכולות לשנות תשובות שמוצגות לקונים. השתמשו בסוד ייעודי למערכת שמנהלת ידע, אמתו תוכן לפני שליחתו, ולעולם אל תחשפו את האישור הזה, שמאפשר כתיבה, ב-JavaScript של storefront.

הצגת ידע קיים

python
knowledge_payload = shoply_get( "admin_store_knowledge", knowledge_id_to_retrieve="_ALL_", ) for knowledge_id, knowledge in knowledge_payload["data"].items(): print(knowledge_id, knowledge.get("title"))

תשובה לדוגמה

json
{ "data": { "knowledge::shipping-policy": { "title": "Shipping policy", "text": "Orders leave our warehouse within two business days.", "epoch_edit": 1787211246 } } }

יצירה או עדכון של ידע טקסטואלי מותאם אישית

בחרו מזהה ידע יציב וייחודי. השתמשו באותו מזהה שוב בעת עדכון הרשומה הזו.

python
from time import time knowledge_id = "knowledge::shipping-policy" result = shoply_post( "admin_store_knowledge", { knowledge_id: { "title": "Shipping policy", "text": ( "Orders leave our warehouse within two business days. " "Standard delivery normally takes three to five business days." ), "epoch_edit": int(time()), } }, ) print(result)

תשובה לדוגמה

json
{ "statusCode": 200 }

תשובה מוצלחת פירושה שהידע נשמר. אינדוקס לחיפוש עשוי להימשך כמה דקות, ולכן תשובה חדשה לא בהכרח תופיע מיד. אם ה-API מדווח שהתוכן נשמר אך האינדוקס מתעכב, אשרו את הרשומה השמורה עם GET לפני שתנסו שוב את הכתיבה.

הוספת דף אינטרנט חיצוני

השתמשו במזהה שמתחיל ב-external_url::. שימו את כתובת ה-URL המלאה עם http:// או https:// בתוך text.

python
from time import time result = shoply_post( "admin_store_knowledge", { "external_url::returns-policy": { "title": "Returns and exchanges", "text": "https://www.example.com/policies/returns", "epoch_edit": int(time()), } }, )

העלאה ורישום של קובץ ידע

קובצי ידע חייבים להיות PDF, TXT או Markdown ובגודל קטן מ-5 MB. העלו את הקובץ תחילה, ואז שמרו את מיקום ה-S3 הפרטי שהוחזר כרשומת ידע.

python
from pathlib import Path from time import time file_path = Path("shipping-policy.md") with file_path.open("rb") as file_handle: upload_response = session.post( f"{BASE_URL}/user_generated_file", params={"store_key": STORE_KEY, "folder": "knowledge_file"}, files={"file": (file_path.name, file_handle, "text/markdown")}, timeout=60, ) upload_response.raise_for_status() uploaded = upload_response.json() if uploaded.get("statusCode") != 200: raise RuntimeError(uploaded.get("error", "Knowledge file upload failed")) shoply_post( "admin_store_knowledge", { "knowledge_file::shipping-policy": { "title": "Shipping policy document", "text": uploaded["file_url"], "epoch_edit": int(time()), } }, )

תשובת העלאה לדוגמה

json
{ "message": "File uploaded successfully", "statusCode": 200, "file_url": "s3://shoplystores/your-store.myshopify.com/uploads/shipping-policy.md" }

התייחסו אל file_url כמיקום פרטי אטום שמוחזר על ידי Shoply. אל תבנו אותו בעצמכם ואל תשנו אותו.

מחיקת ידע

המחיקה היא קבועה. אחזרו תחילה את הרשומות הנוכחיות ושלחו רק את המזהים המדויקים שאתם מתכוונים להסיר.

python
result = shoply_post( "admin_store_knowledge", { "knowledge_ids_to_delete": [ "knowledge::shipping-policy", "external_url::returns-policy", "knowledge_file::shipping-policy", ] }, )

בקשת סריקה מחדש של אתר

השתמשו בסריקה מחדש לאחר שהתוכן באתר הסוחר משתנה. בדרך כלל אין צורך בכך אחרי כל עדכון טקסט מותאם אישית.

python
result = shoply_post( "admin_store_knowledge", re_crawl_ind="true", )

מקרי שימוש עסקיים

  • לסנכרן הנחיות לגבי משלוחים, החזרות, אחריות, מידות או טיפול במוצר ממערכת תוכן פנימית.
  • לפרסם מידע זמני על קמפיינים או חגים בלי להעתיק אותו ידנית ל-Shoply Admin.
  • להוסיף דף מדיניות או מסמך מאושר לבסיס הידע כחלק מזרימת עבודה של פריסה.
  • להסיר הנחיות מיושנות מיד כשמדיניות או קידום מכירות מסתיימים.

דוגמאות ל-Merchant API

1. אחזור אנליטיקת ביצועים

admin_store_analytics מניע את טבלת Analytics → Summary. הוא מחזיר סשנים, צ’אטים, חיפושים, הקלקות, אירועי הוספה לעגלה, רכישות והכנסות משויכות.

Endpoint

text
GET https://api.shoplyai.ai/admin_store_analytics

פרמטרי שאילתה

ParameterRequiredDescription
store_keyYesנוסף על ידי הלקוח המשותף
report_typeYesdaily, weekly, או monthly
start_dateDaily/weeklyתאריך UTC כולל בפורמט YYYYMMDD
end_dateDaily/weeklyתאריך UTC כולל בפורמט YYYYMMDD

דוחות חודשיים משתמשים בהיסטוריה החודשית השמורה של Shoply ואינם דורשים גבולות תאריכים.

דוגמת Python

python
daily_report = shoply_get( "admin_store_analytics", report_type="daily", start_date="20260801", end_date="20260820", ) for row in daily_report["data"]: print(row["date"], row["sessions"], row["purchases"], row["revenue"]) print("Totals:", daily_report["totals"]) # Weekly rows use the Monday of each week as their date label. weekly_report = shoply_get( "admin_store_analytics", report_type="weekly", start_date="20260701", end_date="20260820", ) # Monthly requests do not need start_date or end_date. monthly_report = shoply_get("admin_store_analytics", report_type="monthly")

תשובה לדוגמה

json
{ "data": [ { "date": "20260820", "sessions": 42, "chats": 18, "searches": 24, "clicks": 11, "add_to_cart": 5, "purchases": 2, "revenue": "$168.00", "revenue_usd": "$168.00" } ], "totals": { "date": "totals", "sessions": 42, "chats": 18, "searches": 24, "clicks": 11, "add_to_cart": 5, "purchases": 2, "revenue": "$168.00", "revenue_usd": "$168.00" }, "report_type": "daily" }

הכנסה יכולה לכלול יותר ממטבע אחד. התייחסו ל-revenue כטקסט לתצוגה. השתמשו ב-revenue_usd כשאתם צריכים את ערך ה-USD המנורמל שמוצג על ידי Shoply.

מקרי שימוש עסקיים

  • לשלוח לסוחר או לצוות המסחר האלקטרוני סיכום יומי של השפעת המכירות.
  • להשוות חיפושים, הקלקות על מוצרים, אירועי הוספה לעגלה ורכישות כדי למצוא נשירה במשפך.
  • להזין לוח מחוונים שבועי או חודשי של בינה עסקית בלי לגרד את דף Shoply Admin.
  • לעקוב אחר הכנסות משויכות לאורך זמן ולהשוות אותן לשינויים במרצ’נדייזינג או בקמפיינים.

2. אחזור אזור הזמן של החנות

admin_get_store_metadata מספק את תג אזור הזמן שמוצג ב-Analytics → Chat & Search History. הדף משתמש בו כדי לתרגם פעילות UTC לשעה המקומית של החנות.

Endpoint

text
GET https://api.shoplyai.ai/admin_get_store_metadata

פרמטרי שאילתה

ParameterRequiredDescription
store_keyYesנוסף על ידי הלקוח המשותף
metadata_keyYesהשתמשו בערך המילולי time_zone

דוגמת Python

python
timezone_payload = shoply_get( "admin_get_store_metadata", metadata_key="time_zone", ) timezone = timezone_payload["data"] print(timezone["ianaTimezone"], timezone["timezoneOffsetMinutes"])

תשובה לדוגמה

json
{ "data": { "ianaTimezone": "America/Los_Angeles", "timezoneOffset": -7, "timezoneOffsetMinutes": -420 }, "statusCode": 200 }

מקרי שימוש עסקיים

  • לקבץ פעילות UTC לאותם ימים קלנדריים מקומיים שהסוחר רואה ב-Analytics.
  • לתזמן ייצואים יומיים לאחר שהיום המקומי של החנות הסתיים.
  • לסמן דוחות עם אזור זמן חד-משמעי של IANA כגון America/Los_Angeles.

היסטי אזור זמן יכולים להשתנות בגלל כללי שעון קיץ. העדיפו את ianaTimezone כאשר מערכת הדיווח שלכם תומכת בכך, במקום לשמור לצמיתות היסט מספרי אחד.

3. אחזור ספירות פעילות

query_api_usage_count מחזיר פעילות חנות המקובצת לפי תאריך UTC או לפי דקת ה-UTC המקורית. זהו גם המקור של תרשים הפעילות ב-Analytics → Chat & Search History.

Endpoint

text
GET https://api.shoplyai.ai/query_api_usage_count

פרמטרי שאילתה

ParameterRequiredDescription
start_dt_utcYesזמן התחלה ב-UTC כ-YYYY-MM-DD HH:mm:ss
end_dt_utcYesזמן סיום ב-UTC כ-YYYY-MM-DD HH:mm:ss
groupbyNoutc_date עבור סכומים יומיים או utc_date_time עבור שורות לפי דקה

דוגמת Python

python
activity = shoply_get( "query_api_usage_count", start_dt_utc="2026-08-01 00:00:00", end_dt_utc="2026-08-20 23:59:59", groupby="utc_date", ) for row in activity["data"]: print(row)

תשובה לדוגמה

json
{ "data": [ { "utc_date": "2026-08-20", "QA": 18, "CHAT": 18, "SEARCH": 20, "CACHED_SEARCH": 4, "PRODUCT_SEARCH": 22, "CLICK": 11, "ADD_TO_CART": 5, "CHECKOUT": 2 } ] }

השורות כוללות את מוני הפעילות הזמינים עבור התקופה הזו, כגון שאלות צ’אט, חיפושים, הקלקות, אירועי הוספה לעגלה ואירועי checkout. מונים ללא פעילות עשויים להיעדר במקום להיות מוגדרים לאפס.

מקרי שימוש עסקיים

  • לבנות תרשים פעילות שעתי או יומי כמו זה שב-Chat & Search History.
  • לזהות קפיצות חריגות בתעבורה או ירידות פתאומיות במעורבות לקוחות.
  • להשוות נפח חיפוש מוצרים להקלקות, אירועי הוספה לעגלה ו-checkouts.
  • להעריך מתי צוותי תמיכה ומרצ’נדייזינג צריכים לסקור את התקופות העמוסות ביותר.

4. אחזור סיכומי סשנים של צ’אט וחיפוש

query_sessionized_chat מחזיר רשומה קומפקטית אחת לכל סשן לקוח. הוא גם מניע את רשימת הסשנים ב-Analytics → Chat & Search History.

Endpoint

text
GET https://api.shoplyai.ai/query_sessionized_chat

פרמטרי שאילתה

ParameterRequiredDescription
start_dt_utcYesזמן התחלה ב-UTC, או הערך המילולי undefined
end_dt_utcYesזמן סיום ב-UTC, או הערך המילולי undefined
num_sessionsNoמספר הסשנים לבחירה כאשר אחד מהגבולות הוא undefined
ScanIndexForwardNoהשתמשו ב-false כדי לבחור קודם את הסשנים החדשים ביותר

אחזור 40 הסשנים האחרונים

python
summary_payload = shoply_get( "query_sessionized_chat", start_dt_utc="undefined", end_dt_utc="undefined", num_sessions=40, ScanIndexForward="false", ) sessions = summary_payload["data"] for conversation in sessions: print(conversation["customer_id"], conversation.get("user_questions", ""))

אחזור סשנים בטווח UTC

python
summary_payload = shoply_get( "query_sessionized_chat", start_dt_utc="2026-08-20 00:00:00", end_dt_utc="2026-08-20 23:59:59", ScanIndexForward="false", )

כאשר שני גבולות הזמן קיימים, ה-API מחזיר סשנים בכל הטווח המלא; num_sessions אינו מגביל את השאילתה התחומה הזו.

תשובה לדוגמה

json
{ "data": [ { "customer_id": "customer-or-session-id", "user_questions": "Do you have this in blue?\nWhen will it ship?", "start_timestamp_ms": 1787184000000, "end_timestamp_ms": 1787184065000, "session_types": "product information, click", "customer_email": null, "customer_info": {}, "sentiment": "positive", "num_questions": 2, "num_searches": 1, "num_clicks": 1 } ] }

שדות אופציונליים משתנים בין סשנים. שמרו את customer_id, start_timestamp_ms ו-end_timestamp_ms אם אתם מתכננים לאחזר את ציר הזמן המלא.

מקרי שימוש עסקיים

  • לסקור מדגם של שיחות אחרונות לצורך איכות תשובות והכשרת תמיכה.
  • למצוא שאלות חוזרות של לקוחות שצריכות להשפיע על תיאורי מוצרים או FAQs.
  • לזהות סשנים בעלי כוונת רכישה גבוהה הכוללים חיפושים, הקלקות על מוצרים או פעולות קנייה אחרות.
  • לייצא שורה אחת לכל סשן לניתוח מגמות תוך הימנעות ממטען גדול יותר ברמת האירוע.

5. אחזור סשן מלא אחד

העבירו סיכום נבחר אל query_log_visualization כדי לאחזר את אירועי הלקוח, ה-AI, החיפוש והמסחר שלו.

Endpoint

text
GET https://api.shoplyai.ai/query_log_visualization

פרמטרי שאילתה

ParameterRequiredDescription
date_time_utc_startYesהתחלת סשן בפורמט UTC YYYY-MM-DD HH:mm:ss
date_time_utc_endYesסיום סשן בפורמט UTC YYYY-MM-DD HH:mm:ss
session_idNoה-customer_id של הסיכום, המשמש עבור רשומות היסטוריה ישנות יותר
start_timestamp_msRecommendedחותמת הזמן המדויקת במילישניות של תחילת הסשן מהסיכום

דוגמת Python

python
from datetime import datetime, timezone def utc_from_milliseconds(timestamp_ms: int) -> str: """Format a Shoply millisecond timestamp for the history API.""" value = datetime.fromtimestamp(timestamp_ms / 1000, tz=timezone.utc) return value.strftime("%Y-%m-%d %H:%M:%S") selected = sessions[0] timeline_payload = shoply_get( "query_log_visualization", date_time_utc_start=utc_from_milliseconds(selected["start_timestamp_ms"]), date_time_utc_end=utc_from_milliseconds(selected["end_timestamp_ms"]), session_id=selected["customer_id"], start_timestamp_ms=selected["start_timestamp_ms"], ) for event in timeline_payload["data"]: print(event.get("server_timestamp_ms"), event.get("action_type"))

תשובה לדוגמה

json
{ "data": [ { "action_type": "QA", "session_id": "customer-or-session-id", "utc_date_time": "2026-08-20 00:00:00", "start_timestamp_ms": 1787184000000, "server_timestamp_ms": 1787184000123, "Q": { "question": "Do you have this in blue?", "question_context": {} }, "task_id": "task-id", "list_tokens": [ { "data_type": "LLMOutput", "data": "Yes. These blue options are currently available." } ], "dict_search_results": {} } ] }

ציר הזמן יכול להכיל שאלות של לקוחות, תשובות AI, תוצאות חיפוש, הקלקות על מוצרים, אירועי הוספה לעגלה, אירועי checkout והשתתפות של נציג אנושי. השתמשו ב-server_timestamp_ms כדי לסדר סוגי אירועים מעורבים. רשומות ישנות יותר עשויות להכיל פחות שדות.

מקרי שימוש עסקיים

  • לבדוק בדיוק מה לקוח שאל ומה Shoply ענה במהלך חקירת תמיכה.
  • לסקור את איכות התשובה יחד עם תוצאות החיפוש והמוצרים שהוצגו לקונה.
  • לשחזר את המסע משאלה להקלקה, להוספה לעגלה או ל-checkout.
  • לאבחן סשן אחד שדווח על ידי לקוח בלי לחפש בהיסטוריה לא קשורה.

האם אפשר להשתמש באותו סוד לכל API?

כן. store_owner_api_secrete תקף תחום לחנות אחת ופועל בכל ה-endpoints של Merchant API שלעיל. עבור חשבונות SiteChat, אותו סוד גם מאמת את ממשקי העלאת הקטלוג. להפעלה בטוחה יותר, השתמשו בסודות נפרדים עם שמות נפרדים עבור מערכות נפרדות — למשל, אחד לייצוא נתונים לילי ואחר ללוח מחוונים פנימי.

אם אינטגרציה אחת יוצאת משימוש או נפרצת, בטלו רק את הסוד שלה ב-Shoply Settings. האינטגרציות האחרות ימשיכו לעבוד.

מה צריך לדעת על תפוגה, פרטיות ושגיאות?

כדאי גם לעיין במקורות הנתונים והפרטיות של Shoply כדי להבין איזה מידע זמין לתשובות ללקוחות.

  • תוקף סודות API של בעל החנות פג לאחר 90 ימים. צרו תחליף ועדכנו את האינטגרציה לפני תאריך התפוגה שלה.
  • תקופת השמירה הסטנדרטית של Shoply להיסטוריית צ’אט וחיפוש היא גם 90 ימים. תפוגת סוד ושמירת נתונים הן מדיניות נפרדות.
  • תשובות היסטוריה עשויות להכיל נתונים אישיים, כולל מזהי לקוחות, כתובות אימייל, מיקום משוער, שאלות ופעילות קנייה. אחסנו ועבדו אותם בהתאם למדיניות הפרטיות שלכם ולחוק החל.
  • HTTP 403 פירושו שהסוד חסר, לא תקף, פג תוקפו, בוטל או שייך לחנות אחרת.
  • HTTP 422 בדרך כלל פירושו שחסר פרמטר שאילתה נדרש או שיש לו שם שגוי.
  • HTTP 500 או תשובה עם statusCode: 500 פירושם שהבקשה הגיעה ל-Shoply אך לא ניתן היה להשלים אותה. נסו שוב בכשלים זמניים עם backoff ופנו אלינו אם השגיאה נמשכת.
  • השתמשו בטווחי UTC תחומים לייצואים ולעבודות חוזרות כדי שהתשובות יישארו ניתנות לניהול.

האם חיפוש מוצרים הוא חלק מה-Merchant API?

ל-API הציבורי של חיפוש המוצרים של Shoply יש אימות וחוזה בקשה שונים. ראו How to Access Shoply AI Search Through the API אם אתם רוצים תוצאות חיפוש מוצרים עבור חוויית משתמש מול קונים במקום נתוני סוחר פרטיים.

האם סוחרי SiteChat יכולים להעלות קטלוג מוצרים?

כן. חשבונות SiteChat יכולים להעלות מוצרים מובנים ותמונות מוצרים עם אותו סוד API של בעל החנות. אותם endpoints של הקטלוג מתועדים בנפרד ב-How to Upload Your Catalog for SiteChat. חנויות Shopify ממשיכות לסנכרן מוצרים דרך Shopify ואינן משתמשות בנתיבי העלאה אלה.

לקבלת עזרה עם אינטגרציה, צרו קשר עם Shoply AI.