Como usar a API Merchant da Shoply

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

A API Merchant da Shoply permite que um lojista use com segurança seus próprios dados da Shoply em ferramentas de relatórios, fluxos de trabalho de suporte, exportações agendadas e aplicações comerciais privadas.

Cada integração se autentica com uma credencial revogável, com escopo da loja, criada nas Configurações da Shoply. Você não precisa compartilhar um token de acesso da Shopify Admin API, e uma integração pode acessar apenas a loja que emitiu sua credencial.

O que posso fazer com a API Merchant?

Você pode usar a API Merchant para:

  • Exportar resultados diários, semanais ou mensais de desempenho para uma planilha ou data warehouse.
  • Criar um painel privado para sessões, chats, buscas, cliques em produtos, eventos de adicionar ao carrinho, compras e receita atribuída.
  • Monitorar a atividade dos clientes e descobrir mudanças incomuns no engajamento.
  • Revisar sessões de chat e busca para suporte, merchandising e trabalho de qualidade de respostas.
  • Recuperar a linha do tempo de uma conversa individual ao investigar um problema de cliente.
  • Criar, atualizar, listar e excluir o conhecimento personalizado usado pelo Shoply AI.
  • Adicionar uma página externa da web ou um arquivo PDF, texto ou Markdown enviado à base de conhecimento.
  • Alinhar dados de eventos em UTC com o fuso horário local da loja.

Este guia documenta sete endpoints. Cinco são os mesmos endpoints usados por Shoply Admin → Analytics, enquanto dois gerenciam a base de conhecimento:

APICategoriaO que retorna
admin_store_analyticsDesempenhoLinhas e totais de desempenho diário, semanal ou mensal
query_api_usage_countEngajamentoContagens de atividade agrupadas por minuto UTC ou dia
query_sessionized_chatConversasResumos de sessões de chat e busca
query_log_visualizationConversasA linha do tempo completa de eventos de uma sessão selecionada
admin_get_store_metadataConfiguração da lojaO fuso horário da loja usado para exibir dados em UTC corretamente
admin_store_knowledgeConhecimentoTexto personalizado, páginas externas, arquivos enviados, exclusão e nova varredura
user_generated_fileArquivos de conhecimentoEnvia um arquivo PDF, texto ou Markdown antes de ele ser registrado como conhecimento

Os corpos de resposta abaixo são exemplos representativos. Seus campos e valores refletirão a atividade registrada para sua loja.

Requisito de implantação: A autenticação por segredo do proprietário da loja deve estar implantada no servidor de API que você chama. Se um segredo válido retornar HTTP 403 com No access_token found, esse servidor ainda está executando o código de autenticação mais antigo, apenas com access token.

Como crio um segredo de API?

  1. Abra seu admin do Shoply AI.
  2. Vá para Settings → Store owner API secret.
  3. Crie um segredo e dê a ele um nome que identifique a integração, como Weekly reporting export.
  4. Copie o segredo quando ele aparecer. A Shoply mostra o valor em texto simples apenas uma vez.
Shoply Settings showing the Store owner API secret panel, Create API secret button, expiry date, and revoke control

Cada segredo é válido por 90 dias. Uma loja pode ter segredos separados para integrações separadas, e você pode revogar um segredo sem interromper os demais.

Salve estes valores como variáveis de ambiente no lado do servidor:

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

Use o domínio permanente myshopify.com da loja para SHOPLY_STORE_KEY, mesmo que os compradores normalmente visitem um domínio 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.

Como a autenticação funciona?

Toda solicitação à API Merchant envia um cabeçalho Authorization cujo valor é uma string JSON:

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

store_owner_api_secrete é o nome exato do campo público, incluindo sua grafia histórica. Isto não é um token Bearer. Coloque a string JSON completa diretamente no cabeçalho Authorization.

Mantenha o segredo apenas no código de backend. Não o coloque em uma URL, bundle de navegador, repositório público, evento de analytics ou log da aplicação.

Existem pacotes oficiais para Python e Node.js?

Sim. A Shoply publica dois pacotes server-side que adicionam automaticamente a autenticação necessária e expõem a API Merchant como funções tipadas. Ambos os pacotes são open source sob a organização GitHub shoplyai-public.

Pacote Python

O pacote shoply-merchant-api oferece suporte a Python 3.12 e usa modelos de resposta Pydantic v2. Instale a versão fixada 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"

