Cómo usar la API Merchant de Shoply

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

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:

APICategoríaQué devuelve
admin_store_analyticsRendimientoFilas y totales de rendimiento diarios, semanales o mensuales
query_api_usage_countInteracciónConteos de actividad agrupados por minuto UTC o por día
query_sessionized_chatConversacionesResúmenes de sesiones de chat y búsqueda
query_log_visualizationConversacionesLa cronología completa de eventos para una sesión seleccionada
admin_get_store_metadataConfiguración de la tiendaLa zona horaria de la tienda usada para mostrar correctamente los datos UTC
admin_store_knowledgeConocimientoTexto personalizado, páginas externas, archivos subidos, eliminación y recrawl
user_generated_fileArchivos de conocimientoSube 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 403 con No 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?

  1. Abre tu panel de administración de Shoply AI.
  2. Ve a Settings → Store owner API secret.
  3. Crea un secreto y asígnale un nombre que identifique la integración, como Weekly reporting export.
  4. Copia el secreto cuando aparezca. Shoply muestra el valor en texto plano solo una vez.
Shoply Settings showing the Store owner API secret panel, Create API secret button, expiry date, and revoke control

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:

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

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.

¿Cómo funciona la autenticación?

Cada solicitud a la API Merchant envía una cabecera Authorization cuyo valor es una cadena JSON:

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:

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"

Recupera las sesiones de chat y búsqueda más recientes como modelos tipados 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)

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:

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

Recupera esas mismas sesiones más recientes desde un servidor 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); }

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:

bash
python -m pip install requests

El helper siguiente añade la store key y la cabecera de autenticación a cada solicitud:

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

Los 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

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

Respuesta de ejemplo

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

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)

Respuesta de ejemplo

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

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

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.

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

Respuesta de ejemplo de la subida

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

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

python
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

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

Parámetros de consulta

ParameterRequiredDescription
store_keyYesAñadido por el cliente compartido
report_typeYesdaily, weekly o monthly
start_dateDaily/weeklyFecha UTC inclusiva con formato YYYYMMDD
end_dateDaily/weeklyFecha 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

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

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

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

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

Parámetros de consulta

ParameterRequiredDescription
store_keyYesAñadido por el cliente compartido
metadata_keyYesUsa el valor literal time_zone

Ejemplo en Python

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

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

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

Parámetros de consulta

ParameterRequiredDescription
start_dt_utcYesHora de inicio UTC como YYYY-MM-DD HH:mm:ss
end_dt_utcYesHora de fin UTC como YYYY-MM-DD HH:mm:ss
groupbyNoutc_date para totales diarios o utc_date_time para filas por minuto

Ejemplo en 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)

Respuesta de ejemplo

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

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

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

Parámetros de consulta

ParameterRequiredDescription
start_dt_utcYesHora de inicio UTC, o el valor literal undefined
end_dt_utcYesHora de fin UTC, o el valor literal undefined
num_sessionsNoNúmero de sesiones a seleccionar cuando cualquiera de los límites es undefined
ScanIndexForwardNoUsa false para seleccionar primero las sesiones más recientes

Recuperar las últimas 40 sesiones

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

Recuperar sesiones en un rango 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", )

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

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

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

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

Parámetros de consulta

ParameterRequiredDescription
date_time_utc_startYesInicio de sesión con formato UTC YYYY-MM-DD HH:mm:ss
date_time_utc_endYesFin de sesión con formato UTC YYYY-MM-DD HH:mm:ss
session_idNoEl customer_id del resumen, usado para registros históricos más antiguos
start_timestamp_msRecommendedLa marca de tiempo exacta en milisegundos de inicio del resumen

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

Respuesta de ejemplo

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

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 403 significa que el secreto falta, es inválido, ha caducado, fue revocado o pertenece a una tienda diferente.
  • HTTP 422 normalmente significa que falta un parámetro de consulta obligatorio o que tiene un nombre incorrecto.
  • HTTP 500 o una respuesta con statusCode: 500 significa 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.