Tu plugin de sincronización WooCommerce-ERP hace lo que puede. Pero 'lo que puede' está lejos de lo que necesitas. Hay 3 problemas técnicos que la mayoría de plugins ignoran completamente — y cada uno puede provocar errores que no descubrirás hasta semanas después.

Problema 1: Retries (o su ausencia)

Cuando tu plugin intenta enviar un pedido al ERP y la petición falla, ¿cuántas veces lo reintenta? La mayoría de plugins: ninguna. Falla, registra un log que nadie lee, y sigue adelante.

Un middleware profesional implementa una política de retries con backoff exponencial: si falla, reintenta al cabo de 1 segundo. Si vuelve a fallar, al cabo de 5. Después 30. Después 2 minutos. Con un límite configurable y una alerta si se agota.

Pero reintentar no es suficiente. Reintentar sin idempotencia es peor que no reintentar.

Problema 2: Idempotencia (el concepto que lo cambia todo)

Idempotencia significa que ejecutar la misma operación dos veces produce el mismo resultado que ejecutarla una sola vez. Parece obvio, pero casi ningún plugin lo implementa.

Ejemplo: el plugin envía el pedido #1234 al ERP. La petición llega, el ERP lo procesa, pero la respuesta se pierde por un timeout. El plugin cree que ha fallado y reenvía el pedido #1234. Ahora el ERP tiene dos pedidos idénticos.

Un sistema idempotente asigna un ID único a cada operación. Si el ERP recibe una operación con un ID que ya ha procesado, la ignora. Sencillo en teoría, ausente en la práctica de la mayoría de plugins.

Dónde se nota la falta de idempotencia

  • Facturas duplicadas: El mismo pedido genera dos facturas en el ERP. Contabilidad tiene que rectificar una manualmente.
  • Stock duplicado: El mismo movimiento de stock se registra dos veces. El inventario pierde la realidad.
  • Clientes duplicados: El mismo cliente se crea dos veces con IDs diferentes. Historial fragmentado.
  • Cobros dobles: En integraciones con pasarelas, la falta de idempotencia puede provocar cobros duplicados.

Problema 3: Duplicados (el síntoma visible)

Los duplicados son el síntoma, no la causa. Aparecen por una combinación de falta de retries inteligentes y falta de idempotencia. Pero muchos plugins intentan 'solucionar' los duplicados con detección a posteriori: 'si veo dos pedidos iguales, borro uno'.

Esto es peligroso por dos razones:

  • La detección de duplicados nunca es perfecta. Dos clientes pueden hacer pedidos casi idénticos (mismos productos, misma hora) que no son duplicados reales.
  • Borrar un 'duplicado' puede borrar datos fiscales, crear agujeros contables, y complicar la trazabilidad.

La solución correcta es prevenir los duplicados con idempotencia, no detectarlos a posteriori.

Cómo lo resuelve un middleware profesional

CapacidadPlugin estándarMiddleware profesional
Retries en falloNinguno o 1 reintentoBackoff exponencial configurable
IdempotenciaNo implementadaID único por operación
Detección de duplicadosA posteriori (arriesgada)Prevención por diseño
Alertas en falloLog internoNotificación en tiempo real
Dead letter queueNo existeEventos fallidos conservados para revisión

Probablemente no tienes varios problemas

Si has llegado aquí buscando por qué tienes pedidos duplicados, facturas dobles o stock que no cuadra, la causa probablemente es la misma: tu plugin no implementa ni retries ni idempotencia.

WooCommerce y tu ERP creen ser la fuente de verdad al mismo tiempo. Cuando ambos conviven sin control, aparecen incoherencias. No es un bug puntual. Es un problema de integridad transaccional.

👉 Entiende el origen real aquí