Si llevas la contabilidad en Holded y vendes con PrestaShop, cada pedido que entra es un asiento que alguien acaba metiendo a mano. La integración oficial existe y funciona, pero sincroniza menos cosas de las que la gente da por supuestas, y las que no sincroniza son justo las que descuadran el cierre del mes.
Esto es lo que hace de verdad, lo que no hace, y qué hay que dejar preparado antes de conectar nada.
Qué es la integración de Holded con PrestaShop
Es un plugin oficial de Holded que se descarga desde la propia Holded Store y se sube a PrestaShop como cualquier otro módulo. No es una integración nativa que se active con un interruptor: hay instalación en la tienda, clave de API y configuración por secciones.
Holded documenta cuatro bloques de sincronización: ventas, productos, nivel de stock y almacenes. Y hay una pieza que sostiene las cuatro, así que conviene decirla antes que nada.
Todo depende del SKU
Holded usa el SKU de cada producto para enlazar la información entre las dos plataformas. No hay otro identificador de respaldo. Las consecuencias son concretas:
- Un producto sin SKU no se crea en Holded. Simplemente no viaja.
- Si un SKU de PrestaShop coincide con uno que ya existe en Holded, sobrescribe el producto existente.
- La sincronización de stock empareja por SKU, y solo funciona si coinciden exactamente.
- En PrestaShop el campo que hace de SKU es la referencia del producto, y tiene que coincidir con la de Holded.
Dicho de otro modo: si el catálogo tiene referencias vacías, duplicadas o puestas a ojo, la integración no va a fallar con un error claro. Va a sincronizar mal, que es peor. Ordenar las referencias antes de conectar nada no es un paso opcional del proceso, es el proceso.
Qué viaja, en qué dirección
| Dato | Dirección | Detalle |
|---|---|---|
| Pedidos | PrestaShop → Holded | Se convierten en pedido de venta, ticket o factura, según cómo mapees los estados del pedido |
| Contactos | PrestaShop → Holded | Opcional, al importar cada pedido. Se emparejan por ID, y si no, por email y luego por NIF |
| Productos | PrestaShop → Holded | Solo en un sentido. Lo que cambies en Holded no vuelve a la tienda |
| Stock | Bidireccional (opcional) | Requiere el complemento de Inventario de Holded |
| Almacenes | PrestaShop → Holded | Los movimientos se registran en el almacén que elijas |
Fíjate en la fila de productos, que es la que más malentendidos genera: el catálogo sube, no baja. Holded no es la fuente de verdad del catálogo en esta integración. Si alguien edita un producto en Holded esperando que se actualice la tienda, no va a pasar nada.
Los seis puntos donde esto se rompe
Ninguno es un fallo del plugin. Son límites documentados, y todos tienen la misma forma: funcionan bien hasta que llega el caso que no estaba previsto.
1. Las devoluciones no se importan
Holded lo dice sin rodeos: los reembolsos no viajan. Hay que meterlos a mano como facturas rectificativas. En una tienda con devoluciones habituales, esto es trabajo manual permanente, no una excepción puntual.
2. Los documentos entran como borrador
Las facturas creadas desde la tienda nacen en modo borrador y hay que aprobarlas para que sean definitivas. Es una red de seguridad razonable, pero significa que la integración no cierra el circuito sola: alguien revisa y aprueba.
3. Los impuestos se aproximan
Los impuestos de los pedidos importados se emparejan con los que ya tengas creados en Holded. Y aquí está el detalle que conviene leer dos veces: si no hay una coincidencia exacta, se usa el más parecido. Por eso Holded recomienda crear los impuestos genéricos antes de empezar. En una tienda que vende a varios países, esto se revisa antes, no después.
La opción de impuestos por país existe, pero solo en los planes Premium.
4. Packs, lotes y bundles no importan bien
La documentación es explícita: funcionan los productos simples y los que tienen variantes. Los packs, lotes y paquetes no se importan correctamente. Si tu catálogo se apoya en packs, este es el punto que decide si la integración te sirve tal cual o necesita trabajo a medida.
5. Un solo almacén
PrestaShop maneja un único almacén, así que solo se puede enlazar uno con Holded. Si tienes stock repartido en varios sitios, la integración estándar no lo refleja.
6. El histórico tiene tope
Se pueden importar pedidos antiguos desde el gestor de módulos, pero limitado al año en curso y al anterior. Si esperabas subir cinco años de histórico para tenerlo todo en Holded, no es el camino.
Añade un detalle menor pero molesto: de las imágenes del producto solo se actualiza la principal.
Multitienda: se puede, con una regla
Varias tiendas PrestaShop pueden conectarse a la misma cuenta de Holded, y basta con una sola clave de API para todas. Lo que cambia según el caso es qué activas en cada una:
- Mismos SKU y mismo stock en todas las tiendas: activa la sincronización de productos en una sola e importa solo stock en el resto.
- Algunos SKU compartidos: importa productos desde una tienda, crea a mano en Holded los que no se comparten, y deja el stock sincronizado en todas.
- SKU y stock distintos por tienda: activa productos y stock en todas.
El error típico es activar la importación de productos en todas las tiendas a la vez. Con SKU compartidos, cada una sobrescribe lo que acaba de escribir la anterior.
Requisitos, para no descubrirlos a mitad
- PrestaShop 1.7.8 o superior y PHP 7.4 o superior. La documentación avisa de que el plugin no es compatible con PHP 7.1 ni 7.2.
- Una clave de API creada en Holded, en Ajustes, Más, Desarrolladores.
- El complemento de Inventario de Holded si quieres sincronizar stock, pedidos de venta y almacenes.
- Los impuestos ya creados en Holded antes de la primera sincronización.
Sobre las versiones conviene una nota: la documentación habla de 1.7.8 o superior, que es una rama sin soporte desde hace tiempo. Si tu tienda está ahí, el problema que tienes no es la integración con Holded, es la versión: lo cuenta la guía de actualización de PrestaShop.
Qué dejar preparado antes de conectar
- Auditar las referencias del catálogo. Sin huecos, sin duplicados, y coincidiendo con los SKU de Holded.
- Crear los impuestos en Holded, y comprobar que existen todos los tipos que usa la tienda.
- Decidir el mapeo de estados de pedido: cuáles entran como pagados y cuáles como pendientes.
- Decidir qué documento genera cada pedido: pedido de venta, ticket o factura.
- Probar primero en una copia, no en la tienda que factura. Una sincronización mal configurada sobrescribe productos por SKU, y deshacer eso a mano no es rápido.
Este último punto no es prudencia de manual. Es la diferencia entre una integración que se pone en marcha un martes y una que se pasa dos semanas cuadrando el catálogo.
Cuándo la integración estándar no basta
Hay tres casos en los que el plugin oficial se queda corto y hay que desarrollar: catálogos construidos sobre packs, operaciones con varios almacenes reales, y tiendas con muchas devoluciones donde meter rectificativas a mano deja de ser asumible.
En esos casos lo que se hace es conectar por API, que es lo que explicamos en cómo conectar PrestaShop con un ERP, con las mismas preguntas de siempre: qué datos mandan, con qué frecuencia y quién gana cuando los dos lados cambian el mismo campo.
¿Quieres Holded y PrestaShop hablando sin repasar pedidos a mano?
En Soy.es somos PrestaShop Platinum Partner y llevamos mantenimiento de tiendas PrestaShop e integraciones con ERP: auditamos el catálogo, dejamos las referencias en orden y montamos la sincronización en preproducción antes de tocar la tienda que factura.