WordPress · Sincronización de productos
El plugin sincroniza tu catálogo WooCommerce con Neuroon mediante el endpoint:
/api/integrations/v1/products/syncLa sync es idempotente por externalId (típicamente el ID del producto en WP). Reenviar el mismo producto actualiza, no duplica.
Modos de sincronización
| Modo | Cuándo usarlo | Comportamiento |
|---|---|---|
FULL | Primera carga o re-bootstrap | Marca como ausentes los productos que no estén en el batch acumulado. |
INCREMENTAL | Día a día (autosync, deltas) | Solo crea / actualiza los productos enviados; el resto queda intacto. |
El plugin usa INCREMENTAL por defecto. Solo dispara FULL cuando lanzas Reset & Resync All desde la pestaña Products.
Tamaño de batch
| Capa | Límite |
|---|---|
| Plugin (cliente) | 100 productos por petición |
| Backend (servidor) | hasta 500 productos por petición |
El plugin envía en lotes de 100 a propósito: limita el footprint de memoria PHP, evita timeouts típicos de PHP-FPM (max_execution_time) y absorbe mejor los rate limits.
Auto-sync vía hooks WooCommerce
El plugin escucha los eventos relevantes de WooCommerce — edición, creación, cambio de stock y borrado de producto — y marca el producto correspondiente como PENDING internamente para re-sincronizarlo.
Comportamiento:
- Producto editado → si estaba
SYNCED, vuelve aPENDING. - Producto creado → queda
PENDING(selección manual o autosync, según ajustes). - Cambio de stock (
woocommerce_product_set_stock) → re-sync. - Producto eliminado (
before_delete_post) → se elimina del seguimiento interno; un job posterior emitiráDELETE /api/integrations/v1/products/by-external/{externalId}.
Para integraciones custom: este auto-sync + DELETE lo gestiona el plugin solo. Si construyes tu propia integración (Next.js, Nuxt, .NET, etc.) tienes que replicar tres cosas que el plugin hace silenciosamente: (1) detectar productos eliminados y emitir DELETE; (2) re-encolar productos editados; (3) reconciliar periódicamente local vs remoto para no acumular productos huérfanos. Patrón completo en
plugins/custom/server-to-server.
Estado de sincronización
El plugin mantiene internamente el estado de sincronización de cada producto:
| Status | Significado |
|---|---|
PENDING | En cola, aún no enviado. |
PROCESSING | Enviado, esperando respuesta. |
SYNCED | Aceptado por el backend (200/201). |
FAILED | Backend devolvió error; revisa el detalle mostrado en la pestaña Products. |
NOT_SYNCED | Producto excluido por reglas locales (ej. borrador). |
Respuesta del endpoint
Cada llamada /products/sync devuelve un JSON con el agregado de ese batch:
{
"totalReceived": 100,
"newProducts": 50,
"updatedProducts": 47,
"skipped": 0,
"failed": 3,
"errors": [
{ "externalId": "123", "error": "Invalid price" }
],
"productsCount": 150,
"remainingProducts": 850
}
productsCount y remainingProducts reflejan tu cuota global tras el batch. El plugin muestra esos valores en la pestaña Products y bloquea nuevos batches si remainingProducts == 0.
Latencia (eventual consistency)
Tras el 200 OK, los productos pasan por el pipeline interno . La indexación tarda 2 a 5 segundos. Hasta que termina, una búsqueda inmediata puede no devolverlos.
Rate limits
| Endpoint | Límite |
|---|---|
products/sync | 100/min |
shops/me | 60/min |
verification-data | 20/min |
El plugin captura 429 y respeta el Retry-After. Si tu tienda tiene > 6.000 productos y necesitas un bootstrap rápido, contacta a soporte para ampliar la ventana.
Cuotas
El plan asociado a tu API Key define maxProducts. La pestaña Products lee productsCount / maxProducts desde GET /api/integrations/v1/shop (con una cache local de 5 minutos para no repetir la llamada en cada carga de la pestaña).
Sync manual desde la UI
- wp-admin → Settings → Neuroon Search → Products tab.
- Selecciona productos en la tabla.
- Pulsa Sync selected. La UI inicia la sincronización y sondea el progreso hasta que termina.
- Los productos se envían en batches de 100, de forma secuencial, para no saturar el servidor.
Resync forzada
Products tab → Reset & Resync All marca todos los productos como PENDING y dispara una sync FULL. Útil si:
- Sospechas que la tabla local está desincronizada respecto a Neuroon.
- Has cambiado masivamente atributos / categorías.
- Acabas de migrar de plan y necesitas re-validar la cuota.
Próximos pasos
- Cart bridge — tras sincronizar, el widget se beneficia del estado del carrito.
- API ·
products/sync— referencia completa con playground. - Recipe · WooCommerce end-to-end.