Como usar a API Merchant da Shoply
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:
| API | Categoria | O que retorna |
|---|---|---|
admin_store_analytics | Desempenho | Linhas e totais de desempenho diário, semanal ou mensal |
query_api_usage_count | Engajamento | Contagens de atividade agrupadas por minuto UTC ou dia |
query_sessionized_chat | Conversas | Resumos de sessões de chat e busca |
query_log_visualization | Conversas | A linha do tempo completa de eventos de uma sessão selecionada |
admin_get_store_metadata | Configuração da loja | O fuso horário da loja usado para exibir dados em UTC corretamente |
admin_store_knowledge | Conhecimento | Texto personalizado, páginas externas, arquivos enviados, exclusão e nova varredura |
user_generated_file | Arquivos de conhecimento | Envia 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
403comNo 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?
- Abra seu admin do Shoply AI.
- Vá para Settings → Store owner API secret.
- Crie um segredo e dê a ele um nome que identifique a integração, como
Weekly reporting export. - Copie o segredo quando ele aparecer. A Shoply mostra o valor em texto simples apenas uma vez.
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:
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.

Como a autenticação funciona?
Toda solicitação à API Merchant envia um cabeçalho Authorization cujo valor é uma string 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:
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:
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:
npm install "github:shoplyai-public/shoply-merchant-api-js#v2.1.3"Recupere as mesmas sessões mais recentes de um 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);
}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:
python -m pip install requestsO helper abaixo adiciona a store key e o cabeçalho de autenticação a toda solicitação:
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 resultOs 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
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
{
"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.
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
{
"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.
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.
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
{
"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.
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.
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
GET https://api.shoplyai.ai/admin_store_analyticsParâmetros de consulta
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
store_key | Sim | Adicionado pelo cliente compartilhado |
report_type | Sim | daily, weekly ou monthly |
start_date | Diário/semanal | Data UTC inclusiva formatada como YYYYMMDD |
end_date | Diário/semanal | Data 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
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
{
"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
GET https://api.shoplyai.ai/admin_get_store_metadataParâmetros de consulta
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
store_key | Sim | Adicionado pelo cliente compartilhado |
metadata_key | Sim | Use o valor literal time_zone |
Exemplo em 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
{
"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
GET https://api.shoplyai.ai/query_api_usage_countParâmetros de consulta
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
start_dt_utc | Sim | Hora inicial UTC como YYYY-MM-DD HH:mm:ss |
end_dt_utc | Sim | Hora final UTC como YYYY-MM-DD HH:mm:ss |
groupby | Não | utc_date para totais diários ou utc_date_time para linhas por minuto |
Exemplo em 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
{
"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
GET https://api.shoplyai.ai/query_sessionized_chatParâmetros de consulta
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
start_dt_utc | Sim | Hora inicial UTC, ou o valor literal undefined |
end_dt_utc | Sim | Hora final UTC, ou o valor literal undefined |
num_sessions | Não | Número de sessões a selecionar quando qualquer um dos limites for undefined |
ScanIndexForward | Não | Use false para selecionar primeiro as sessões mais recentes |
Recuperar as 40 sessões mais recentes
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
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
{
"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
GET https://api.shoplyai.ai/query_log_visualizationParâmetros de consulta
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
date_time_utc_start | Sim | Início da sessão formatado como UTC YYYY-MM-DD HH:mm:ss |
date_time_utc_end | Sim | Fim da sessão formatado como UTC YYYY-MM-DD HH:mm:ss |
session_id | Não | O customer_id do resumo, usado para registros históricos mais antigos |
start_timestamp_ms | Recomendado | O timestamp inicial exato em milissegundos do resumo |
Exemplo em 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
{
"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
403significa que o segredo está ausente, inválido, expirado, revogado ou pertence a outra loja. - HTTP
422normalmente significa que um parâmetro de consulta obrigatório está ausente ou tem o nome errado. - HTTP
500ou uma resposta comstatusCode: 500significa 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.
