Så använder du Shoply Merchant API

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

Shoply Merchant API gör det möjligt för en handlare att säkert använda sin egen Shoply-data i rapportverktyg, supportarbetsflöden, schemalagda exporter och privata affärsapplikationer.

Varje integration autentiseras med en återkallelig, butiksavgränsad autentiseringsuppgift som skapas i Shoply Settings. Du behöver inte dela en Shopify Admin API-åtkomsttoken, och en integration kan endast komma åt den butik som utfärdade dess autentiseringsuppgift.

Vad kan jag göra med Merchant API?

Du kan använda Merchant API för att:

  • Exportera dagliga, veckovisa eller månatliga resultat till ett kalkylblad eller datalager.
  • Bygga en privat dashboard för sessioner, chattar, sökningar, produktklick, lägg-till-i-kundvagn-händelser, köp och attribuerad intäkt.
  • Övervaka kundaktivitet och upptäcka ovanliga förändringar i engagemang.
  • Granska chatt- och söksessioner för support, merchandising och arbete med svarskvalitet.
  • Hämta en individuell konversationstidslinje när du undersöker ett kundärende.
  • Skapa, uppdatera, lista och ta bort den anpassade kunskap som används av Shoply AI.
  • Lägga till en extern webbsida eller en uppladdad PDF-, text- eller Markdown-fil i kunskapsbasen.
  • Anpassa UTC-händelsedata till butikens lokala tidszon.

Den här guiden dokumenterar sju endpoints. Fem är samma endpoints som används av Shoply Admin → Analytics, medan två hanterar kunskapsbasen:

APIKategoriVad det returnerar
admin_store_analyticsPrestandaDagliga, veckovisa eller månatliga prestandarader och totalsummor
query_api_usage_countEngagemangAktivitetsantal grupperade per UTC-minut eller dag
query_sessionized_chatKonversationerSammanfattningar av chatt- och söksessioner
query_log_visualizationKonversationerDen fullständiga händelsetidslinjen för en vald session
admin_get_store_metadataButikskonfigurationButikens tidszon som används för att visa UTC-data korrekt
admin_store_knowledgeKunskapAnpassad text, externa sidor, uppladdade filer, borttagning och omgenomsökning
user_generated_fileKunskapsfilerLaddar upp en PDF-, text- eller Markdown-fil innan den registreras som kunskap

Svarskropparna nedan är representativa exempel. Dina fält och värden kommer att återspegla den aktivitet som har registrerats för din butik.

Krav för driftsättning: Autentisering med hemlighet för butiksägare måste vara driftsatt på den API-server du anropar. Om en giltig hemlighet returnerar HTTP 403 med No access_token found, kör den servern fortfarande den äldre autentiseringskoden som endast använder access token.

Hur skapar jag en API-hemlighet?

  1. Öppna din Shoply AI-admin.
  2. Gå till Settings → Store owner API secret.
  3. Skapa en hemlighet och ge den ett namn som identifierar integrationen, till exempel Weekly reporting export.
  4. Kopiera hemligheten när den visas. Shoply visar klartextvärdet endast en gång.
Shoply Settings showing the Store owner API secret panel, Create API secret button, expiry date, and revoke control

Varje hemlighet är giltig i 90 dagar. En butik kan ha separata hemligheter för separata integrationer, och du kan återkalla en hemlighet utan att avbryta de andra.

Spara dessa värden som miljövariabler på serversidan:

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

Använd butikens permanenta myshopify.com-domän för SHOPLY_STORE_KEY, även om kunder normalt besöker en anpassad domän.

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.

Hur fungerar autentisering?

Varje Merchant API-begäran skickar en Authorization-header vars värde är en JSON-sträng:

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

store_owner_api_secrete är det exakta publika fältnamnet, inklusive dess historiska stavning. Detta är inte en Bearer-token. Lägg den fullständiga JSON-strängen direkt i Authorization-headern.

Behåll hemligheten endast i backend-kod. Lägg den inte i en URL, browser bundle, publik repository, analys-händelse eller applikationslogg.

Finns det officiella Python- och Node.js-paket?

Ja. Shoply publicerar två paket för serversidan som automatiskt lägger till den nödvändiga autentiseringen och exponerar Merchant API som typade funktioner. Båda paketen är öppen källkod under GitHub-organisationen shoplyai-public.

Python-paket

Paketet shoply-merchant-api stöder Python 3.12 och använder svarsmodeller från Pydantic v2. Installera den låsta versionen 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"

