El teu plugin de sincronització WooCommerce-ERP fa el que pot. Però 'el que pot' és lluny del que necessites. Hi ha 3 problemes tècnics que la majoria de plugins ignoren completament — i cadascun pot provocar errors que no descobriràs fins setmanes després.

Problema 1: Retries (o la seva absència)

Quan el teu plugin intenta enviar una comanda a l'ERP i la petició falla, quantes vegades ho reintenta? La majoria de plugins: cap. Falla, registra un log que ningú llegeix, i segueix endavant.

Un middleware professional implementa una política de retries amb backoff exponencial: si falla, reintenta al cap d'1 segon. Si torna a fallar, al cap de 5. Després 30. Després 2 minuts. Amb un límit configurable i una alerta si s'esgota.

Però reintentar no n'hi ha prou. Reintentar sense idempotència és pitjor que no reintentar.

Problema 2: Idempotència (el concepte que canvia tot)

Idempotència vol dir que executar la mateixa operació dues vegades produeix el mateix resultat que executar-la una sola vegada. Sembla obvi, però quasi cap plugin ho implementa.

Exemple: el plugin envia la comanda #1234 a l'ERP. La petició arriba, l'ERP la processa, però la resposta es perd per un timeout. El plugin creu que ha fallat i reenvia la comanda #1234. Ara l'ERP té dues comandes idèntiques.

Un sistema idempotent assigna un ID únic a cada operació. Si l'ERP rep una operació amb un ID que ja ha processat, la ignora. Senzill en teoria, absent en la pràctica de la majoria de plugins.

On es nota la falta d'idempotència

  • Factures duplicades: La mateixa comanda genera dues factures a l'ERP. Comptabilitat ha de rectificar-ne una manualment.
  • Estoc duplicat: El mateix moviment d'estoc es registra dues vegades. L'inventari perd la realitat.
  • Clients duplicats: El mateix client es crea dues vegades amb IDs diferents. Historial fragmentat.
  • Cobraments dobles: En integracions amb passarel·les, la falta d'idempotència pot provocar cobraments duplicats.

Problema 3: Duplicats (el símptoma visible)

Els duplicats són el símptoma, no la causa. Apareixen per una combinació de falta de retries intel·ligents i falta d'idempotència. Però molts plugins intenten 'solucionar' els duplicats amb detecció a posteriori: 'si veig dues comandes iguals, n'esborro una'.

Això és perillós per dues raons:

  • La detecció de duplicats mai és perfecte. Dos clients poden fer comandes gairebé idèntiques (mateixos productes, mateixa hora) que no són duplicats reals.
  • Esborrar un 'duplicat' pot esborrar dades fiscals, crear forats comptables, i complicar la traçabilitat.

La solució correcta és prevenir els duplicats amb idempotència, no detectar-los a posteriori.

Com ho resol un middleware professional

CapacitatPlugin estàndardMiddleware professional
Retries en falladaCap o 1 reintentBackoff exponencial configurable
IdempotènciaNo implementadaID únic per operació
Detecció de duplicatsA posteriori (arriscada)Prevenció per disseny
Alertes en falladaLog internNotificació en temps real
Dead letter queueNo existeixEvents fallits conservats per revisió

Probablement no tens diversos problemes

Si has arribat aquí buscant per què tens comandes duplicades, factures dobles o estoc que no quadra, la causa probablement és la mateixa: el teu plugin no implementa ni retries ni idempotència.

WooCommerce i el teu ERP creuen ser la font de veritat al mateix temps. Quan ambdues conviuen sense control, apareixen incoherències. No és un bug puntual. És un problema d'integritat transaccional.

👉 Entén l'origen real aquí