Cum să folosești API-ul Merchant Shoply
API-ul Merchant Shoply permite unui comerciant să folosească în siguranță propriile date Shoply în instrumente de raportare, fluxuri de lucru de suport, exporturi programate și aplicații private de business.
Fiecare integrare se autentifică folosind o credențială revocabilă, limitată la magazin, creată în Shoply Settings. Nu trebuie să partajezi un token de acces Shopify Admin API, iar o integrare poate accesa doar magazinul care a emis credențiala sa.
Ce pot face cu API-ul Merchant?
Poți folosi API-ul Merchant pentru a:
- Exporta rezultate de performanță zilnice, săptămânale sau lunare într-un spreadsheet sau un data warehouse.
- Construi un dashboard privat pentru sesiuni, chat-uri, căutări, clicuri pe produse, evenimente add-to-cart, achiziții și venit atribuit.
- Monitoriza activitatea clienților și descoperi modificări neobișnuite ale interacțiunii.
- Revizui sesiuni de chat și căutare pentru suport, merchandising și verificarea calității răspunsurilor.
- Recupera cronologia unei conversații individuale atunci când investighezi o problemă a unui client.
- Crea, actualiza, lista și șterge cunoștințele personalizate folosite de Shoply AI.
- Adăuga o pagină web externă sau un fișier PDF, text sau Markdown încărcat în baza de cunoștințe.
- Alinia datele evenimentelor în UTC cu fusul orar local al magazinului.
Acest ghid documentează șapte endpoint-uri. Cinci sunt aceleași endpoint-uri folosite de Shoply Admin → Analytics, iar două gestionează baza de cunoștințe:
| API | Categorie | Ce returnează |
|---|---|---|
admin_store_analytics | Performanță | Rânduri și totaluri zilnice, săptămânale sau lunare de performanță |
query_api_usage_count | Interacțiune | Număr de activități grupate după minut UTC sau zi |
query_sessionized_chat | Conversații | Rezumate ale sesiunilor de chat și căutare |
query_log_visualization | Conversații | Cronologia completă a evenimentelor pentru o sesiune selectată |
admin_get_store_metadata | Configurația magazinului | Fusul orar al magazinului folosit pentru a afișa corect datele UTC |
admin_store_knowledge | Cunoștințe | Text personalizat, pagini externe, fișiere încărcate, ștergere și recrawling |
user_generated_file | Fișiere de cunoștințe | Încarcă un fișier PDF, text sau Markdown înainte ca acesta să fie înregistrat ca informație de cunoștințe |
Corpurile de răspuns de mai jos sunt exemple reprezentative. Câmpurile și valorile tale vor reflecta activitatea înregistrată pentru magazinul tău.
Cerință de implementare: Autentificarea cu secretul proprietarului magazinului trebuie să fie implementată pe serverul API pe care îl apelezi. Dacă un secret valid returnează HTTP
403cuNo access_token found, acel server rulează încă vechiul cod de autentificare care acceptă doar access token.
Cum creez un secret API?
- Deschide panoul tău de administrare Shoply AI.
- Mergi la Settings → Store owner API secret.
- Creează un secret și dă-i un nume care identifică integrarea, cum ar fi
Weekly reporting export. - Copiază secretul când apare. Shoply afișează valoarea în clar o singură dată.
Fiecare secret este valabil 90 de zile. Un magazin poate avea secrete separate pentru integrări separate și poți revoca un secret fără a le întrerupe pe celelalte.
Salvează aceste valori ca variabile de mediu pe server:
export SHOPLY_STORE_KEY="your-store.myshopify.com"
export SHOPLY_STORE_OWNER_API_SECRETE="shoply_owner_key_example123.secret-value"Folosește domeniul permanent myshopify.com al magazinului pentru SHOPLY_STORE_KEY, chiar dacă vizitatorii folosesc în mod normal un domeniu personalizat.

