Comment utiliser l’API Merchant de Shoply
L’API Merchant de Shoply permet à un marchand d’utiliser en toute sécurité ses propres données Shoply dans des outils de reporting, des workflows de support, des exportations planifiées et des applications métier privées.
Chaque intégration s’authentifie avec un identifiant révocable, limité à la boutique, créé dans les paramètres de Shoply. Vous n’avez pas besoin de partager un jeton d’accès à l’API Shopify Admin, et une intégration ne peut accéder qu’à la boutique qui a émis son identifiant.
Que puis-je faire avec l’API Merchant ?
Vous pouvez utiliser l’API Merchant pour :
- Exporter des résultats de performance quotidiens, hebdomadaires ou mensuels vers une feuille de calcul ou un entrepôt de données.
- Créer un tableau de bord privé pour les sessions, chats, recherches, clics sur les produits, événements d’ajout au panier, achats et revenus attribués.
- Surveiller l’activité des clients et détecter des changements inhabituels dans l’engagement.
- Examiner les sessions de chat et de recherche pour le support, le merchandising et le travail sur la qualité des réponses.
- Récupérer la chronologie d’une conversation individuelle lors de l’investigation d’un problème client.
- Créer, mettre à jour, lister et supprimer les connaissances personnalisées utilisées par Shoply AI.
- Ajouter une page web externe ou un fichier PDF, texte ou Markdown téléchargé à la base de connaissances.
- Aligner les données d’événements UTC avec le fuseau horaire local de la boutique.
Ce guide documente sept endpoints. Cinq sont les mêmes endpoints que ceux utilisés par Shoply Admin → Analytics, tandis que deux gèrent la base de connaissances :
| API | Catégorie | Ce qu’elle renvoie |
|---|---|---|
admin_store_analytics | Performance | Lignes et totaux de performance quotidiens, hebdomadaires ou mensuels |
query_api_usage_count | Engagement | Comptes d’activité regroupés par minute UTC ou par jour |
query_sessionized_chat | Conversations | Résumés des sessions de chat et de recherche |
query_log_visualization | Conversations | La chronologie complète des événements pour une session sélectionnée |
admin_get_store_metadata | Configuration de la boutique | Le fuseau horaire de la boutique utilisé pour afficher correctement les données UTC |
admin_store_knowledge | Connaissances | Texte personnalisé, pages externes, fichiers téléchargés, suppression et nouveau crawl |
user_generated_file | Fichiers de connaissances | Téléverse un fichier PDF, texte ou Markdown avant qu’il soit enregistré comme connaissance |
Les corps de réponse ci-dessous sont des exemples représentatifs. Vos champs et valeurs refléteront l’activité enregistrée pour votre boutique.
Exigence de déploiement : L’authentification par secret propriétaire de boutique doit être déployée sur le serveur API que vous appelez. Si un secret valide renvoie HTTP
403avecNo access_token found, ce serveur exécute encore l’ancien code d’authentification limité aux jetons d’accès.
Comment créer un secret d’API ?
- Ouvrez votre interface d’administration Shoply AI.
- Allez dans Settings → Store owner API secret.
- Créez un secret et donnez-lui un nom qui identifie l’intégration, par exemple
Weekly reporting export. - Copiez le secret lorsqu’il apparaît. Shoply n’affiche la valeur en clair qu’une seule fois.
Chaque secret est valable 90 jours. Une boutique peut avoir des secrets distincts pour des intégrations distinctes, et vous pouvez révoquer un secret sans interrompre les autres.
Enregistrez ces valeurs comme variables d’environnement côté serveur :
export SHOPLY_STORE_KEY="your-store.myshopify.com"
export SHOPLY_STORE_OWNER_API_SECRETE="shoply_owner_key_example123.secret-value"Utilisez le domaine myshopify.com permanent de la boutique pour SHOPLY_STORE_KEY, même si les acheteurs visitent habituellement un domaine personnalisé.

