Una instancia, cuatro llamadas, un track y algunas piezas sueltas. Los tipos vienen del contrato OpenAPI y nunca se escriben a mano: si el contrato cambia, el paquete cambia con él.

createStorefront(options): Storefront

La instancia:

Las opciones

Sólo las dos primeras son obligatorias.
string
requerido
La clave spk_… que copiás del admin. Por qué puede ser pública: Claves y seguridad.
string
requerido
La conexión de tu tienda (cn_…). Se valida contra la tienda de la clave.
string
predeterminado:"https://api.crossup.ai/salespilot"
El endpoint de la API. En producción, https://salespilot.crossup.ai.
typeof fetch
Un fetch propio, para tests o para un runtime sin fetch global.
boolean
predeterminado:"true"
true lo guarda en localStorage y cookie, espejados. false lo deja en memoria: sigue viajando, pero cada carga es un visitante nuevo. Usalo sin consentimiento.
VisitorStorage
Un storage propio. Gana sobre persistVisitor.
Dominio de la cookie (.mitienda.com): el mismo visitante en todos los subdominios.
(() => Visitor | undefined) | false
Un visitante propio, para quien ya lo resolvió (un servidor). false no manda visitante en ningún pedido.
(error: unknown) => void
Se llama cuando el visitante no se pudo resolver y el pedido salió sin él. Nunca se llama con un error de la API.
(() => ClientContext | undefined) | false
El contexto del navegador (página, referrer, UTM, idioma, pantalla). Por defecto se lee en cada pedido; false no lo manda; una función lo reemplaza. Nunca corta el pedido.
(error: unknown) => void
Cada señal que no se pudo armar, que el servidor rechazó, que se descartó por un 4xx o que se cayó de la cola llena. Nunca se llama por un reintento.
(result, signal) => void
Cada respuesta del servidor a una señal: accepted, duplicate o rejected.
SignalOptions
Cómo se agrupan y reintentan las señales: flushIntervalMs (2000), maxQueueSize (200), maxBackoffMs (60000), storage. Ver Reportar señales.

Tipos

Errores

Visitante y storage

Señales