Saltar al contenido principal

Callbacks

Ejecuta código personalizado cuando ocurren eventos en el widget.

Callbacks disponibles

NeuroonWidget.init({
// ...
callbacks: {
onSearch: (query, results) => {},
onResultClick: (product) => {},
onFilterChange: (filters) => {},
onError: (error) => {},
onOpen: () => {},
onClose: () => {},
},
});

onSearch

Se ejecuta después de cada búsqueda.

onSearch: (query, results) => {
console.log(`Búsqueda: "${query}"`);
console.log(`Resultados: ${results.length}`);

// Enviar a analytics
analytics.track('Search', {
query,
resultsCount: results.length,
});
}

Parámetros:

  • query (string): Término de búsqueda
  • results (Product[]): Array de productos encontrados

onResultClick

Se ejecuta cuando el usuario hace clic en un producto.

onResultClick: (product) => {
console.log('Producto:', product.name);

// Tracking de conversión
fbq('track', 'ViewContent', {
content_ids: [product.id],
content_name: product.name,
value: product.price,
currency: 'EUR',
});

// Redirigir al producto
window.location.href = product.url;
}

Parámetros:

  • product (Product): Objeto del producto clickeado
interface Product {
id: string;
name: string;
description?: string;
price: number;
salePrice?: number;
currency: string;
url: string;
imageUrl?: string;
categories: string[];
brands: string[];
inStock: boolean;
}

onFilterChange

Se ejecuta cuando cambian los filtros.

onFilterChange: (filters) => {
console.log('Filtros aplicados:', filters);

// Guardar preferencias
localStorage.setItem('userFilters', JSON.stringify(filters));
}

Parámetros:

  • filters (AppliedFilters): Filtros activos
interface AppliedFilters {
priceMin?: number;
priceMax?: number;
categories?: string[];
brands?: string[];
tags?: string[];
inStock?: boolean;
onSale?: boolean;
}

onError

Se ejecuta cuando ocurre un error.

onError: (error) => {
console.error('Error en Neuroon:', error);

// Reportar a Sentry
Sentry.captureException(error);

// Mostrar mensaje al usuario
showNotification('Error al buscar. Inténtalo de nuevo.');
}

Parámetros:

  • error (Error): Objeto de error

onOpen / onClose

Se ejecutan cuando el modal se abre o cierra.

onOpen: () => {
// Pausar scroll del body
document.body.style.overflow = 'hidden';

// Analytics
analytics.track('Search Opened');
},

onClose: () => {
// Restaurar scroll
document.body.style.overflow = '';
}

Ejemplo completo

NeuroonWidget.init({
container: '#neuroon-search',
token: 'YOUR_TOKEN',
callbacks: {
onSearch: (query, results) => {
// Google Analytics
gtag('event', 'search', { search_term: query });

// Hotjar
hj('event', 'search_performed');
},

onResultClick: (product) => {
// Facebook Pixel
fbq('track', 'ViewContent', {
content_ids: [product.id],
content_type: 'product',
value: product.price,
currency: product.currency,
});

// Google Analytics
gtag('event', 'select_item', {
items: [{
item_id: product.id,
item_name: product.name,
price: product.price,
}],
});
},

onFilterChange: (filters) => {
gtag('event', 'filter_applied', {
filters: JSON.stringify(filters),
});
},

onError: (error) => {
Sentry.captureException(error);
},
},
});