Recupere as sessões mais recentes de chat e busca 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)

O pacote também fornece funções para analytics, contagens de atividade, linhas do tempo completas de sessões, fuso horário da loja e gerenciamento de conhecimento. Consulte seu guia de casos de uso de negócios  e a referência da API .

Pacote Node.js e TypeScript

O repositório shoply-merchant-api-js fornece o pacote @shoplyai/merchant-api para Node.js 20 ou mais recente. É um pacote ESM com declarações TypeScript embutidas e sem dependências em tempo de execução. Instale a versão fixada 2.1.3 diretamente do GitHub:

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

Recupere as mesmas sessões mais recentes de um 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); }

O pacote npm cobre os mesmos endpoints da API Merchant que o pacote Python. Consulte seu guia de casos de uso de negócios  e a referência da API .

Ambos os pacotes são para serviços de backend confiáveis, jobs agendados e ferramentas internas privadas. Não importe nenhum dos dois pacotes para código de storefront nem exponha o segredo de API em um bundle de navegador.

Posso chamar a API HTTP sem um pacote?

Sim. A API Merchant continua sendo uma API HTTPS padrão. Os exemplos de baixo nível em Python abaixo usam Requests para que você possa ver o contrato completo no fio ou integrar a partir de outra linguagem.

Instale Requests se o seu ambiente ainda não o incluir:

bash
python -m pip install requests

O helper abaixo adiciona a store key e o cabeçalho de autenticação a toda solicitação:

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

Os exemplos abaixo usam esse cliente compartilhado. Ambos os helpers adicionam automaticamente a store key autenticada.

Posso gerenciar o conhecimento do Shoply AI pela API?

Sim. admin_store_knowledge usa GET para recuperar conhecimento e POST para criá-lo, atualizá-lo, excluí-lo ou fazer nova varredura. Um POST que usa um ID de conhecimento existente atualiza essa entrada; usar um novo ID cria uma.

Antes de automatizar atualizações, planeje um conhecimento útil da loja com os exemplos em nosso guia de treinamento.

Gravações de conhecimento podem alterar as respostas mostradas aos compradores. Use um segredo dedicado para o sistema que gerencia conhecimento, valide o conteúdo antes de enviá-lo e nunca exponha essa credencial com permissão de escrita em JavaScript de storefront.

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

Exemplo de resposta

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

Criar ou atualizar conhecimento de texto personalizado

Escolha um ID de conhecimento estável e único. Reutilize o mesmo ID ao atualizar essa 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)

Exemplo de resposta

json
{ "statusCode": 200 }

Uma resposta bem-sucedida significa que o conhecimento foi salvo. A indexação de busca pode levar alguns minutos, então uma nova resposta pode não aparecer imediatamente. Se a API informar que o conteúdo foi salvo, mas a indexação estiver atrasada, confirme a entrada armazenada com GET antes de tentar gravar novamente.

Adicionar uma página externa da web

Use um ID começando com external_url::. Coloque a URL completa http:// ou https:// em 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()), } }, )

Enviar e registrar um arquivo de conhecimento

Arquivos de conhecimento devem ser PDF, TXT ou Markdown e menores que 5 MB. Envie o arquivo primeiro e depois salve a localização privada S3 retornada como uma entrada de conhecimento.

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

Exemplo de resposta do upload

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

Trate file_url como uma localização privada opaca retornada pela Shoply. Não a construa nem a altere por conta própria.

Excluir conhecimento

A exclusão é permanente. Recupere primeiro as entradas atuais e envie apenas os IDs exatos que você pretende remover.

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

Solicitar uma nova varredura do site

Use uma nova varredura depois que o conteúdo no site do lojista mudar. Normalmente ela não é necessária após cada atualização de texto personalizado.

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

Casos de uso de negócios

  • Sincronizar orientações sobre frete, devoluções, garantia, tamanhos ou cuidados com o produto a partir de um sistema interno de conteúdo.
  • Publicar informações temporárias de campanha ou feriado sem copiá-las manualmente para o Shoply Admin.
  • Adicionar uma página de política ou documento aprovado à base de conhecimento como parte de um fluxo de implantação.
  • Remover orientações obsoletas assim que uma política ou promoção terminar.

Exemplos da API Merchant

1. Recuperar analytics de desempenho

admin_store_analytics alimenta a tabela Analytics → Summary. Ele retorna sessões, chats, buscas, cliques, eventos de adicionar ao carrinho, compras e receita atribuída.

