Cum să folosești API-ul Merchant Shoply

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

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:

APICategorieCe returnează
admin_store_analyticsPerformanțăRânduri și totaluri zilnice, săptămânale sau lunare de performanță
query_api_usage_countInteracțiuneNumăr de activități grupate după minut UTC sau zi
query_sessionized_chatConversațiiRezumate ale sesiunilor de chat și căutare
query_log_visualizationConversațiiCronologia completă a evenimentelor pentru o sesiune selectată
admin_get_store_metadataConfigurația magazinuluiFusul orar al magazinului folosit pentru a afișa corect datele UTC
admin_store_knowledgeCunoștințeText personalizat, pagini externe, fișiere încărcate, ștergere și recrawling
user_generated_fileFiș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 403 cu No access_token found, acel server rulează încă vechiul cod de autentificare care acceptă doar access token.

Cum creez un secret API?

  1. Deschide panoul tău de administrare Shoply AI.
  2. Mergi la Settings → Store owner API secret.
  3. Creează un secret și dă-i un nume care identifică integrarea, cum ar fi Weekly reporting export.
  4. Copiază secretul când apare. Shoply afișează valoarea în clar o singură dată.
Shoply Settings showing the Store owner API secret panel, Create API secret button, expiry date, and revoke control

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:

bash
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.

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.

Cum funcționează autentificarea?

Fiecare cerere către Merchant API trimite un header Authorization a cărui valoare este un șir JSON:

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:

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"

Recuperează cele mai noi sesiuni de chat și căutare ca modele tipizate 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)

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:

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

Recuperează aceleași sesiuni recente de pe un server 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); }

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:

bash
python -m pip install requests

Helperul de mai jos adaugă cheia magazinului și headerul de autentificare la fiecare cerere:

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

Exemplele 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

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"))

Exemplu de răspuns

json
{ "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.

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)

Exemplu de răspuns

json
{ "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.

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()), } }, )

Î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.

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()), } }, )

Exemplu de răspuns la încărcare

json
{ "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.

python
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.

python
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

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

Parametri de query

ParametruObligatoriuDescriere
store_keyDaAdăugat de clientul comun
report_typeDadaily, weekly sau monthly
start_dateZilnic/săptămânalDată UTC inclusivă formatată ca YYYYMMDD
end_dateZilnic/săptămânalDată UTC inclusivă formatată ca YYYYMMDD

Rapoartele lunare folosesc istoricul lunar stocat de Shoply și nu necesită limite de dată.

Exemplu 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")

Exemplu de răspuns

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" }

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

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

Parametri de query

ParametruObligatoriuDescriere
store_keyDaAdăugat de clientul comun
metadata_keyDaFolosește valoarea literală time_zone

Exemplu Python

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

json
{ "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

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

Parametri de query

ParametruObligatoriuDescriere
start_dt_utcDaOra de început UTC ca YYYY-MM-DD HH:mm:ss
end_dt_utcDaOra de sfârșit UTC ca YYYY-MM-DD HH:mm:ss
groupbyNuutc_date pentru totaluri zilnice sau utc_date_time pentru rânduri pe minut

Exemplu 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)

Exemplu de răspuns

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 } ] }

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

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

Parametri de query

ParametruObligatoriuDescriere
start_dt_utcDaOra de început UTC sau valoarea literală undefined
end_dt_utcDaOra de sfârșit UTC sau valoarea literală undefined
num_sessionsNuNumărul de sesiuni de selectat când una dintre limite este undefined
ScanIndexForwardNuFolosește false pentru a selecta mai întâi cele mai noi sesiuni

Recuperează ultimele 40 de sesiuni

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", ""))

Recuperează sesiuni într-un interval 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", )

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

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 } ] }

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

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

Parametri de query

ParametruObligatoriuDescriere
date_time_utc_startDaÎnceputul sesiunii formatat ca UTC YYYY-MM-DD HH:mm:ss
date_time_utc_endDaSfârșitul sesiunii formatat ca UTC YYYY-MM-DD HH:mm:ss
session_idNucustomer_id din rezumat, folosit pentru înregistrări istorice mai vechi
start_timestamp_msRecomandatTimestamp-ul exact de început în milisecunde din rezumat

Exemplu 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"))

Exemplu de răspuns

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": {} } ] }

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 500 sau un răspuns cu statusCode: 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.