Hämta de senaste chatt- och söksessionerna som typade SessionSummary-modeller:

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)

Paketet tillhandahåller också funktioner för analys, aktivitetsantal, fullständiga sessionstidslinjer, butikens tidszon och kunskapshantering. Se dess guide för affärsanvändningsfall  och API-referens .

Node.js- och TypeScript-paket

Repositoryn shoply-merchant-api-js tillhandahåller paketet @shoplyai/merchant-api för Node.js 20 eller senare. Det är ett ESM-paket med inbyggda TypeScript-deklarationer och inga runtime-beroenden. Installera den låsta versionen 2.1.3 direkt från GitHub:

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

Hämta samma senaste sessioner från en Node.js-server:

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-paketet täcker samma Merchant API-endpoints som Python-paketet. Se dess guide för affärsanvändningsfall  och API-referens .

Båda paketen är för betrodda backend-tjänster, schemalagda jobb och privata interna verktyg. Importera inte något av paketen i storefront-kod och exponera inte API-hemligheten i en browser bundle.

Kan jag anropa HTTP-API:t utan ett paket?

Ja. Merchant API förblir ett standardiserat HTTPS-API. Python-exemplen på låg nivå nedan använder Requests så att du kan se det fullständiga wire contract eller integrera från ett annat språk.

Installera Requests om din miljö inte redan innehåller det:

bash
python -m pip install requests

Hjälpfunktionen nedan lägger till butiksnyckeln och autentiseringsheadern i varje begäran:

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

Exemplen nedan använder denna delade klient. Båda hjälpfunktionerna lägger automatiskt till den autentiserade butiksnyckeln.

Kan jag hantera Shoply AI-kunskap via API:t?

Ja. admin_store_knowledge använder GET för att hämta kunskap och POST för att skapa, uppdatera, ta bort eller genomsöka om den. En POST som använder ett befintligt kunskaps-ID uppdaterar den posten; att använda ett nytt ID skapar en ny.

Innan du automatiserar uppdateringar, planera användbar butikskunskap med exemplen i vår träningsguide.

Skrivningar till kunskap kan ändra svar som visas för kunder. Använd en dedikerad hemlighet för systemet som hanterar kunskap, validera innehållet innan du skickar det och exponera aldrig denna skrivbehöriga autentiseringsuppgift i storefront-JavaScript.

Lista befintlig kunskap

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

Exempelsvar

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

Skapa eller uppdatera anpassad textkunskap

Välj ett stabilt, unikt kunskaps-ID. Återanvänd samma ID när du uppdaterar posten.

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)

Exempelsvar

json
{ "statusCode": 200 }

Ett lyckat svar betyder att kunskapen har sparats. Sökindeksering kan ta några minuter, så ett nytt svar kanske inte visas omedelbart. Om API:t rapporterar att innehållet har sparats men att indexeringen är fördröjd, bekräfta den sparade posten med GET innan du försöker skriva igen.

Lägg till en extern webbsida

Använd ett ID som börjar med external_url::. Lägg den fullständiga http://- eller https://-URL:en i 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()), } }, )

Ladda upp och registrera en kunskapsfil

Kunskapsfiler måste vara PDF, TXT eller Markdown och mindre än 5 MB. Ladda först upp filen och spara sedan den returnerade privata S3-platsen som en kunskapspost.

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

Exempelsvar för uppladdning

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

Behandla file_url som en opaque privat plats som returneras av Shoply. Konstruera eller ändra den inte själv.

Ta bort kunskap

Borttagning är permanent. Hämta först de aktuella posterna och skicka endast de exakta ID:n som du avser att ta bort.

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

Begär en omgenomsökning av webbplatsen

Använd en omgenomsökning efter att innehållet på handlarens webbplats har ändrats. Det är normalt inte nödvändigt efter varje uppdatering av anpassad text.

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

Affärsanvändningsfall

  • Synkronisera vägledning om frakt, returer, garanti, storlekar eller produktvård från ett internt innehållssystem.
  • Publicera tillfällig kampanj- eller helginformation utan att manuellt kopiera in den i Shoply Admin.
  • Lägg till en policywebbsida eller ett godkänt dokument i kunskapsbasen som en del av ett driftsättningsarbetsflöde.
  • Ta bort föråldrad vägledning så snart en policy eller kampanj upphör.

Exempel på Merchant API

1. Hämta prestandaanalys