Endpoint

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

Parâmetros de consulta

ParâmetroObrigatórioDescrição
store_keySimAdicionado pelo cliente compartilhado
report_typeSimdaily, weekly ou monthly
start_dateDiário/semanalData UTC inclusiva formatada como YYYYMMDD
end_dateDiário/semanalData UTC inclusiva formatada como YYYYMMDD

Relatórios mensais usam o histórico mensal armazenado da Shoply e não exigem limites de data.

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

Exemplo de resposta

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

A receita pode conter mais de uma moeda. Trate revenue como texto de exibição. Use revenue_usd quando precisar do valor normalizado em USD mostrado pela Shoply.

Casos de uso de negócios

  • Enviar um resumo diário do impacto nas vendas para o lojista ou equipe de ecommerce.
  • Comparar buscas, cliques em produtos, eventos de adicionar ao carrinho e compras para encontrar abandono no funil.
  • Alimentar um painel semanal ou mensal de business intelligence sem fazer scraping da página do Shoply Admin.
  • Acompanhar a receita atribuída ao longo do tempo e compará-la com mudanças de merchandising ou campanhas.

2. Recuperar o fuso horário da loja

admin_get_store_metadata fornece o selo de fuso horário mostrado em Analytics → Chat & Search History. A página o usa para traduzir atividade em UTC para a hora local da loja.

Endpoint

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

Parâmetros de consulta

ParâmetroObrigatórioDescrição
store_keySimAdicionado pelo cliente compartilhado
metadata_keySimUse o valor literal time_zone

Exemplo em Python

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

Exemplo de resposta

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

Casos de uso de negócios

  • Agrupar atividade em UTC nos mesmos dias de calendário local que o lojista vê em Analytics.
  • Agendar exportações diárias após o término do dia local da loja.
  • Rotular relatórios com um fuso horário IANA inequívoco, como America/Los_Angeles.

Os offsets de fuso horário podem mudar por causa de regras de horário de verão. Prefira ianaTimezone quando seu sistema de relatórios oferecer suporte a isso, em vez de salvar permanentemente um único offset numérico.

3. Recuperar contagens de atividade

query_api_usage_count retorna a atividade da loja agrupada por data UTC ou pelo minuto UTC original. Ele também é a fonte do gráfico de atividade em Analytics → Chat & Search History.

Endpoint

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

Parâmetros de consulta

ParâmetroObrigatórioDescrição
start_dt_utcSimHora inicial UTC como YYYY-MM-DD HH:mm:ss
end_dt_utcSimHora final UTC como YYYY-MM-DD HH:mm:ss
groupbyNãoutc_date para totais diários ou utc_date_time para linhas por minuto

Exemplo em 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)

Exemplo de resposta

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

As linhas incluem os contadores de atividade disponíveis para esse período, como perguntas de chat, buscas, cliques, eventos de adicionar ao carrinho e eventos de checkout. Contadores sem atividade podem estar ausentes em vez de definidos como zero.

Casos de uso de negócios

  • Criar um gráfico de atividade por hora ou por dia como o de Chat & Search History.
  • Detectar picos incomuns de tráfego ou quedas repentinas no engajamento do cliente.
  • Comparar volume de busca de produtos com cliques, eventos de adicionar ao carrinho e checkouts.
  • Estimar quando as equipes de suporte e merchandising devem revisar os períodos mais movimentados.

4. Recuperar resumos de sessões de chat e busca

query_sessionized_chat retorna um registro compacto por sessão de cliente. Ele também alimenta a lista de sessões em Analytics → Chat & Search History.

Endpoint

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

Parâmetros de consulta

ParâmetroObrigatórioDescrição
start_dt_utcSimHora inicial UTC, ou o valor literal undefined
end_dt_utcSimHora final UTC, ou o valor literal undefined
num_sessionsNãoNúmero de sessões a selecionar quando qualquer um dos limites for undefined
ScanIndexForwardNãoUse false para selecionar primeiro as sessões mais recentes

Recuperar as 40 sessões mais recentes

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 sessões em um intervalo 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", )

Quando ambos os limites de tempo estão presentes, a API retorna sessões no intervalo completo; num_sessions não limita essa consulta delimitada.

Exemplo de resposta

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

Campos opcionais variam por sessão. Mantenha customer_id, start_timestamp_ms e end_timestamp_ms se você pretende recuperar a linha do tempo completa.

