Cómo usar la API Merchant de Shoply
La API Merchant de Shoply permite a un comerciante usar de forma segura sus propios datos de Shoply en herramientas de informes, flujos de trabajo de soporte, exportaciones programadas y aplicaciones empresariales privadas.
Cada integración se autentica con una credencial revocable, con alcance limitado a la tienda, creada en la configuración de Shoply. No necesitas compartir un token de acceso de la API de Shopify Admin, y una integración solo puede acceder a la tienda que emitió su credencial.
¿Qué puedo hacer con la API Merchant?
Puedes usar la API Merchant para:
- Exportar resultados de rendimiento diarios, semanales o mensuales a una hoja de cálculo o almacén de datos.
- Crear un panel privado para sesiones, chats, búsquedas, clics en productos, eventos de agregar al carrito, compras e ingresos atribuidos.
- Supervisar la actividad de los clientes y descubrir cambios inusuales en la interacción.
- Revisar sesiones de chat y búsqueda para soporte, merchandising y trabajo de calidad de respuestas.
- Recuperar la cronología de una conversación individual al investigar un problema de un cliente.
- Crear, actualizar, listar y eliminar el conocimiento personalizado usado por Shoply AI.
- Añadir una página web externa o un archivo PDF, de texto o Markdown subido a la base de conocimiento.
- Alinear los datos de eventos en UTC con la zona horaria local de la tienda.
Esta guía documenta siete endpoints. Cinco son los mismos endpoints usados por Shoply Admin → Analytics, mientras que dos gestionan la base de conocimiento:
| API | Categoría | Qué devuelve |
|---|---|---|
admin_store_analytics | Rendimiento | Filas y totales de rendimiento diarios, semanales o mensuales |
query_api_usage_count | Interacción | Conteos de actividad agrupados por minuto UTC o por día |
query_sessionized_chat | Conversaciones | Resúmenes de sesiones de chat y búsqueda |
query_log_visualization | Conversaciones | La cronología completa de eventos para una sesión seleccionada |
admin_get_store_metadata | Configuración de la tienda | La zona horaria de la tienda usada para mostrar correctamente los datos UTC |
admin_store_knowledge | Conocimiento | Texto personalizado, páginas externas, archivos subidos, eliminación y recrawl |
user_generated_file | Archivos de conocimiento | Sube un archivo PDF, de texto o Markdown antes de registrarlo como conocimiento |
Los cuerpos de respuesta a continuación son muestras representativas. Tus campos y valores reflejarán la actividad registrada para tu tienda.
Requisito de despliegue: La autenticación con secreto de propietario de tienda debe estar desplegada en el servidor de API al que llamas. Si un secreto válido devuelve HTTP
403conNo access_token found, ese servidor todavía está ejecutando el código antiguo de autenticación solo con access token.
¿Cómo creo un secreto de API?
- Abre tu panel de administración de Shoply AI.
- Ve a Settings → Store owner API secret.
- Crea un secreto y asígnale un nombre que identifique la integración, como
Weekly reporting export. - Copia el secreto cuando aparezca. Shoply muestra el valor en texto plano solo una vez.
Cada secreto es válido durante 90 días. Una tienda puede tener secretos separados para integraciones separadas, y puedes revocar un secreto sin interrumpir los demás.
Guarda estos valores como variables de entorno del lado del servidor:
export SHOPLY_STORE_KEY="your-store.myshopify.com"
export SHOPLY_STORE_OWNER_API_SECRETE="shoply_owner_key_example123.secret-value"Usa el dominio permanente myshopify.com de la tienda para SHOPLY_STORE_KEY, incluso si los compradores normalmente visitan un dominio personalizado.