Cum funcționează autentificarea?
Fiecare cerere către Merchant API trimite un header Authorization a cărui valoare este un șir JSON:
{
"store_key": "your-store.myshopify.com",
"store_owner_api_secrete": "YOUR_STORE_OWNER_API_SECRET"
}store_owner_api_secrete este numele exact al câmpului public, inclusiv ortografia sa istorică. Acesta nu este un token Bearer. Pune întregul șir JSON direct în headerul Authorization.
Păstrează secretul doar în cod backend. Nu îl pune într-un URL, într-un browser bundle, într-un repository public, într-un eveniment analytics sau într-un log al aplicației.
Există pachete oficiale pentru Python și Node.js?
Da. Shoply publică două pachete server-side care adaugă automat autentificarea necesară și expun Merchant API ca funcții tipizate. Ambele pachete sunt open source sub organizația GitHub shoplyai-public.
Pachet Python
Pachetul shoply-merchant-api suportă Python 3.12 și folosește modele de răspuns Pydantic v2. Instalează versiunea fixată 2.1.3:
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"Recuperează cele mai noi sesiuni de chat și căutare ca modele tipizate SessionSummary:
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)Pachetul oferă și funcții pentru analytics, număr de activități, cronologii complete de sesiune, fusul orar al magazinului și gestionarea cunoștințelor. Vezi ghidul său de cazuri de utilizare business și referința API .
Pachet pentru Node.js și TypeScript
Repository-ul shoply-merchant-api-js oferă pachetul @shoplyai/merchant-api pentru Node.js 20 sau mai nou. Este un pachet ESM cu declarații TypeScript integrate și fără dependențe runtime. Instalează versiunea fixată 2.1.3 direct din GitHub:
npm install "github:shoplyai-public/shoply-merchant-api-js#v2.1.3"Recuperează aceleași sesiuni recente de pe un server Node.js:
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);
}Pachetul npm acoperă aceleași endpoint-uri Merchant API ca pachetul Python. Vezi ghidul său de cazuri de utilizare business și referința API .
Ambele pachete sunt destinate serviciilor backend de încredere, joburilor programate și instrumentelor interne private. Nu importa niciunul dintre pachete în codul storefront și nu expune secretul API într-un browser bundle.
Pot apela API-ul HTTP fără un pachet?
Da. Merchant API rămâne un API HTTPS standard. Exemplele Python low-level de mai jos folosesc Requests, astfel încât să poți vedea întregul contract wire sau să integrezi dintr-un alt limbaj.
Instalează Requests dacă mediul tău nu îl include deja:
python -m pip install requestsHelperul de mai jos adaugă cheia magazinului și headerul de autentificare la fiecare cerere:
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 resultExemplele de mai jos folosesc acest client comun. Ambii helperi adaugă automat cheia magazinului autentificat.
Pot gestiona cunoștințele Shoply AI prin API?
Da. admin_store_knowledge folosește GET pentru a recupera cunoștințe și POST pentru a le crea, actualiza, șterge sau recrawl-ui. Un POST care folosește un ID de cunoștințe existent actualizează acea înregistrare; folosirea unui ID nou creează una.
Înainte de a automatiza actualizările, planifică informații utile pentru magazin folosind exemplele din ghidul nostru de training.
Scrierile de cunoștințe pot schimba răspunsurile afișate cumpărătorilor. Folosește un secret dedicat pentru sistemul care gestionează cunoștințele, validează conținutul înainte de trimitere și nu expune niciodată această credențială cu permisiuni de scriere în JavaScript-ul storefront.
Listează cunoștințele existente
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"))Exemplu de răspuns
{
"data": {
"knowledge::shipping-policy": {
"title": "Shipping policy",
"text": "Orders leave our warehouse within two business days.",
"epoch_edit": 1787211246
}
}
}Creează sau actualizează cunoștințe de tip text personalizat
Alege un ID de cunoștințe stabil și unic. Refolosește același ID când actualizezi acea înregistrare.
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)Exemplu de răspuns
{
"statusCode": 200
}Un răspuns de succes înseamnă că informația a fost salvată. Indexarea pentru căutare poate dura câteva minute, așa că un răspuns nou poate să nu apară imediat. Dacă API-ul raportează că informația a fost salvată, dar indexarea este întârziată, confirmă înregistrarea stocată cu GET înainte de a reîncerca scrierea.
Adaugă o pagină web externă
Folosește un ID care începe cu external_url::. Pune URL-ul complet http:// sau https:// în text.
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()),
}
},
)Încarcă și înregistrează un fișier de cunoștințe
Fișierele de cunoștințe trebuie să fie PDF, TXT sau Markdown și mai mici de 5 MB. Încarcă mai întâi fișierul, apoi salvează locația S3 privată returnată ca înregistrare de cunoștințe.
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()),
}
},
)Exemplu de răspuns la încărcare
{
"message": "File uploaded successfully",
"statusCode": 200,
"file_url": "s3://shoplystores/your-store.myshopify.com/uploads/shipping-policy.md"
}Tratează file_url ca pe o locație privată opacă returnată de Shoply. Nu o construi și nu o modifica manual.
Șterge cunoștințe
Ștergerea este permanentă. Recuperează mai întâi înregistrările curente și trimite doar ID-urile exacte pe care intenționezi să le elimini.
result = shoply_post(
"admin_store_knowledge",
{
"knowledge_ids_to_delete": [
"knowledge::shipping-policy",
"external_url::returns-policy",
"knowledge_file::shipping-policy",
]
},
)Solicită un recrawl al website-ului
Folosește un recrawl după ce se schimbă conținutul de pe website-ul comerciantului. În mod normal, nu este necesar după fiecare actualizare de text personalizat.
result = shoply_post(
"admin_store_knowledge",
re_crawl_ind="true",
)Cazuri de utilizare business
- Sincronizează informații despre livrare, retururi, garanție, mărimi sau îngrijirea produselor dintr-un sistem intern de conținut.
- Publică informații temporare despre campanii sau sărbători fără a le copia manual în Shoply Admin.
- Adaugă o pagină de politici sau un document aprobat în baza de cunoștințe ca parte a unui flux de deployment.
- Elimină informațiile depășite imediat ce o politică sau o promoție se încheie.
Exemple Merchant API
1. Recuperează analytics de performanță
admin_store_analytics alimentează tabelul Analytics → Summary. Returnează sesiuni, chat-uri, căutări, clicuri, evenimente add-to-cart, achiziții și venit atribuit.
Endpoint
GET https://api.shoplyai.ai/admin_store_analyticsParametri de query
| Parametru | Obligatoriu | Descriere |
|---|---|---|
store_key | Da | Adăugat de clientul comun |
report_type | Da | daily, weekly sau monthly |
start_date | Zilnic/săptămânal | Dată UTC inclusivă formatată ca YYYYMMDD |
end_date | Zilnic/săptămânal | Dată UTC inclusivă formatată ca YYYYMMDD |
Rapoartele lunare folosesc istoricul lunar stocat de Shoply și nu necesită limite de dată.
Exemplu 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")Exemplu de răspuns
{
"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"
}Venitul poate conține mai mult de o monedă. Tratează revenue ca text pentru afișare. Folosește revenue_usd când ai nevoie de valoarea normalizată în USD afișată de Shoply.
Cazuri de utilizare business
- Trimite un rezumat zilnic al impactului asupra vânzărilor către comerciant sau echipa ecommerce.
- Compară căutările, clicurile pe produse, evenimentele add-to-cart și achizițiile pentru a găsi punctele de abandon din funnel.
- Alimentează un dashboard săptămânal sau lunar de business intelligence fără a face scraping paginii Shoply Admin.
- Urmărește venitul atribuit în timp și compară-l cu modificările de merchandising sau de campanie.
2. Recuperează fusul orar al magazinului
admin_get_store_metadata furnizează badge-ul de fus orar afișat în Analytics → Chat & Search History. Pagina îl folosește pentru a converti activitatea UTC în ora locală a magazinului.
Endpoint
GET https://api.shoplyai.ai/admin_get_store_metadataParametri de query
| Parametru | Obligatoriu | Descriere |
|---|---|---|
store_key | Da | Adăugat de clientul comun |
metadata_key | Da | Folosește valoarea literală time_zone |
Exemplu Python
timezone_payload = shoply_get(
"admin_get_store_metadata",
metadata_key="time_zone",
)
timezone = timezone_payload["data"]
print(timezone["ianaTimezone"], timezone["timezoneOffsetMinutes"])Exemplu de răspuns
{
"data": {
"ianaTimezone": "America/Los_Angeles",
"timezoneOffset": -7,
"timezoneOffsetMinutes": -420
},
"statusCode": 200
}Cazuri de utilizare business
- Grupează activitatea UTC în aceleași zile calendaristice locale pe care comerciantul le vede în Analytics.
- Programează exporturi zilnice după încheierea zilei locale a magazinului.
- Etichetează rapoartele cu un fus orar IANA neechivoc, precum
America/Los_Angeles.
Offset-urile de fus orar se pot schimba din cauza regulilor de daylight saving. Preferă ianaTimezone atunci când sistemul tău de raportare îl suportă, în loc să salvezi permanent un singur offset numeric.
3. Recuperează numărul de activități
query_api_usage_count returnează activitatea magazinului grupată după data UTC sau minutul UTC original. Este, de asemenea, sursa pentru graficul de activitate din Analytics → Chat & Search History.
Endpoint
GET https://api.shoplyai.ai/query_api_usage_countParametri de query
| Parametru | Obligatoriu | Descriere |
|---|---|---|
start_dt_utc | Da | Ora de început UTC ca YYYY-MM-DD HH:mm:ss |
end_dt_utc | Da | Ora de sfârșit UTC ca YYYY-MM-DD HH:mm:ss |
groupby | Nu | utc_date pentru totaluri zilnice sau utc_date_time pentru rânduri pe minut |
Exemplu 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)Exemplu de răspuns
{
"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
}
]
}Rândurile includ contoarele de activitate disponibile pentru acea perioadă, cum ar fi întrebări în chat, căutări, clicuri, evenimente add-to-cart și evenimente checkout. Contoarele fără activitate pot lipsi în loc să fie setate la zero.
Cazuri de utilizare business
- Construiește un grafic de activitate orar sau zilnic precum cel din Chat & Search History.
- Detectează creșteri neobișnuite de trafic sau scăderi bruște ale interacțiunii clienților.
- Compară volumul căutărilor de produse cu clicurile, evenimentele add-to-cart și checkout-urile.
- Estimează când echipele de suport și merchandising ar trebui să revizuiască perioadele cele mai aglomerate.
4. Recuperează rezumatele sesiunilor de chat și căutare
query_sessionized_chat returnează o înregistrare compactă pentru fiecare sesiune de client. De asemenea, alimentează lista de sesiuni din Analytics → Chat & Search History.
Endpoint
GET https://api.shoplyai.ai/query_sessionized_chatParametri de query
| Parametru | Obligatoriu | Descriere |
|---|---|---|
start_dt_utc | Da | Ora de început UTC sau valoarea literală undefined |
end_dt_utc | Da | Ora de sfârșit UTC sau valoarea literală undefined |
num_sessions | Nu | Numărul de sesiuni de selectat când una dintre limite este undefined |
ScanIndexForward | Nu | Folosește false pentru a selecta mai întâi cele mai noi sesiuni |
Recuperează ultimele 40 de sesiuni
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", ""))Recuperează sesiuni într-un interval UTC
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",
)Când ambele limite de timp sunt prezente, API-ul returnează sesiunile din întregul interval; num_sessions nu limitează acea interogare cu limite definite.
Exemplu de răspuns
{
"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
}
]
}Câmpurile opționale variază în funcție de sesiune. Păstrează customer_id, start_timestamp_ms și end_timestamp_ms dacă plănuiești să recuperezi cronologia completă.
Cazuri de utilizare business
- Revizuiește un eșantion de conversații recente pentru calitatea răspunsurilor și training de suport.
- Găsește întrebări repetate ale clienților care ar trebui să influențeze descrierile de produs sau FAQ-urile.
- Identifică sesiuni cu intenție ridicată care conțin căutări, clicuri pe produse sau alte acțiuni de cumpărare.
- Exportă un rând per sesiune pentru analiza tendințelor, evitând în același timp payload-ul mai mare la nivel de eveniment.
5. Recuperează o sesiune completă
Transmite un rezumat selectat către query_log_visualization pentru a recupera evenimentele sale legate de client, AI, căutare și comerț.
Endpoint
GET https://api.shoplyai.ai/query_log_visualizationParametri de query
| Parametru | Obligatoriu | Descriere |
|---|---|---|
date_time_utc_start | Da | Începutul sesiunii formatat ca UTC YYYY-MM-DD HH:mm:ss |
date_time_utc_end | Da | Sfârșitul sesiunii formatat ca UTC YYYY-MM-DD HH:mm:ss |
session_id | Nu | customer_id din rezumat, folosit pentru înregistrări istorice mai vechi |
start_timestamp_ms | Recomandat | Timestamp-ul exact de început în milisecunde din rezumat |
Exemplu 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"))Exemplu de răspuns
{
"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": {}
}
]
}Cronologia poate conține întrebări ale clienților, răspunsuri AI, rezultate de căutare, clicuri pe produse, evenimente add-to-cart, evenimente checkout și participarea unui agent uman. Folosește server_timestamp_ms pentru a ordona tipurile mixte de evenimente. Înregistrările mai vechi pot conține mai puține câmpuri.
Cazuri de utilizare business
- Auditează exact ce a întrebat un client și ce a răspuns Shoply în timpul unei investigații de suport.
- Revizuiește calitatea răspunsurilor împreună cu rezultatele căutării și produsele afișate cumpărătorului.
- Reconstruiește parcursul de la întrebare la clic, add-to-cart sau checkout.
- Diagnostichează o singură sesiune raportată de un client fără a căuta prin istoric fără legătură.
Pot folosi un singur secret pentru fiecare API?
Da. Un store_owner_api_secrete valid este limitat la un singur magazin și funcționează pentru endpoint-urile Merchant API de mai sus. Pentru conturile SiteChat, același secret autentifică și API-urile de încărcare a catalogului. Pentru operațiuni mai sigure, folosește secrete denumite separat pentru sisteme separate — de exemplu, unul pentru un export de date nocturn și altul pentru un dashboard intern.
Dacă o integrare este retrasă sau compromisă, revocă doar secretul ei în Shoply Settings. Celelalte integrări vor continua să funcționeze.
Ce ar trebui să știu despre expirare, confidențialitate și erori?
De asemenea, consultă sursele de date și politica de confidențialitate Shoply pentru a înțelege ce informații sunt disponibile pentru răspunsurile oferite clienților.
- Secretele API ale proprietarului magazinului expiră după 90 de zile. Creează un înlocuitor și actualizează integrarea înainte de data expirării.
- Perioada standard de retenție a istoricului de chat și căutare în Shoply este tot de 90 de zile. Expirarea secretului și retenția datelor sunt politici separate.
- Răspunsurile istorice pot conține date personale, inclusiv identificatori de client, adrese de email, locație aproximativă, întrebări și activitate de cumpărare. Stochează-le și procesează-le în conformitate cu politica ta de confidențialitate și cu legislația aplicabilă.
- HTTP
403înseamnă că secretul lipsește, este invalid, expirat, revocat sau aparține unui alt magazin. - HTTP
422înseamnă de obicei că un parametru de query obligatoriu lipsește sau are un nume greșit. - HTTP
500sau un răspuns custatusCode: 500înseamnă că cererea a ajuns la Shoply, dar nu a putut fi finalizată. Reîncearcă erorile temporare cu backoff și contactează-ne dacă eroarea persistă. - Folosește intervale UTC delimitate pentru exporturi și joburi recurente, astfel încât răspunsurile să rămână ușor de gestionat.
Căutarea de produse face parte din Merchant API?
API-ul public de căutare produse al Shoply are un contract diferit de autentificare și de cerere. Vezi Cum să accesezi Shoply AI Search prin API dacă vrei rezultate de căutare produse pentru o experiență orientată către cumpărători, nu pentru date private ale comerciantului.
Pot comercianții SiteChat să încarce un catalog de produse?
Da. Conturile SiteChat pot încărca produse structurate și imagini de produs folosind același secret API al proprietarului magazinului. Aceste endpoint-uri de catalog sunt documentate separat în Cum să îți încarci catalogul pentru SiteChat. Magazinele Shopify continuă să sincronizeze produsele prin Shopify și nu folosesc aceste rute de încărcare.
Pentru ajutor cu o integrare, contactează Shoply AI.