Casos de uso de negócios

  • Revisar uma amostra de conversas recentes para qualidade de resposta e treinamento de suporte.
  • Encontrar perguntas repetidas de clientes que devem influenciar a copy de produtos ou FAQs.
  • Identificar sessões de alta intenção contendo buscas, cliques em produtos ou outras ações de compra.
  • Exportar uma linha por sessão para análise de tendências evitando a carga maior em nível de evento.

5. Recuperar uma sessão completa

Passe um resumo selecionado para query_log_visualization para recuperar seus eventos de cliente, IA, busca e comércio.

Endpoint

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

Parâmetros de consulta

ParâmetroObrigatórioDescrição
date_time_utc_startSimInício da sessão formatado como UTC YYYY-MM-DD HH:mm:ss
date_time_utc_endSimFim da sessão formatado como UTC YYYY-MM-DD HH:mm:ss
session_idNãoO customer_id do resumo, usado para registros históricos mais antigos
start_timestamp_msRecomendadoO timestamp inicial exato em milissegundos do resumo

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

Exemplo de resposta

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

A linha do tempo pode conter perguntas do cliente, respostas da IA, resultados de busca, cliques em produtos, eventos de adicionar ao carrinho, eventos de checkout e participação de agente humano. Use server_timestamp_ms para ordenar tipos mistos de eventos. Registros mais antigos podem conter menos campos.

Casos de uso de negócios

  • Auditar exatamente o que um cliente perguntou e o que a Shoply respondeu durante uma investigação de suporte.
  • Revisar a qualidade das respostas junto com os resultados de busca e produtos mostrados ao comprador.
  • Reconstruir a jornada da pergunta até o clique, adicionar ao carrinho ou checkout.
  • Diagnosticar uma sessão relatada por um cliente sem pesquisar em histórico não relacionado.

Posso usar um segredo para toda API?

Sim. Um store_owner_api_secrete válido tem escopo de uma loja e funciona em todos os endpoints da API Merchant acima. Para contas SiteChat, o mesmo segredo também autentica as APIs de upload de catálogo. Para operações mais seguras, use segredos nomeados separados para sistemas separados — por exemplo, um para uma exportação noturna de dados e outro para um painel interno.

Se uma integração for descontinuada ou comprometida, revogue apenas seu segredo em Shoply Settings. As outras integrações continuarão funcionando.

O que devo saber sobre expiração, privacidade e erros?

Também revise as fontes de dados e a privacidade da Shoply para entender quais informações estão disponíveis para respostas ao cliente.

  • Segredos de API do proprietário da loja expiram após 90 dias. Crie uma substituição e atualize a integração antes da data de expiração.
  • O período padrão de retenção de histórico de chat e busca da Shoply também é de 90 dias. Expiração de segredo e retenção de dados são políticas separadas.
  • Respostas de histórico podem conter dados pessoais, incluindo identificadores de cliente, endereços de email, localização aproximada, perguntas e atividade de compra. Armazene e processe esses dados de acordo com sua política de privacidade e a legislação aplicável.
  • HTTP 403 significa que o segredo está ausente, inválido, expirado, revogado ou pertence a outra loja.
  • HTTP 422 normalmente significa que um parâmetro de consulta obrigatório está ausente ou tem o nome errado.
  • HTTP 500 ou uma resposta com statusCode: 500 significa que a solicitação chegou à Shoply, mas não pôde ser concluída. Tente novamente falhas temporárias com backoff e entre em contato conosco se o erro continuar.
  • Use intervalos UTC delimitados para exportações e jobs recorrentes para que as respostas permaneçam gerenciáveis.

A busca de produtos faz parte da API Merchant?

A API pública de busca de produtos da Shoply tem uma autenticação e um contrato de solicitação diferentes. Consulte Como acessar a busca do Shoply AI pela API se você quiser resultados de busca de produtos para uma experiência voltada ao comprador em vez de dados privados do lojista.

Lojistas SiteChat podem enviar um catálogo de produtos?

Sim. Contas SiteChat podem enviar produtos estruturados e imagens de produtos com o mesmo segredo de API do proprietário da loja. Esses endpoints de catálogo estão documentados separadamente em Como enviar seu catálogo para o SiteChat. Lojas Shopify continuam sincronizando produtos por meio da Shopify e não usam essas rotas de upload.

Para obter ajuda com uma integração, entre em contato com a Shoply AI.