admin_store_analytics driver tabellen Analytics → Summary. Den returnerar sessioner, chattar, sökningar, klick, lägg-till-i-kundvagn-händelser, köp och attribuerad intäkt.

Endpoint

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

Query-parametrar

ParameterKrävsBeskrivning
store_keyJaLäggs till av den delade klienten
report_typeJadaily, weekly eller monthly
start_dateDaglig/veckovisInkluderande UTC-datum formaterat som YYYYMMDD
end_dateDaglig/veckovisInkluderande UTC-datum formaterat som YYYYMMDD

Månatliga rapporter använder Shoplys lagrade månadshistorik och kräver inte datumgränser.

Python-exempel

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

Exempelsvar

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

Intäkt kan innehålla mer än en valuta. Behandla revenue som visningstext. Använd revenue_usd när du behöver det normaliserade USD-värdet som visas av Shoply.

Affärsanvändningsfall

  • Skicka en daglig sammanfattning av försäljningspåverkan till handlaren eller e-handelsteamet.
  • Jämför sökningar, produktklick, lägg-till-i-kundvagn-händelser och köp för att hitta tapp i tratten.
  • Mata en veckovis eller månatlig business-intelligence-dashboard utan att skrapa Shoply Admin-sidan.
  • Följ attribuerad intäkt över tid och jämför den med förändringar i merchandising eller kampanjer.

2. Hämta butikens tidszon

admin_get_store_metadata levererar tidszonsbadgen som visas i Analytics → Chat & Search History. Sidan använder den för att översätta UTC-aktivitet till butikens lokala tid.

Endpoint

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

Query-parametrar

ParameterKrävsBeskrivning
store_keyJaLäggs till av den delade klienten
metadata_keyJaAnvänd det bokstavliga värdet time_zone

Python-exempel

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

Exempelsvar

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

Affärsanvändningsfall

  • Gruppera UTC-aktivitet i samma lokala kalenderdagar som handlaren ser i Analytics.
  • Schemalägg dagliga exporter efter att butikens lokala dag har avslutats.
  • Märk rapporter med en entydig IANA-tidszon som America/Los_Angeles.

Tidszonsförskjutningar kan ändras på grund av regler för sommartid. Föredra ianaTimezone när ditt rapportsystem stöder det i stället för att permanent spara en numerisk förskjutning.

3. Hämta aktivitetsantal

query_api_usage_count returnerar butiksaktivitet grupperad per UTC-datum eller ursprunglig UTC-minut. Det är också källan för aktivitetsdiagrammet i Analytics → Chat & Search History.

Endpoint

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

Query-parametrar

ParameterKrävsBeskrivning
start_dt_utcJaUTC-starttid som YYYY-MM-DD HH:mm:ss
end_dt_utcJaUTC-sluttid som YYYY-MM-DD HH:mm:ss
groupbyNejutc_date för dagliga summor eller utc_date_time för minutrader

Python-exempel

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)

Exempelsvar

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

Rader inkluderar de aktivitetsräknare som är tillgängliga för perioden, till exempel chattfrågor, sökningar, klick, lägg-till-i-kundvagn-händelser och checkout-händelser. Räknare utan aktivitet kan saknas i stället för att sättas till noll.

Affärsanvändningsfall

  • Bygg ett tim- eller dagsdiagram över aktivitet som det i Chat & Search History.
  • Upptäck ovanliga trafiktoppar eller plötsliga fall i kundengagemang.
  • Jämför volymen av produktsökningar med klick, lägg-till-i-kundvagn-händelser och checkouts.
  • Uppskatta när support- och merchandisingteam bör granska de mest intensiva perioderna.

4. Hämta sammanfattningar av chatt- och söksessioner

query_sessionized_chat returnerar en kompakt post per kundsession. Den driver också sessionslistan i Analytics → Chat & Search History.

Endpoint

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

Query-parametrar

ParameterKrävsBeskrivning
start_dt_utcJaUTC-starttid, eller det bokstavliga värdet undefined
end_dt_utcJaUTC-sluttid, eller det bokstavliga värdet undefined
num_sessionsNejAntal sessioner att välja när någon av gränserna är undefined
ScanIndexForwardNejAnvänd false för att välja de senaste sessionerna först

Hämta de senaste 40 sessionerna

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

Hämta sessioner inom ett UTC-intervall

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

När båda tidsgränserna finns returnerar API:t sessioner i hela intervallet; num_sessions begränsar inte den avgränsade frågan.

Exempelsvar

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

