Guía
Cómo subir productos masivamente a WooCommerce
WooCommerce puede importar cientos de productos a la vez desde un archivo CSV. Esta guía repasa el importador integrado, cuándo conviene más un plugin o la API REST, y cómo conseguir datos limpios en el CSV desde el principio.
Añadir productos uno a uno en el administrador de WooCommerce es válido para una tienda pequeña, pero incorporar el catálogo de un proveedor de esa manera puede llevar días. WooCommerce incluye un importador CSV de productos, y existen plugins de importación y una API para trabajos más grandes o recurrentes.
La importación en sí rara vez es lo difícil. Lo difícil es generar un CSV correcto: una fila por producto o variación, las columnas adecuadas, atributos coherentes y descripciones que merezca la pena publicar.
Opción 1: el importador CSV integrado de WooCommerce
WooCommerce incluye un importador y un exportador CSV de productos. En el administrador de WordPress, ve a Productos → Todos los productos y elige Importar. Sube tu CSV, asocia sus columnas a los campos de WooCommerce y ejecuta la importación. Marcar “Actualizar los productos existentes” te permite actualizar los productos identificados por ID o SKU en lugar de crear duplicados.
- Exporta primero un producto existente y utiliza ese archivo como plantilla: muestra los nombres de columna exactos que espera tu tienda.
- Las columnas habituales incluyen Type, SKU, Name, Published, Short description, Description, Regular price, Categories, Tags, Images y Attribute 1 name / Attribute 1 value(s).
- Las imágenes se importan desde URL, por lo que deben ser de acceso público mientras se ejecuta la importación.
- Los productos variables necesitan una fila principal de tipo “variable” y una fila por cada variación que haga referencia a la principal.
- Los archivos muy grandes pueden agotar el tiempo de espera en hostings compartidos: divídelos en lotes de unos cientos de filas.
Opción 2: plugins de importación
Los plugins de importación de terceros añaden funciones de las que carece el importador estándar: importaciones programadas o recurrentes desde un feed de proveedor, compatibilidad con XML, reglas de transformación de campos y mejor gestión de archivos muy grandes. Tienen sentido cuando un proveedor envía con regularidad archivos actualizados de precios y existencias.
Los plugins siguen esperando datos estructurados. Si tu proveedor te facilita PDF en lugar de un feed, un plugin no elimina el trabajo de convertir esos PDF en filas.
Opción 3: la API REST de WooCommerce
Los desarrolladores y las herramientas de integración pueden crear productos mediante la API REST de WooCommerce, que incluye un endpoint por lotes que crea o actualiza muchos productos en una sola solicitud. Es adecuada para flujos automatizados y aplicaciones que crean productos directamente, sin un paso intermedio con CSV.
Doc2Shelf utiliza esta vía: tras la revisión, envía los productos a WooCommerce como productos simples en borrador con descripciones larga y corta, para que puedas comprobarlos en WooCommerce antes de publicarlos. Los atributos globales de filtro y los productos variables se configuran por separado en WooCommerce.
Preparar los datos de producto para una subida masiva
Sea cual sea el método de importación, la calidad de los datos determina el resultado. Antes de importar:
- Asigna a cada producto un SKU único: es la forma en que las actualizaciones posteriores encuentran el producto correcto.
- Crea primero las categorías y los atributos globales en WooCommerce y haz referencia a ellos de forma coherente.
- Normaliza las especificaciones: mismas unidades, mismos nombres de atributo y un valor por celda.
- Redacta descripciones propias en lugar de pegar el texto del proveedor; los marketplaces y los motores de búsqueda valoran el contenido único.
- Importa como borradores en una primera prueba (establece Published en -1; con 0 los productos quedan privados) y revisa una muestra antes de publicar todo.
Cuando tu proveedor solo envía PDF
Muchos proveedores facilitan fichas técnicas y catálogos en PDF, no feeds CSV. En ese caso el cuello de botella es la extracción: alguien tiene que leer cada PDF, rellenar las columnas y redactar una descripción.
Puedes hacerlo manualmente o extraer los datos con una herramienta y revisarlos. Doc2Shelf lee los PDF de los proveedores, extrae las especificaciones para su revisión, redacta las descripciones larga y corta de WooCommerce y crea los productos como borradores mediante la API REST, lo que sustituye el paso de la hoja de cálculo en los catálogos procedentes de PDF.
Errores habituales de importación en WooCommerce
Si una importación falla o produce resultados inesperados, comprueba primero lo siguiente:
- SKU duplicados o ausentes que hacen que se omitan filas o se dupliquen productos.
- Codificación de archivo incorrecta: guarda el CSV como UTF-8 para que los caracteres acentuados se importen correctamente.
- URL de imágenes que redirigen, exigen iniciar sesión o apuntan a archivos muy grandes.
- Rutas de categoría escritas de forma incoherente (usa “Padre > Hijo” para categorías anidadas).
- Variaciones cuyos valores de atributo no coinciden con los del producto principal.
Referencia de columnas del CSV de productos de WooCommerce
El importador estándar lee un conjunto fijo de nombres de columna. Si exportas un producto de tu propia tienda, obtienes los encabezados exactos que espera tu versión de WooCommerce; la tabla siguiente explica las columnas más importantes para una subida masiva. Solo Name es obligatoria: todas las demás columnas son opcionales, pero importar un catálogo sin Type, SKU, precios ni categorías deja mucho trabajo manual para más adelante.
Las columnas con una unidad en el encabezado, como Weight y las tres dimensiones, muestran la unidad configurada en los ajustes de tu tienda, así que copia esos encabezados de una exportación en lugar de escribirlos a mano. Los datos personalizados que no tienen columna propia van en una columna cuyo encabezado empieza por meta: seguido de la clave del campo.
| Columna | Qué contiene | Ejemplo | Notas |
|---|---|---|---|
| ID | ID de un producto de WooCommerce existente | — | Déjala vacía en los productos nuevos; las importaciones de actualización buscan primero la coincidencia por ID. |
| Type | Tipo de producto | simple | También variable, variation, grouped o external. Virtual y descargable son características que se añaden a un producto, no tipos independientes. |
| SKU | Tu código de producto único | ACME-KTL-17 | Segunda clave de coincidencia para las actualizaciones, después del ID. Debe ser única en la tienda. |
| GTIN, UPC, EAN, or ISBN | Identificador global de producto | 4006381333931 | Campo estándar. Desde WooCommerce 11.2, es la clave de coincidencia de reserva cuando el ID y el SKU están vacíos. |
| Name | Título del producto | Hervidor de acero inoxidable de 1,7 L | Es la única columna obligatoria. |
| Published | Estado tras la importación | -1 | 1 = publicado, 0 = privado, -1 = borrador, 2 = pendiente de revisión. |
| Regular price / Sale price | Precios | 49.90 | Números simples, sin símbolo de moneda. |
| Stock | Cantidad en inventario | 25 | Úsala junto con In stock? y Backorders allowed? según haga falta. |
| Weight (unit), Length (unit), Width (unit), Height (unit) | Peso y dimensiones de envío | 1.2 | El encabezado muestra la unidad de tu tienda, por ejemplo kg o cm. |
| Categories | Categorías de producto | Cocina > Hervidores, Regalos | Separadas por comas; «>» indica una subcategoría. |
| Images | URL de las imágenes | https://cdn.example.com/ktl-front.jpg | Separadas por comas; la primera imagen pasa a ser la imagen destacada. |
| Parent | Producto principal de una fila de variación | ACME-KTL | El SKU del producto principal, o id: seguido del ID del producto principal. |
| Attribute 1 name / Attribute 1 value(s) | Un atributo y sus valores | Color / Rojo, Azul | Añade Attribute 2, Attribute 3, etc. para más atributos. |
| Attribute 1 visible / Attribute 1 global | Indicadores de ese atributo | 1 / 1 | Visible lo muestra en la página del producto; global usa un atributo común a toda la tienda. |
| Attribute 1 default | Valor preseleccionado de un producto variable | Rojo | Defínelo en la fila del producto principal. |
| meta:supplier_code | Un campo meta personalizado | D-4471 | Cualquier encabezado que empiece por meta: se guarda como meta personalizado. |
Productos variables en un CSV: filas principales y filas de variación
Un producto variable se reparte en varias filas: una fila principal que define el producto y los valores de atributo que ofrece, y una fila por variación con el precio, el SKU y las existencias de una combinación concreta. La fila principal tiene Type «variable»; cada fila de variación tiene Type «variation» y remite al producto principal en la columna Parent, con el SKU del principal o id: seguido de su ID.
Las columnas de atributo unen las filas. En la fila principal, Attribute 1 value(s) enumera todos los valores que ofrece el producto, separados por comas. En cada variación aparece el mismo Attribute 1 name con exactamente uno de esos valores. La ortografía y las mayúsculas deben coincidir: una variación que diga «rojo» bajo un producto principal que ofrece «Rojo» puede acabar sin un valor de atributo utilizable.
Establece Attribute 1 global en 1 en el producto principal y en sus variaciones cuando uses un atributo común a toda la tienda creado en Productos → Atributos: es con lo que funcionan la navegación por capas y los widgets de filtro. Desde WooCommerce 11.1, una importación de actualización también puede añadir variaciones nuevas a un producto variable que ya existe, de modo que puedes ampliar una gama sin reconstruir el producto principal.
- Mantén cada fila principal encima de sus variaciones para que el archivo sea fácil de revisar y para que el producto principal exista cuando sus variaciones hagan referencia a él.
- Asigna a cada variación su propio SKU y su propio precio; una variación sin precio no se puede comprar.
- Usa Attribute 1 default en el producto principal para controlar qué opción aparece preseleccionada.
| Fila | Type | SKU | Parent | Attribute 1 name | Attribute 1 value(s) |
|---|---|---|---|---|---|
| Principal | variable | ACME-KTL | — | Color | Rojo, Azul |
| Variación 1 | variation | ACME-KTL-RED | ACME-KTL | Color | Rojo |
| Variación 2 | variation | ACME-KTL-BLU | ACME-KTL | Color | Azul |
Añadir imágenes de producto mediante el CSV
La columna Images admite una o varias URL de imagen separadas por comas. La primera URL se convierte en la imagen destacada y las demás forman la galería del producto en el orden indicado. Durante la importación, WordPress descarga cada archivo en tu biblioteca de medios, por lo que todas las URL deben ser de acceso público en ese momento: sin inicio de sesión, sin enlaces compartidos que caduquen y sin redirecciones a una página web en lugar de al archivo.
Las imágenes suelen ser la parte más lenta de una importación: unos cientos de productos con cinco imágenes cada uno suponen más de mil descargas. Redimensiona las imágenes antes de alojarlas, usa nombres de archivo descriptivos (kettle-red-front.jpg, no IMG_0042.jpg) y divide los catálogos grandes en archivos más pequeños.
El importador estándar no puede establecer el texto alternativo de las imágenes. Añádelo después en la biblioteca de medios, mediante la API REST o con una extensión de importación que lo admita. Una variación admite una sola imagen, así que da a cada fila de variación una URL como máximo.
Crear productos de forma masiva con la API REST de WooCommerce
La API REST es la mejor opción cuando las importaciones se repiten, cuando los datos de producto ya están en otro sistema o cuando nadie debería tener que manejar un CSV. Su endpoint por lotes de productos (POST /wp-json/wc/v3/products/batch) acepta operaciones de creación, actualización y eliminación en una sola solicitud.
De forma predeterminada, una solicitud por lotes está limitada a 100 objetos entre sus creaciones, actualizaciones y eliminaciones. El mismo límite se aplica a los endpoints por lotes de variaciones, categorías, atributos y términos de atributo. Un catálogo de 1000 productos requiere, por tanto, al menos diez solicitudes, y más si se añaden variaciones.
- Crea una clave de la API REST con permiso de lectura y escritura en WooCommerce → Ajustes → Avanzado → API REST, o deja que una aplicación solicite una a través de la pantalla de autorización de WooCommerce.
- Crea primero las categorías, los atributos globales y los términos de atributo, y anota sus ID.
- Envía los productos simples y los productos principales en lotes de hasta 100, con el estado establecido en borrador.
- Crea las variaciones de cada producto variable mediante el endpoint por lotes de variaciones de ese producto.
- Comprueba el resultado de cada elemento en la respuesta y reintenta solo los elementos que hayan fallado.
- Revisa por muestreo algunos borradores en el administrador y después publícalos.
Elegir un plugin o una vía para la subida masiva de productos a WooCommerce
Si el importador estándar no basta, evalúa un plugin o una extensión de importación por cómo gestiona tus datos, no por la longitud de su lista de funciones, y pruébalo en una copia de pruebas de la tienda con un archivo real de proveedor antes de comprometerte con él. La tabla compara las cuatro vías, seguida de las preguntas que conviene hacer a cualquier plugin.
- Formatos de origen: solo CSV, o también XML, hojas de cálculo y feeds remotos obtenidos por URL.
- Programación: si puede repetir una importación según un calendario para recoger nuevos precios y existencias.
- Mapeo y transformaciones: renombrar columnas, dividir valores, convertir unidades y aplicar reglas de precios durante la importación.
- Productos variables: si crea de forma fiable productos principales, variaciones y atributos globales.
- Imágenes: cómo las descarga, si detecta duplicados y si establece el texto alternativo.
- Archivos grandes: procesamiento en segundo plano o por fragmentos para que las importaciones largas no agoten el tiempo de espera.
- Reglas de actualización: con qué clave busca coincidencias (ID, SKU o GTIN) y qué campos puede sobrescribir.
| Vía | Ideal para | Ten en cuenta |
|---|---|---|
| Importador CSV estándar | Importaciones puntuales y actualizaciones masivas realizadas por el personal de la tienda | Límites de subida y de tiempo del servidor; sin texto alternativo de imágenes |
| Plugin o extensión de importación | Feeds recurrentes de proveedores, fuentes XML o de hojas de cálculo, actualizaciones programadas | Un plugin más que mantener actualizado y compatible |
| Solicitudes por lotes de la API REST | Flujos automatizados y sincronización desde otro sistema | Tiempo de desarrollo; 100 objetos por solicitud por lotes de forma predeterminada |
| Aplicación que crea los productos por ti | Datos de producto que no parten de una hoja de cálculo, como los documentos de proveedores | Comprueba qué tipos de producto y qué campos establece realmente la aplicación |
Lista de comprobación previa a la importación y soluciones a los errores
La mayoría de las importaciones fallidas se deben a un paso de preparación omitido. Repasa la lista de comprobación antes de cada importación grande y usa la tabla para diagnosticar los problemas que aún surjan.
- Haz una copia de seguridad de la base de datos o ejecuta la importación en una copia de pruebas de la tienda.
- Exporta un producto existente y copia su fila de encabezados en tu archivo.
- Crea las categorías, los atributos globales y los términos de atributo a los que hace referencia el archivo.
- Comprueba que cada SKU es único y que el valor Parent de cada variación coincide con el SKU de un producto principal existente.
- Usa números simples en las columnas de precio, existencias, peso y dimensiones.
- Abre una muestra de URL de imágenes en una ventana privada del navegador para confirmar que cargan sin iniciar sesión.
- Establece Published en -1 para que los productos lleguen como borradores.
- Guarda el archivo como CSV en UTF-8.
- Importa un archivo de prueba de diez filas, revisa los resultados y después importa el resto por lotes.
| Problema | Causa probable | Solución |
|---|---|---|
| Productos duplicados en lugar de actualizados | No está marcada la opción «Actualizar los productos existentes», o los ID y los SKU no coinciden con los de la tienda | Marca la opción; copia los ID o los SKU de una exportación reciente |
| Filas omitidas en una importación de actualización | No hay coincidencia por ID ni por SKU (el GTIN solo se prueba cuando ambos están vacíos, desde la 11.2) | Añade el SKU o el ID del producto existente a cada fila |
| Variaciones importadas como productos independientes | Type no está establecido como variation, o la columna Parent está vacía o mal escrita | Usa Type «variation» y el SKU exacto del producto principal |
| Imágenes que faltan | La URL requiere iniciar sesión, redirige o el servidor de alojamiento bloquea la descarga | Aloja las imágenes en URL públicas y directas y vuelve a ejecutar la importación |
| Archivo rechazado al subirlo | Archivo mayor que el tamaño máximo de subida del servidor | Divide el archivo o pide a tu hosting que aumente el límite |
| La importación se detiene a medias | Se ha alcanzado el límite de tiempo o de memoria del servidor | Importa archivos más pequeños |
Probar con productos ficticios antes de la importación real
Un pequeño archivo ficticio detecta errores de mapeo antes de que afecten a cientos de productos. Créalo a partir de tu plantilla real para que los encabezados sean idénticos, y da a cada producto de prueba una marca evidente (un prefijo «TEST-» en el SKU y una etiqueta «test») para poder encontrarlos y eliminarlos después.
Cubre todos los casos que contenga tu archivo real, no solo el más sencillo. Suelen bastar unas diez filas:
- Un producto simple con todas las columnas que piensas usar rellenadas.
- Un producto variable con dos atributos y al menos tres variaciones.
- Un producto con una galería de varias imágenes y otro sin imágenes.
- Un producto en una categoría anidada que todavía no existe.
- Un producto con caracteres acentuados, comillas y una coma dentro de la descripción.
- Una fila que actualice un producto existente mediante el SKU.
- Comprueba los resultados en el administrador y en la tienda (precios, desplegables de variaciones, orden de las imágenes y páginas de categoría) y elimina los productos de prueba antes de la importación real.
Preguntas frecuentes
- ¿Tiene WooCommerce una subida masiva de productos integrada?
- Sí. WooCommerce incluye un importador CSV de productos en Productos → Todos los productos → Importar y un exportador equivalente. No hace falta ningún plugin para las importaciones CSV estándar.
- ¿Cuántos productos puedo importar a WooCommerce a la vez?
- El importador no establece un límite fijo de productos, pero los tiempos de espera del servidor y los límites de memoria de tu hosting determinan lo que resulta viable. Dividir los catálogos grandes en lotes de unos cientos de filas es la solución habitual.
- ¿Puedo actualizar productos existentes con una importación CSV?
- Sí. Activa “Actualizar los productos existentes” en el importador; las filas se asocian a los productos existentes por ID o SKU y solo se actualizan las columnas que incluyas.
- ¿Puedo importar productos a WooCommerce directamente desde PDF?
- No con el importador estándar, que espera un CSV. Primero tienes que extraer los datos de producto de los PDF, manualmente o con una herramienta de extracción, y luego importarlos mediante CSV o crear los productos a través de la API REST.
- ¿Qué columnas necesita un CSV de productos de WooCommerce?
- El importador estándar solo exige Name. Para un catálogo utilizable, incluye al menos Type, SKU, Published, Regular price, Categories, Images y Description. Exporta un producto de tu tienda para obtener los nombres de encabezado exactos que espera tu versión.
- ¿Cómo se importan productos variables con un CSV?
- Añade una fila principal con Type «variable» que enumere todos los valores de atributo y, después, una fila por variación con Type «variation», el SKU del producto principal en la columna Parent, un único valor de atributo y su propio SKU y precio.
- ¿Puedo importar imágenes de producto y texto alternativo con el importador CSV?
- Las imágenes, sí: enumera URL de imágenes públicas en la columna Images, separadas por comas, con la imagen destacada en primer lugar. El texto alternativo, no: el importador estándar no puede establecerlo, así que añádelo después o usa la API REST o una extensión.
- ¿Cuántos productos puedo crear por solicitud de la API REST de WooCommerce?
- El endpoint por lotes acepta hasta 100 objetos por solicitud de forma predeterminada, contando juntas las creaciones, las actualizaciones y las eliminaciones. Los catálogos más grandes se envían como una serie de solicitudes por lotes.