track e algumas peças soltas. Os
tipos vêm do contrato OpenAPI e nunca são escritos à mão: se o contrato
muda, o pacote muda com ele.
createStorefront(options): Storefront
A instância:
resolveItemId, getCatalogItemByExternalId (com os seus try…), cartId
e track.checkoutStarted ainda não estão na versão publicada no npm
(0.1.0). Até a próxima, resolva o id com
GET /v1/catalog/items/by-external/{external_id} e mande
cart_id e checkout_started pela API.As opções
Só as duas primeiras são obrigatórias.string
obrigatório
A chave
spk_… que você copia do admin. Por que ela pode ser pública: Chaves e segurança.string
obrigatório
A conexão da sua loja (
cn_…). É validada contra a loja da chave.string | (() => string | null | undefined)
O id que a sua loja dá ao carrinho. Mande-o sempre que houver carrinho: é a única coisa que liga a venda à recomendação quando o pedido entra. Uma função é o normal, porque o carrinho ganha seu id com o primeiro produto e ele é lido em cada chamada.
string
padrão:"https://api.crossup.ai/salespilot"
O endpoint da API. Em produção,
https://salespilot.crossup.ai.typeof fetch
Um
fetch próprio, para testes ou para um runtime sem fetch global.boolean
padrão:"true"
true o guarda em localStorage e cookie, espelhados. false o deixa na memória: continua viajando, mas cada carregamento é um visitante novo. Use sem consentimento.VisitorStorage
Um storage próprio. Ganha de
persistVisitor.string
Domínio do cookie (
.minhaloja.com): o mesmo visitante em todos os subdomínios.(() => Visitor | undefined) | false
Um visitante próprio, para quem já o resolveu (um servidor).
false não manda visitante em nenhuma requisição.(error: unknown) => void
É chamado quando o visitante não pôde ser resolvido e a requisição saiu sem ele. Nunca é chamado com um erro da API.
(() => ClientContext | undefined) | false
O contexto do navegador (página, referrer, UTM, idioma, tela). Por padrão é lido em cada requisição;
false não o manda; uma função o substitui. Nunca interrompe a requisição.(error: unknown) => void
Cada sinal que não pôde ser montado, que o servidor rejeitou, que foi descartado por um
4xx ou que caiu da fila cheia. Nunca é chamado por uma nova tentativa.(result, signal) => void
Cada resposta do servidor a um sinal:
accepted, duplicate ou rejected.SignalOptions
Como os sinais são agrupados e reenviados:
flushIntervalMs (2000), maxQueueSize (200), maxBackoffMs (60000), storage. Ver Reportar sinais.