Comment fonctionne l’authentification ?
Chaque requête vers l’API Merchant envoie un en-tête Authorization dont la valeur est une chaîne JSON :
{
"store_key": "your-store.myshopify.com",
"store_owner_api_secrete": "YOUR_STORE_OWNER_API_SECRET"
}store_owner_api_secrete est le nom exact du champ public, y compris son orthographe historique. Ce n’est pas un jeton Bearer. Placez la chaîne JSON complète directement dans l’en-tête Authorization.
Conservez le secret uniquement dans le code backend. Ne le placez pas dans une URL, un bundle navigateur, un dépôt public, un événement analytics ou un journal d’application.
Existe-t-il des packages officiels Python et Node.js ?
Oui. Shoply publie deux packages côté serveur qui ajoutent automatiquement l’authentification requise et exposent l’API Merchant sous forme de fonctions typées. Les deux packages sont open source sous l’organisation GitHub shoplyai-public.
Package Python
Le package shoply-merchant-api prend en charge Python 3.12 et utilise des modèles de réponse Pydantic v2. Installez la version 2.1.3 épinglée :
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"Récupérez les sessions de chat et de recherche les plus récentes sous forme de modèles typés 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)Le package fournit également des fonctions pour l’analytics, les comptes d’activité, les chronologies complètes de session, le fuseau horaire de la boutique et la gestion des connaissances. Consultez son guide des cas d’usage métier et sa référence API .
Package Node.js et TypeScript
Le dépôt shoply-merchant-api-js fournit le package @shoplyai/merchant-api pour Node.js 20 ou plus récent. C’est un package ESM avec des déclarations TypeScript intégrées et sans dépendances d’exécution. Installez la version 2.1.3 épinglée directement depuis GitHub :
npm install "github:shoplyai-public/shoply-merchant-api-js#v2.1.3"Récupérez les mêmes sessions les plus récentes depuis un serveur 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);
}Le package npm couvre les mêmes endpoints de l’API Merchant que le package Python. Consultez son guide des cas d’usage métier et sa référence API .
Les deux packages sont destinés aux services backend de confiance, aux tâches planifiées et aux outils internes privés. N’importez aucun de ces packages dans le code storefront et n’exposez pas le secret d’API dans un bundle navigateur.
Puis-je appeler l’API HTTP sans package ?
Oui. L’API Merchant reste une API HTTPS standard. Les exemples Python de bas niveau ci-dessous utilisent Requests afin que vous puissiez voir le contrat réseau complet ou intégrer depuis un autre langage.
Installez Requests si votre environnement ne l’inclut pas déjà :
python -m pip install requestsL’assistant ci-dessous ajoute la clé de boutique et l’en-tête d’authentification à chaque requête :
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 resultLes exemples ci-dessous utilisent ce client partagé. Les deux assistants ajoutent automatiquement la clé de boutique authentifiée.
Puis-je gérer les connaissances de Shoply AI via l’API ?
Oui. admin_store_knowledge utilise GET pour récupérer les connaissances et POST pour les créer, les mettre à jour, les supprimer ou relancer leur crawl. Un POST qui utilise un ID de connaissance existant met à jour cette entrée ; l’utilisation d’un nouvel ID en crée une.
Avant d’automatiser les mises à jour, planifiez des connaissances utiles pour la boutique à l’aide des exemples de notre guide d’entraînement.
Les écritures de connaissances peuvent modifier les réponses affichées aux acheteurs. Utilisez un secret dédié pour le système qui gère les connaissances, validez le contenu avant de l’envoyer et n’exposez jamais cet identifiant avec droits d’écriture dans le JavaScript storefront.
Lister les connaissances existantes
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"))Exemple de réponse
{
"data": {
"knowledge::shipping-policy": {
"title": "Shipping policy",
"text": "Orders leave our warehouse within two business days.",
"epoch_edit": 1787211246
}
}
}Créer ou mettre à jour des connaissances textuelles personnalisées
Choisissez un ID de connaissance stable et unique. Réutilisez le même ID lors de la mise à jour de cette entrée.
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)Exemple de réponse
{
"statusCode": 200
}Une réponse réussie signifie que la connaissance a été enregistrée. L’indexation pour la recherche peut prendre quelques minutes, donc une nouvelle réponse peut ne pas apparaître immédiatement. Si l’API indique que le contenu a été enregistré mais que l’indexation est retardée, confirmez l’entrée enregistrée avec GET avant de réessayer l’écriture.
Ajouter une page web externe
Utilisez un ID commençant par external_url::. Placez l’URL complète http:// ou https:// dans 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()),
}
},
)Téléverser et enregistrer un fichier de connaissances
Les fichiers de connaissances doivent être au format PDF, TXT ou Markdown et faire moins de 5 Mo. Téléversez d’abord le fichier, puis enregistrez l’emplacement privé S3 renvoyé comme entrée de connaissance.
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()),
}
},
)Exemple de réponse au téléversement
{
"message": "File uploaded successfully",
"statusCode": 200,
"file_url": "s3://shoplystores/your-store.myshopify.com/uploads/shipping-policy.md"
}Considérez file_url comme un emplacement privé opaque renvoyé par Shoply. Ne le construisez pas et ne le modifiez pas vous-même.
Supprimer des connaissances
La suppression est permanente. Récupérez d’abord les entrées actuelles et envoyez uniquement les ID exacts que vous souhaitez supprimer.
result = shoply_post(
"admin_store_knowledge",
{
"knowledge_ids_to_delete": [
"knowledge::shipping-policy",
"external_url::returns-policy",
"knowledge_file::shipping-policy",
]
},
)Demander un nouveau crawl du site web
Utilisez un nouveau crawl après modification du contenu sur le site web du marchand. Cela n’est normalement pas nécessaire après chaque mise à jour de texte personnalisé.
result = shoply_post(
"admin_store_knowledge",
re_crawl_ind="true",
)Cas d’usage métier
- Synchroniser les consignes de livraison, retours, garantie, tailles ou entretien des produits depuis un système de contenu interne.
- Publier des informations temporaires de campagne ou de fêtes sans les recopier manuellement dans Shoply Admin.
- Ajouter une page de politique ou un document approuvé à la base de connaissances dans le cadre d’un workflow de déploiement.
- Supprimer des consignes obsolètes dès qu’une politique ou une promotion prend fin.
Exemples d’API Merchant
1. Récupérer les analyses de performance
admin_store_analytics alimente le tableau Analytics → Summary. Il renvoie les sessions, chats, recherches, clics, événements d’ajout au panier, achats et revenus attribués.
Endpoint
GET https://api.shoplyai.ai/admin_store_analyticsParamètres de requête
| Paramètre | Obligatoire | Description |
|---|---|---|
store_key | Oui | Ajouté par le client partagé |
report_type | Oui | daily, weekly ou monthly |
start_date | Quotidien/hebdomadaire | Date UTC inclusive au format YYYYMMDD |
end_date | Quotidien/hebdomadaire | Date UTC inclusive au format YYYYMMDD |
Les rapports mensuels utilisent l’historique mensuel enregistré par Shoply et ne nécessitent pas de bornes de date.
Exemple 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")Exemple de réponse
{
"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"
}Le revenu peut contenir plus d’une devise. Traitez revenue comme un texte d’affichage. Utilisez revenue_usd lorsque vous avez besoin de la valeur normalisée en USD affichée par Shoply.
Cas d’usage métier
- Envoyer un résumé quotidien de l’impact sur les ventes au marchand ou à l’équipe ecommerce.
- Comparer les recherches, clics sur les produits, événements d’ajout au panier et achats pour trouver les pertes dans l’entonnoir.
- Alimenter un tableau de bord de business intelligence hebdomadaire ou mensuel sans scraper la page Shoply Admin.
- Suivre les revenus attribués dans le temps et les comparer aux changements de merchandising ou de campagne.
2. Récupérer le fuseau horaire de la boutique
admin_get_store_metadata fournit le badge de fuseau horaire affiché dans Analytics → Chat & Search History. La page l’utilise pour convertir l’activité UTC en heure locale de la boutique.
Endpoint
GET https://api.shoplyai.ai/admin_get_store_metadataParamètres de requête
| Paramètre | Obligatoire | Description |
|---|---|---|
store_key | Oui | Ajouté par le client partagé |
metadata_key | Oui | Utilisez la valeur littérale time_zone |
Exemple Python
timezone_payload = shoply_get(
"admin_get_store_metadata",
metadata_key="time_zone",
)
timezone = timezone_payload["data"]
print(timezone["ianaTimezone"], timezone["timezoneOffsetMinutes"])Exemple de réponse
{
"data": {
"ianaTimezone": "America/Los_Angeles",
"timezoneOffset": -7,
"timezoneOffsetMinutes": -420
},
"statusCode": 200
}Cas d’usage métier
- Regrouper l’activité UTC dans les mêmes jours calendaires locaux que ceux que le marchand voit dans Analytics.
- Planifier les exportations quotidiennes après la fin de la journée locale de la boutique.
- Étiqueter les rapports avec un fuseau horaire IANA sans ambiguïté tel que
America/Los_Angeles.
Les décalages de fuseau horaire peuvent changer à cause des règles d’heure d’été. Préférez ianaTimezone lorsque votre système de reporting le prend en charge, au lieu d’enregistrer définitivement un décalage numérique unique.
3. Récupérer les comptes d’activité
query_api_usage_count renvoie l’activité de la boutique regroupée par date UTC ou par minute UTC d’origine. C’est aussi la source du graphique d’activité dans Analytics → Chat & Search History.
Endpoint
GET https://api.shoplyai.ai/query_api_usage_countParamètres de requête
| Paramètre | Obligatoire | Description |
|---|---|---|
start_dt_utc | Oui | Heure de début UTC au format YYYY-MM-DD HH:mm:ss |
end_dt_utc | Oui | Heure de fin UTC au format YYYY-MM-DD HH:mm:ss |
groupby | Non | utc_date pour les totaux quotidiens ou utc_date_time pour les lignes à la minute |
Exemple 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)Exemple de réponse
{
"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
}
]
}Les lignes incluent les compteurs d’activité disponibles pour cette période, comme les questions de chat, les recherches, les clics, les événements d’ajout au panier et les événements de checkout. Les compteurs sans activité peuvent être absents au lieu d’être définis à zéro.
Cas d’usage métier
- Construire un graphique d’activité horaire ou quotidien comme celui de Chat & Search History.
- Détecter des pics de trafic inhabituels ou des baisses soudaines de l’engagement client.
- Comparer le volume de recherche produit avec les clics, les événements d’ajout au panier et les checkouts.
- Estimer quand les équipes de support et de merchandising doivent examiner les périodes les plus chargées.
4. Récupérer les résumés des sessions de chat et de recherche
query_sessionized_chat renvoie un enregistrement compact par session client. Il alimente aussi la liste des sessions dans Analytics → Chat & Search History.
Endpoint
GET https://api.shoplyai.ai/query_sessionized_chatParamètres de requête
| Paramètre | Obligatoire | Description |
|---|---|---|
start_dt_utc | Oui | Heure de début UTC, ou la valeur littérale undefined |
end_dt_utc | Oui | Heure de fin UTC, ou la valeur littérale undefined |
num_sessions | Non | Nombre de sessions à sélectionner lorsque l’une des bornes vaut undefined |
ScanIndexForward | Non | Utilisez false pour sélectionner d’abord les sessions les plus récentes |
Récupérer les 40 dernières sessions
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", ""))Récupérer des sessions dans une plage 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",
)Lorsque les deux bornes temporelles sont présentes, l’API renvoie les sessions dans toute la plage ; num_sessions ne limite pas cette requête bornée.
Exemple de réponse
{
"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
}
]
}Les champs optionnels varient selon la session. Conservez customer_id, start_timestamp_ms et end_timestamp_ms si vous prévoyez de récupérer la chronologie complète.
Cas d’usage métier
- Examiner un échantillon de conversations récentes pour la qualité des réponses et la formation du support.
- Trouver des questions clients répétées qui devraient influencer les fiches produit ou les FAQ.
- Identifier des sessions à forte intention contenant des recherches, des clics sur les produits ou d’autres actions d’achat.
- Exporter une ligne par session pour l’analyse de tendances tout en évitant la charge utile plus importante au niveau des événements.
5. Récupérer une session complète
Passez un résumé sélectionné à query_log_visualization pour récupérer ses événements client, IA, recherche et commerce.
Endpoint
GET https://api.shoplyai.ai/query_log_visualizationParamètres de requête
| Paramètre | Obligatoire | Description |
|---|---|---|
date_time_utc_start | Oui | Début de session formaté en UTC YYYY-MM-DD HH:mm:ss |
date_time_utc_end | Oui | Fin de session formatée en UTC YYYY-MM-DD HH:mm:ss |
session_id | Non | Le customer_id du résumé, utilisé pour les anciens enregistrements d’historique |
start_timestamp_ms | Recommandé | L’horodatage exact de début en millisecondes du résumé |
Exemple 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"))Exemple de réponse
{
"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": {}
}
]
}La chronologie peut contenir des questions client, des réponses de l’IA, des résultats de recherche, des clics sur les produits, des événements d’ajout au panier, des événements de checkout et la participation d’agents humains. Utilisez server_timestamp_ms pour ordonner des types d’événements mixtes. Les anciens enregistrements peuvent contenir moins de champs.
Cas d’usage métier
- Auditer exactement ce qu’un client a demandé et ce que Shoply a répondu lors d’une enquête de support.
- Examiner la qualité des réponses avec les résultats de recherche et les produits montrés à l’acheteur.
- Reconstituer le parcours de la question jusqu’au clic, à l’ajout au panier ou au checkout.
- Diagnostiquer une session signalée par un client sans rechercher dans un historique non pertinent.
Puis-je utiliser un seul secret pour toutes les API ?
Oui. Un store_owner_api_secrete valide est limité à une boutique et fonctionne sur les endpoints de l’API Merchant ci-dessus. Pour les comptes SiteChat, le même secret authentifie également les API de téléversement de catalogue. Pour des opérations plus sûres, utilisez des secrets nommés distincts pour des systèmes distincts — par exemple, un pour une exportation de données nocturne et un autre pour un tableau de bord interne.
Si une intégration est retirée ou compromise, révoquez uniquement son secret dans les paramètres Shoply. Les autres intégrations continueront de fonctionner.
Que faut-il savoir sur l’expiration, la confidentialité et les erreurs ?
Consultez également les sources de données et la confidentialité de Shoply pour comprendre quelles informations sont disponibles pour les réponses client.
- Les secrets d’API propriétaire de boutique expirent après 90 jours. Créez un remplacement et mettez à jour l’intégration avant sa date d’expiration.
- La période standard de conservation de l’historique des chats et recherches de Shoply est aussi de 90 jours. L’expiration des secrets et la conservation des données sont des politiques distinctes.
- Les réponses d’historique peuvent contenir des données personnelles, notamment des identifiants client, des adresses e-mail, une localisation approximative, des questions et de l’activité d’achat. Stockez-les et traitez-les conformément à votre politique de confidentialité et à la loi applicable.
- HTTP
403signifie que le secret est manquant, invalide, expiré, révoqué ou appartient à une autre boutique. - HTTP
422signifie généralement qu’un paramètre de requête requis est manquant ou porte un nom incorrect. - HTTP
500ou une réponse contenantstatusCode: 500signifie que la requête a atteint Shoply mais n’a pas pu être traitée. Réessayez les échecs temporaires avec backoff et contactez-nous si l’erreur persiste. - Utilisez des plages UTC bornées pour les exportations et les tâches récurrentes afin que les réponses restent gérables.
La recherche de produits fait-elle partie de l’API Merchant ?
L’API publique de recherche de produits de Shoply utilise une authentification et un contrat de requête différents. Consultez Comment accéder à Shoply AI Search via l’API si vous souhaitez obtenir des résultats de recherche de produits pour une expérience destinée aux acheteurs plutôt que des données marchandes privées.
Les marchands SiteChat peuvent-ils téléverser un catalogue produit ?
Oui. Les comptes SiteChat peuvent téléverser des produits structurés et des images de produits avec le même secret d’API propriétaire de boutique. Ces endpoints de catalogue sont documentés séparément dans Comment téléverser votre catalogue pour SiteChat. Les boutiques Shopify continuent de synchroniser les produits via Shopify et n’utilisent pas ces routes de téléversement.
Pour obtenir de l’aide sur une intégration, contactez Shoply AI.