¿Cómo funciona la autenticación?
Cada solicitud a la API Merchant envía una cabecera Authorization cuyo valor es una cadena JSON:
{
"store_key": "your-store.myshopify.com",
"store_owner_api_secrete": "YOUR_STORE_OWNER_API_SECRET"
}store_owner_api_secrete es el nombre exacto del campo público, incluida su ortografía histórica. Esto no es un token Bearer. Coloca la cadena JSON completa directamente en la cabecera Authorization.
Mantén el secreto solo en código backend. No lo coloques en una URL, bundle del navegador, repositorio público, evento analítico o registro de aplicación.
¿Hay paquetes oficiales para Python y Node.js?
Sí. Shoply publica dos paquetes del lado del servidor que añaden automáticamente la autenticación requerida y exponen la API Merchant como funciones tipadas. Ambos paquetes son de código abierto bajo la organización de GitHub shoplyai-public.
Paquete de Python
El paquete shoply-merchant-api es compatible con Python 3.12 y usa modelos de respuesta Pydantic v2. Instala la versión fijada 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"Recupera las sesiones de chat y búsqueda más recientes como modelos tipados 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)El paquete también proporciona funciones para analíticas, conteos de actividad, cronologías completas de sesiones, zona horaria de la tienda y gestión de conocimiento. Consulta su guía de casos de uso empresariales y su referencia de API .
Paquete de Node.js y TypeScript
El repositorio shoply-merchant-api-js proporciona el paquete @shoplyai/merchant-api para Node.js 20 o versiones posteriores. Es un paquete ESM con declaraciones TypeScript integradas y sin dependencias en tiempo de ejecución. Instala la versión fijada 2.1.3 directamente desde GitHub:
npm install "github:shoplyai-public/shoply-merchant-api-js#v2.1.3"Recupera esas mismas sesiones más recientes desde un servidor 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);
}El paquete npm cubre los mismos endpoints de la API Merchant que el paquete de Python. Consulta su guía de casos de uso empresariales y su referencia de API .
Ambos paquetes son para servicios backend de confianza, tareas programadas y herramientas internas privadas. No importes ninguno de los dos paquetes en código storefront ni expongas el secreto de API en un bundle del navegador.
¿Puedo llamar a la API HTTP sin un paquete?
Sí. La API Merchant sigue siendo una API HTTPS estándar. Los ejemplos de bajo nivel en Python a continuación usan Requests para que puedas ver el contrato completo en la conexión o integrar desde otro lenguaje.
Instala Requests si tu entorno todavía no lo incluye:
python -m pip install requestsEl helper siguiente añade la store key y la cabecera de autenticación a cada solicitud:
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 resultLos ejemplos a continuación usan este cliente compartido. Ambos helpers añaden automáticamente la store key autenticada.
¿Puedo gestionar el conocimiento de Shoply AI a través de la API?
Sí. admin_store_knowledge usa GET para recuperar conocimiento y POST para crearlo, actualizarlo, eliminarlo o volver a rastrearlo. Un POST que usa un ID de conocimiento existente actualiza esa entrada; usar un ID nuevo crea una.
Antes de automatizar actualizaciones, planifica conocimiento útil para la tienda con los ejemplos de nuestra guía de entrenamiento.
Las escrituras de conocimiento pueden cambiar las respuestas mostradas a los compradores. Usa un secreto dedicado para el sistema que gestiona conocimiento, valida el contenido antes de enviarlo y nunca expongas esta credencial con capacidad de escritura en JavaScript del storefront.
Listar conocimiento 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"))Respuesta de ejemplo
{
"data": {
"knowledge::shipping-policy": {
"title": "Shipping policy",
"text": "Orders leave our warehouse within two business days.",
"epoch_edit": 1787211246
}
}
}Crear o actualizar conocimiento de texto personalizado
Elige un ID de conocimiento estable y único. Reutiliza el mismo ID al actualizar esa entrada.
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)Respuesta de ejemplo
{
"statusCode": 200
}Una respuesta correcta significa que el conocimiento se guardó. La indexación de búsqueda puede tardar unos minutos, por lo que una respuesta nueva puede no aparecer inmediatamente. Si la API informa que el contenido se guardó pero la indexación se retrasa, confirma la entrada almacenada con GET antes de reintentar la escritura.
Añadir una página web externa
Usa un ID que comience con external_url::. Coloca la URL completa http:// o https:// en 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()),
}
},
)Subir y registrar un archivo de conocimiento
Los archivos de conocimiento deben ser PDF, TXT o Markdown y tener un tamaño inferior a 5 MB. Sube primero el archivo y luego guarda la ubicación privada de S3 devuelta como una entrada de conocimiento.
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()),
}
},
)Respuesta de ejemplo de la subida
{
"message": "File uploaded successfully",
"statusCode": 200,
"file_url": "s3://shoplystores/your-store.myshopify.com/uploads/shipping-policy.md"
}Trata file_url como una ubicación privada opaca devuelta por Shoply. No la construyas ni la cambies tú mismo.
Eliminar conocimiento
La eliminación es permanente. Recupera primero las entradas actuales y envía solo los IDs exactos que pretendes eliminar.
result = shoply_post(
"admin_store_knowledge",
{
"knowledge_ids_to_delete": [
"knowledge::shipping-policy",
"external_url::returns-policy",
"knowledge_file::shipping-policy",
]
},
)Solicitar un nuevo rastreo del sitio web
Usa un recrawl después de que cambie el contenido en el sitio web del comerciante. Normalmente no es necesario después de cada actualización de texto personalizado.
result = shoply_post(
"admin_store_knowledge",
re_crawl_ind="true",
)Casos de uso empresariales
- Sincronizar orientación sobre envíos, devoluciones, garantía, tallas o cuidado del producto desde un sistema interno de contenido.
- Publicar información temporal de campañas o festivos sin copiarla manualmente en Shoply Admin.
- Añadir una página web de políticas o un documento aprobado a la base de conocimiento como parte de un flujo de despliegue.
- Eliminar orientación obsoleta tan pronto como termine una política o promoción.
Ejemplos de la API Merchant
1. Recuperar analíticas de rendimiento
admin_store_analytics impulsa la tabla Analytics → Summary. Devuelve sesiones, chats, búsquedas, clics, eventos de agregar al carrito, compras e ingresos atribuidos.
Endpoint
GET https://api.shoplyai.ai/admin_store_analyticsParámetros de consulta
| Parameter | Required | Description |
|---|---|---|
store_key | Yes | Añadido por el cliente compartido |
report_type | Yes | daily, weekly o monthly |
start_date | Daily/weekly | Fecha UTC inclusiva con formato YYYYMMDD |
end_date | Daily/weekly | Fecha UTC inclusiva con formato YYYYMMDD |
Los informes mensuales usan el historial mensual almacenado por Shoply y no requieren límites de fecha.
Ejemplo en 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")Respuesta de ejemplo
{
"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"
}Los ingresos pueden contener más de una moneda. Trata revenue como texto de visualización. Usa revenue_usd cuando necesites el valor normalizado en USD mostrado por Shoply.
Casos de uso empresariales
- Enviar un resumen diario del impacto en ventas al comerciante o al equipo de ecommerce.
- Comparar búsquedas, clics en productos, eventos de agregar al carrito y compras para encontrar pérdidas en el embudo.
- Alimentar un panel semanal o mensual de business intelligence sin hacer scraping de la página de Shoply Admin.
- Hacer seguimiento de los ingresos atribuidos a lo largo del tiempo y compararlos con cambios de merchandising o campañas.
2. Recuperar la zona horaria de la tienda
admin_get_store_metadata proporciona la insignia de zona horaria mostrada en Analytics → Chat & Search History. La página la usa para traducir la actividad UTC a la hora local de la tienda.
Endpoint
GET https://api.shoplyai.ai/admin_get_store_metadataParámetros de consulta
| Parameter | Required | Description |
|---|---|---|
store_key | Yes | Añadido por el cliente compartido |
metadata_key | Yes | Usa el valor literal time_zone |
Ejemplo en Python
timezone_payload = shoply_get(
"admin_get_store_metadata",
metadata_key="time_zone",
)
timezone = timezone_payload["data"]
print(timezone["ianaTimezone"], timezone["timezoneOffsetMinutes"])Respuesta de ejemplo
{
"data": {
"ianaTimezone": "America/Los_Angeles",
"timezoneOffset": -7,
"timezoneOffsetMinutes": -420
},
"statusCode": 200
}Casos de uso empresariales
- Agrupar actividad UTC en los mismos días de calendario locales que el comerciante ve en Analytics.
- Programar exportaciones diarias después de que haya terminado el día local de la tienda.
- Etiquetar informes con una zona horaria IANA inequívoca como
America/Los_Angeles.
Los desfases de zona horaria pueden cambiar debido a reglas de horario de verano. Prefiere ianaTimezone cuando tu sistema de informes lo admita en lugar de guardar permanentemente un único desfase numérico.
3. Recuperar conteos de actividad
query_api_usage_count devuelve la actividad de la tienda agrupada por fecha UTC o por el minuto UTC original. También es la fuente del gráfico de actividad en Analytics → Chat & Search History.
Endpoint
GET https://api.shoplyai.ai/query_api_usage_countParámetros de consulta
| Parameter | Required | Description |
|---|---|---|
start_dt_utc | Yes | Hora de inicio UTC como YYYY-MM-DD HH:mm:ss |
end_dt_utc | Yes | Hora de fin UTC como YYYY-MM-DD HH:mm:ss |
groupby | No | utc_date para totales diarios o utc_date_time para filas por minuto |
Ejemplo en 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)Respuesta de ejemplo
{
"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
}
]
}Las filas incluyen los contadores de actividad disponibles para ese período, como preguntas de chat, búsquedas, clics, eventos de agregar al carrito y eventos de checkout. Los contadores sin actividad pueden estar ausentes en lugar de aparecer en cero.
Casos de uso empresariales
- Crear un gráfico de actividad por hora o por día como el de Chat & Search History.
- Detectar picos inusuales de tráfico o caídas repentinas en la interacción de los clientes.
- Comparar el volumen de búsqueda de productos con clics, eventos de agregar al carrito y checkouts.
- Estimar cuándo los equipos de soporte y merchandising deben revisar los períodos más activos.
4. Recuperar resúmenes de sesiones de chat y búsqueda
query_sessionized_chat devuelve un registro compacto por cada sesión del cliente. También impulsa la lista de sesiones en Analytics → Chat & Search History.
Endpoint
GET https://api.shoplyai.ai/query_sessionized_chatParámetros de consulta
| Parameter | Required | Description |
|---|---|---|
start_dt_utc | Yes | Hora de inicio UTC, o el valor literal undefined |
end_dt_utc | Yes | Hora de fin UTC, o el valor literal undefined |
num_sessions | No | Número de sesiones a seleccionar cuando cualquiera de los límites es undefined |
ScanIndexForward | No | Usa false para seleccionar primero las sesiones más recientes |
Recuperar las últimas 40 sesiones
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", ""))Recuperar sesiones en un rango 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",
)Cuando ambos límites de tiempo están presentes, la API devuelve las sesiones del rango completo; num_sessions no limita esa consulta acotada.
Respuesta de ejemplo
{
"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
}
]
}Los campos opcionales varían según la sesión. Conserva customer_id, start_timestamp_ms y end_timestamp_ms si planeas recuperar la cronología completa.
Casos de uso empresariales
- Revisar una muestra de conversaciones recientes para evaluar la calidad de las respuestas y la capacitación de soporte.
- Encontrar preguntas repetidas de clientes que deberían influir en el texto de producto o en las FAQ.
- Identificar sesiones de alta intención que contienen búsquedas, clics en productos u otras acciones de compra.
- Exportar una fila por sesión para análisis de tendencias evitando la carga útil mayor a nivel de evento.
5. Recuperar una sesión completa
Pasa un resumen seleccionado a query_log_visualization para recuperar sus eventos de cliente, IA, búsqueda y comercio.
Endpoint
GET https://api.shoplyai.ai/query_log_visualizationParámetros de consulta
| Parameter | Required | Description |
|---|---|---|
date_time_utc_start | Yes | Inicio de sesión con formato UTC YYYY-MM-DD HH:mm:ss |
date_time_utc_end | Yes | Fin de sesión con formato UTC YYYY-MM-DD HH:mm:ss |
session_id | No | El customer_id del resumen, usado para registros históricos más antiguos |
start_timestamp_ms | Recommended | La marca de tiempo exacta en milisegundos de inicio del resumen |
Ejemplo en 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"))Respuesta de ejemplo
{
"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 cronología puede contener preguntas del cliente, respuestas de IA, resultados de búsqueda, clics en productos, eventos de agregar al carrito, eventos de checkout y participación de agentes humanos. Usa server_timestamp_ms para ordenar tipos de eventos mixtos. Los registros más antiguos pueden contener menos campos.
Casos de uso empresariales
- Auditar exactamente qué preguntó un cliente y qué respondió Shoply durante una investigación de soporte.
- Revisar la calidad de las respuestas junto con los resultados de búsqueda y los productos mostrados al comprador.
- Reconstruir el recorrido desde la pregunta hasta el clic, agregar al carrito o checkout.
- Diagnosticar una sesión reportada por un cliente sin buscar en historial no relacionado.
¿Puedo usar un solo secreto para cada API?
Sí. Un store_owner_api_secrete válido tiene alcance para una sola tienda y funciona en todos los endpoints de la API Merchant anteriores. Para cuentas de SiteChat, el mismo secreto también autentica las APIs de carga de catálogo. Para operaciones más seguras, usa secretos con nombres separados para sistemas separados; por ejemplo, uno para una exportación nocturna de datos y otro para un panel interno.
Si una integración se retira o se ve comprometida, revoca solo su secreto en Shoply Settings. Las otras integraciones seguirán funcionando.
¿Qué debo saber sobre caducidad, privacidad y errores?
Revisa también las fuentes de datos y la privacidad de Shoply para entender qué información está disponible para las respuestas al cliente.
- Los secretos de API de propietario de tienda caducan después de 90 días. Crea un reemplazo y actualiza la integración antes de su fecha de caducidad.
- El período estándar de retención del historial de chat y búsqueda de Shoply también es de 90 días. La caducidad del secreto y la retención de datos son políticas separadas.
- Las respuestas del historial pueden contener datos personales, incluidos identificadores de clientes, direcciones de correo electrónico, ubicación aproximada, preguntas y actividad de compra. Almacénalos y procésalos de acuerdo con tu política de privacidad y la ley aplicable.
- HTTP
403significa que el secreto falta, es inválido, ha caducado, fue revocado o pertenece a una tienda diferente. - HTTP
422normalmente significa que falta un parámetro de consulta obligatorio o que tiene un nombre incorrecto. - HTTP
500o una respuesta constatusCode: 500significa que la solicitud llegó a Shoply pero no pudo completarse. Reintenta los fallos temporales con backoff y contáctanos si el error continúa. - Usa rangos UTC acotados para exportaciones y tareas recurrentes para que las respuestas sigan siendo manejables.
¿La búsqueda de productos forma parte de la API Merchant?
La API pública de búsqueda de productos de Shoply tiene una autenticación y un contrato de solicitud diferentes. Consulta Cómo acceder a Shoply AI Search a través de la API si quieres resultados de búsqueda de productos para una experiencia orientada al comprador en lugar de datos privados del comerciante.
¿Los comerciantes de SiteChat pueden subir un catálogo de productos?
Sí. Las cuentas de SiteChat pueden subir productos estructurados e imágenes de productos con el mismo secreto de API de propietario de tienda. Esos endpoints de catálogo están documentados por separado en Cómo subir tu catálogo para SiteChat. Las tiendas Shopify siguen sincronizando productos a través de Shopify y no usan esas rutas de carga.
Para obtener ayuda con una integración, contacta con Shoply AI.