Valfria fält varierar mellan sessioner. Behåll customer_id, start_timestamp_ms och end_timestamp_ms om du planerar att hämta den fullständiga tidslinjen.

Affärsanvändningsfall

  • Granska ett urval av senaste konversationer för svarskvalitet och supportutbildning.
  • Hitta återkommande kundfrågor som bör påverka produkttexter eller FAQ:er.
  • Identifiera sessioner med hög intention som innehåller sökningar, produktklick eller andra shoppingåtgärder.
  • Exportera en rad per session för trendanalys samtidigt som du undviker den större nyttolasten på händelsenivå.

5. Hämta en fullständig session

Skicka en vald sammanfattning till query_log_visualization för att hämta dess kund-, AI-, sök- och commerce-händelser.

Endpoint

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

Query-parametrar

ParameterKrävsBeskrivning
date_time_utc_startJaSessionsstart formaterad som UTC YYYY-MM-DD HH:mm:ss
date_time_utc_endJaSessionsslut formaterad som UTC YYYY-MM-DD HH:mm:ss
session_idNejSammanfattningens customer_id, används för äldre historikposter
start_timestamp_msRekommenderasSammanfattningens exakta starttidsstämpel i millisekunder

Python-exempel

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

Exempelsvar

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

Tidslinjen kan innehålla kundfrågor, AI-svar, sökresultat, produktklick, lägg-till-i-kundvagn-händelser, checkout-händelser och deltagande från mänsklig agent. Använd server_timestamp_ms för att ordna blandade händelsetyper. Äldre poster kan innehålla färre fält.

Affärsanvändningsfall

  • Granska exakt vad en kund frågade och vad Shoply svarade under en supportutredning.
  • Granska svarskvalitet tillsammans med sökresultaten och produkterna som visades för kunden.
  • Återskapa resan från fråga till klick, lägg-till-i-kundvagn eller checkout.
  • Diagnostisera en session som rapporterats av en kund utan att söka igenom orelaterad historik.

Kan jag använda en hemlighet för varje API?

Ja. En giltig store_owner_api_secrete är avgränsad till en butik och fungerar för Merchant API-endpointsen ovan. För SiteChat-konton autentiserar samma hemlighet även API:erna för kataloguppladdning. För säkrare drift bör du använda separata namngivna hemligheter för separata system — till exempel en för nattlig dataexport och en annan för en intern dashboard.

Om en integration tas ur bruk eller komprometteras, återkalla endast dess hemlighet i Shoply Settings. De andra integrationerna kommer att fortsätta fungera.

Vad bör jag veta om utgångstid, integritet och fel?

Granska också Shoplys datakällor och integritet för att förstå vilken information som är tillgänglig för kundsvar.

  • API-hemligheter för butiksägare löper ut efter 90 dagar. Skapa en ersättning och uppdatera integrationen före dess utgångsdatum.
  • Shoplys standardperiod för lagring av chatt- och sökhistorik är också 90 dagar. Hemlighetens utgångstid och datalagring är separata policyer.
  • Historiksvar kan innehålla personuppgifter, inklusive kundidentifierare, e-postadresser, ungefärlig plats, frågor och shoppingaktivitet. Lagra och behandla dem enligt din integritetspolicy och tillämplig lag.
  • HTTP 403 betyder att hemligheten saknas, är ogiltig, har gått ut, har återkallats eller tillhör en annan butik.
  • HTTP 422 betyder vanligtvis att en obligatorisk query-parameter saknas eller har fel namn.
  • HTTP 500 eller ett svar med statusCode: 500 betyder att begäran nådde Shoply men inte kunde slutföras. Försök igen vid tillfälliga fel med backoff och kontakta oss om felet kvarstår.
  • Använd avgränsade UTC-intervall för exporter och återkommande jobb så att svaren förblir hanterbara.

Är produktsökning en del av Merchant API?

Shoplys publika API för produktsökning har en annan autentisering och ett annat request contract. Se Så får du åtkomst till Shoply AI Search via API om du vill ha produktsökresultat för en kundvänd upplevelse snarare än privat handlarinformation.

Kan SiteChat-handlare ladda upp en produktkatalog?

Ja. SiteChat-konton kan ladda upp strukturerade produkter och produktbilder med samma API-hemlighet för butiksägare. Dessa katalog-endpoints dokumenteras separat i Så laddar du upp din katalog för SiteChat. Shopify-butiker fortsätter att synkronisera produkter via Shopify och använder inte dessa uppladdningsvägar.

För hjälp med en integration, kontakta Shoply AI.