Skip to content

Eventos

El SDK emite eventos durante su ciclo de vida. Suscribete con mb.on(event, handler) para reaccionar (analytics propios, debugging, telemetria interna).

API

ts
type MibizumEvent =
  | 'init'
  | 'search:start'
  | 'search:success'
  | 'search:error'
  | 'click'
  | 'conversion'
  | 'session:created'
  | 'session:expired';

function on(event: MibizumEvent, handler: Function): () => void;
// Devuelve un unsubscribe.

Ejemplos

Log de busquedas exitosas

ts
const off = mb.on('search:success', (e) => {
  console.log('search', e.query, e.total, e.msTaken);
});

// Despues, para desuscribir:
off();

Forward a tu analytics

ts
mb.on('search:success', (e) => {
  mixpanel.track('Mibizum Search', {
    query:        e.query,
    results:      e.total,
    latency_ms:   e.msTaken,
    session:      mb.getSessionId(),
  });
});

mb.on('click', (e) => {
  mixpanel.track('Mibizum Click', { itemId: e.itemId, position: e.position });
});

Detectar abandono de sesion

ts
mb.on('session:expired', () => {
  // El TTL de 24h ha pasado; el SDK creara un sessionId nuevo en la proxima llamada.
  console.log('session expired');
});

Payloads

Cada evento lleva un payload tipado:

EventoPayload
init{ tenant, sessionId }
search:start{ query, options }
search:success{ query, total, msTaken, queryNorm }
search:error{ query, error: MibizumError }
click{ itemId, query, position }
conversion{ itemId, orderId, revenue, currency }
session:created{ sessionId, createdAt }
session:expired{ sessionId, expiredAt }

Cuando NO usar eventos

  • Para mostrar resultados: usa el Promise que devuelve mb.search().
  • Para navegacion: el SDK no hace navegacion, eso es tu codigo.
  • Para modificar el comportamiento del SDK: los eventos son solo-lectura. Si necesitas otra logica, configura Mibizum.init() o llama al API REST directamente.

Documentacion oficial de Mibizum.