> ## Documentation Index
> Fetch the complete documentation index at: https://docs.readyforcommerce.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Ready for Commerce is an ecosystem that currently contains two products, PIM and Repricer, standing on one shared foundation: one identity, one organization, one team, one bill. Do not call it a platform with features, and never hint at an unreleased product.
> PIM connects to Shopify, Amazon, Square, Google Merchant Center and BigCommerce. Repricer connects to Amazon, Walmart, Shopify, BigCommerce, eBay and Square. The two products do not share one list, and each integration is authorized separately inside each product. The roster grows on purpose, so describe what the product does and let a table carry which integrations do it today, instead of counting them or writing that only one does something.
> Integration is the word this product uses, and it is the default in the documentation: the connection, the account, the Integrations screen, the per-account settings and the sync state are all integrations. Channel is reserved for the narrow sense of a destination where a listing lives, as in a product being live on a channel or archived on the channel.
> Newegg is not a supported channel. Do not describe it.
> On Amazon, PIM manages the offer only: price, availability and condition. It does not publish listing content such as titles, descriptions, images or specifications.
> Sign-in is passwordless: a single-use code emailed to the user, or Google. There are no passwords anywhere, so never describe a password, a sign-up with a password, or an email confirmation link.
> There is no public API for customers and no customer-facing webhooks. There is no organization-wide activity feed and no audit export, but the PIM does keep version history on products, brands, categories, tags and specifications, with who changed what and a restore, so never write that changes are not recorded or that an edit cannot be undone. Do not describe capabilities that are not documented here.
> Never write that the products have no AI, and never write that anything is AI-powered. Both are wrong. The PIM's image Optimizer runs AI-backed transforms the seller starts on purpose: Upscale, Remove background, and the region selection behind Refine. The Repricer reads competitor prices off web pages on the server. No control, badge or tooltip in either product names AI, and the seller never writes a prompt, so describe what the buttons do in the app's own words instead of reaching for the word.
> A PIM product, brand, category or variant can be switched off per connected integration account. Hover the channel badge and the switch is beside the account name in the card that opens. It carries no visible caption, so never call it the Sync switch: Sync is only its accessible name. On a variant-grained provider, Amazon today, the switch moves into the variant editor. On a product it asks whether to delete it from the channel, archive it there, or leave it live. Disabling stops publishing, not reading. There is still no per-field sync toggle.
> The PIM's image Optimizer replaced a feature called Squarify, which no longer exists. It resizes to an aspect ratio or to exact dimensions, removes backgrounds, upscales, trims the transparent margin around a cutout and re-centers it, pads, fills and re-encodes, and it always publishes a new asset instead of changing the original. Nothing crops into the picture: the subject is always contained whole.
> The PIM has no repricing engine and never reacts to a competitor's price. It does build the price it publishes to each integration account from the seller's own fields, configured in that account's settings, so do not write that the PIM has no pricing rules.
> Neither product has an in-app notification center, bell or inbox. Notifications are delivered by email only.
> Billing is per organization and per product, and only the organization owner can see or change it. Team members are free and uncounted, so never describe seats or per-user pricing.
> The seller never picks a plan. Each product has twelve price tiers assigned automatically from usage: the PIM from catalog product count, which includes drafts and archived products, and the Repricer from trailing 30-day sales. Nothing is feature-gated by plan and exceeding a tier never blocks work, so never write that a feature requires a higher plan.
> A subscription that is past due or paused makes the product read-only, which stops repricing and blocks edits without deleting data. Only a canceled subscription locks the seller out. Nothing is ever charged without a payment method on file.
> Pages containing the text 'This page has not been written yet', or its Spanish equivalent 'Esta página todavía no está escrita', are placeholders. Do not treat their headings as documented behavior.

# Importaciones

> Una importación carga una hoja de cálculo en tu catálogo, así agregas o cambias cientos de productos de una vez en lugar de abrirlos uno por uno.

Una importación lee una hoja de cálculo y escribe lo que hay adentro en tu catálogo. Le das al PIM un archivo CSV o XLSX, le dices qué columna de tu archivo alimenta cada campo, y él pasa por tus filas una por una. Al terminar recibes una copia de tu propio archivo con dos columnas extra que dicen qué pasó con cada fila.

Casi siempre se importa por una de tres razones. La primera es cargar tu catálogo en el PIM. La segunda es cambiar cientos de tus productos de una sola vez en lugar de abrirlos uno por uno. La tercera es devolver un archivo que exportaste y editaste en una hoja de cálculo. Una importación puede agregar registros, cambiar registros, vaciar los campos que elijas o eliminar registros, y tú decides cuál de esas cuatro cosas hace.

Todo esto está en `Importar/Exportar`, dentro de la pestaña `Importaciones`. El botón `Crear importación`, arriba de la tabla, abre un diálogo que te lleva por el archivo. La tabla de abajo lista todas las importaciones que ha hecho tu equipo, con un estado y cuatro contadores en cada una.

Un archivo escribe un solo tipo de registro. Eliges entre ocho tipos, y productos es donde casi todo el mundo empieza.

## Antes de empezar

Hay tres cosas que importan antes de tu primera importación. Todo lo demás de esta página puede esperar hasta que lo necesites.

### Qué te permite hacer tu rol

| Rol | Crear o cancelar una importación | Descargar el archivo de resultados |
| --- | --- | --- |
| `Administrador` | Sí | Sí |
| `Gerente` | Sí | Sí |
| `Editor` | No | Sí |

Por debajo de `Gerente`, el botón `Crear importación` que está arriba de la tabla no se te muestra. Aun así puedes abrir cualquier importación de la tabla y descargar su archivo de resultados. Los roles se asignan en [equipo, roles y permisos](/es/team#qué-puede-hacer-cada-rol-del-pim).

Quien tiene rol `Editor` es el caso que sorprende. Puede exportar pero no importar, así que ve un botón `Crear exportación` en la pestaña `Exportaciones` y no ve un botón `Crear importación` aquí.

### No hay forma de deshacer

<Warning>
  Nada revierte una importación. No hay reversión ni botón para anularla, y si la cancelas a la mitad, todas las filas que ya escribió se quedan escritas.
</Warning>

Tampoco hay nada que te muestre qué filas fallarían antes de correrla. Te enteras después, en el archivo de resultados, cuando la escritura ya ocurrió. Así que importa unas pocas filas primero, lee el archivo de resultados, corrige lo que te señale, y recién ahí manda todo. Una prueba de 20 filas te cuesta dos minutos y es la única vista previa que existe.

### Importa en el orden correcto

Tu archivo solo puede apuntar a categorías y especificaciones que ya existen. Si importas un archivo de productos que nombra una categoría que no tienes, el producto entra sin esa categoría. El PIM no va a inventar un lugar en tu árbol de categorías a partir de una celda de una hoja de cálculo. Las marcas y las etiquetas son distintas: esas dos son listas planas de nombres, así que una importación de productos sí puede crearlas por ti.

Para cargar un catálogo desde cero, trabaja en este orden:

1. Categorías
2. Grupos de especificaciones
3. Definiciones de especificación
4. Valores de especificación
5. Productos

## Cómo importar un archivo

<Steps>
  <Step title="Abre el diálogo de importación">
    Desde `Importar/Exportar`, entra a la pestaña `Importaciones` y pulsa `Crear importación` arriba de la tabla.
  </Step>

  <Step title="Elige qué vas a importar">
    La primera pantalla dentro del diálogo se llama `Entidad`. Muestra ocho tarjetas, una por cada tipo de registro. Pulsa `Productos`, o pulsa la tarjeta que corresponda a tu archivo.
  </Step>

  <Step title="Agrega tu archivo">
    En `Archivo`, arrastra tu archivo al área de carga, o pulsa `Subir nuevo` para elegir uno de tu computadora. Debajo aparece una vista previa de tus primeras filas en cuanto el archivo llega.
  </Step>

  <Step title="Elige el modo">
    `Modo` muestra cuatro tarjetas. Pulsa `Crear` para agregar registros que todavía no están en tu catálogo.
  </Step>

  <Step title="Mapea tus columnas">
    `Columnas` lista los campos de tu catálogo a la izquierda. Cada campo tiene a su derecha una lista desplegable con los nombres de columna de tu archivo, así que elige la columna que lo alimenta. Todo lo que el PIM reconoció ya viene puesto.
  </Step>

  <Step title="Ajusta las opciones">
    En `Opciones`, decide qué debe pasar con una fila que nombra una marca o una categoría que no tienes. La primera vez puedes dejar todo como está.
  </Step>

  <Step title="Revisa el resumen y envía">
    `Resumen` te devuelve todo lo que elegiste. Léelo y pulsa `Enviar`, abajo a la derecha del diálogo.
  </Step>
</Steps>

Ese es todo el flujo. Tu importación aparece de inmediato al principio de la tabla, va pasando por varios estados mientras corre, y termina con un conteo de filas exitosas, advertencias, errores y filas bloqueadas. Estés donde estés en la app, aparece un aviso pequeño cuando termina.

Todo lo que sigue explica esas pantallas una por una, y después cómo leer lo que volvió. No necesitas nada de eso para una primera importación de un archivo chico.

## Cada opción en detalle

El diálogo tiene ocho pantallas en total: `Entidad`, `Archivo`, `Modo`, `Reglas de coincidencia`, `Columnas`, `Opciones`, `Campos a limpiar` y `Resumen`. Nunca las ves las ocho, porque el modo que elijas decide cuáles te aplican.

| Modo | Pantallas que ves |
| --- | --- |
| `Crear` | `Entidad`, `Archivo`, `Modo`, `Columnas`, `Opciones`, `Resumen` |
| `Actualizar` | `Entidad`, `Archivo`, `Modo`, `Reglas de coincidencia`, `Columnas`, `Opciones`, `Resumen` |
| `Limpiar` | `Entidad`, `Archivo`, `Modo`, `Reglas de coincidencia`, `Campos a limpiar`, `Resumen` |
| `Eliminar` | `Entidad`, `Archivo`, `Modo`, `Reglas de coincidencia`, `Resumen` |

`Limpiar` y `Eliminar` se saltan tanto `Columnas` como `Opciones`, así que en esos dos modos los valores de tus celdas nunca se leen. Solo importan las columnas a las que apuntan tus reglas de coincidencia. La tarjeta `Etiquetas` nunca muestra `Opciones` en ningún modo, porque una etiqueta no tiene nada que configurar.

Los marcadores de paso de arriba del diálogo solo te llevan hacia atrás. `Siguiente` está abajo a la derecha y se queda en gris hasta que la pantalla en la que estás esté completa, y las secciones de abajo dicen qué cuenta como completa en cada una.

Nada de lo que configuras se guarda en ningún lado, así que recargar la página pierde toda la configuración y te devuelve a `Entidad`. Cerrar el diálogo te pide confirmar primero, con `Descartar` y `Seguir editando`, y descartar elimina el archivo que subiste. Mientras hay un envío en curso, el diálogo no se cierra.

### Paso 1: Elige qué vas a importar

`Entidad` muestra ocho tarjetas. Cada tarjeta es un tipo de registro, y tu archivo escribe ese tipo y ninguno más. Si cambias esta tarjeta más adelante, reinicias todas las pantallas que vienen después.

| Tarjeta | Úsala para |
| --- | --- |
| `Productos` | Tus productos y sus variantes, con precios, existencias, imágenes y especificaciones |
| `Marcas` | Nombres de marca, descripciones, logos y sus direcciones web |
| `Categorías` | Tu árbol de categorías, una ruta completa por fila |
| `Etiquetas` | Nombres y descripciones de etiquetas |
| `Grupos de especificaciones` | El nivel superior de tus especificaciones, y las categorías a las que aplica cada grupo |
| `Definiciones de especificación` | El nivel intermedio, como `Color` dentro de un grupo llamado `Apariencia` |
| `Valores de especificación` | Los valores permitidos bajo una definición, como `Rojo` |
| `Recursos` | Imágenes y documentos traídos desde direcciones web, y a dónde se asigna cada uno |

Si no tienes claro cuál de las últimas tres quieres, [especificaciones](/es/pim/catalog/specifications) explica qué es un grupo, una definición y un valor.

### Paso 2: Agrega tu archivo

`Archivo` es donde entra tu hoja de cálculo. Arrástrala al área de carga, o pulsa `Subir nuevo` para buscarla en tu computadora. Si el archivo está en la web, pulsa `Desde URL` al lado: se abre un diálogo pequeño con un campo `URL`, y pegar ahí una dirección de descarga directa trae el archivo por ti.

Una barra muestra cómo avanza la subida, y aparece una tabla de vista previa cuando el archivo se termina de leer. Ves 10 filas como máximo, tenga las que tenga tu archivo, porque la vista previa está para comprobar que el PIM leyó tu archivo como esperabas y no para mostrarte tus datos.

`Siguiente` se enciende cuando la vista previa encuentra al menos una columna en tu archivo. Arriba de esa vista previa hay tres controles.

| Control | Qué hace |
| --- | --- |
| `La primera fila es un encabezado` | Un interruptor. Encendido significa que la fila 1 trae tus nombres de columna. Apágalo y la fila 1 pasa a ser datos |
| `Hoja` | Una lista desplegable, y solo aparece cuando tu XLSX tiene más de una hoja con datos |
| El área de carga misma | Suelta un segundo archivo encima en cualquier momento y el primero se descarta |

**Deja `La primera fila es un encabezado` encendido salvo que tu archivo de verdad no traiga encabezado.** Apagarlo renombra todas las columnas a `Column A`, `Column B` y así, y las pantallas siguientes mapean contra esos nombres. Como los nombres cambian, apagar el interruptor borra cualquier regla de coincidencia y cualquier mapeo que ya hubieras definido.

<Accordion title="Cómo se deducen tus nombres de columna, y qué pasa con los raros">
  En un CSV, la fila de encabezado es la primera línea que no está vacía, así que unas líneas vacías arriba no descuadran la lectura. En un XLSX es la primera fila física, esté vacía o no.

  | Tu archivo trae | Recibes |
  | --- | --- |
  | Dos columnas con el mismo encabezado | `Nombre` y `Nombre (2)` |
  | Una celda de encabezado vacía | `column_3`, contando las columnas desde uno |
  | Celdas más allá de la última columna con encabezado | Nada. Se descartan |
  | Filas vacías en medio | Nada. Se omiten |

  Nunca eliges el carácter que separa los valores de un CSV. Se encuentra por ti, y se reconocen la coma, el punto y coma, la tabulación, la barra vertical, la barra invertida, el acento circunflejo y la virgulilla. El texto se lee como UTF-8, y un carácter que no se pueda leer se reemplaza por una marca en lugar de detener el archivo.
</Accordion>

### Paso 3: Elige el modo

`Modo` muestra cuatro tarjetas. El modo decide si tus filas crean algo, cambian algo, vacían algo o destruyen algo.

| Modo | Qué le hace a cada fila |
| --- | --- |
| `Crear` | La inserta. Una fila cuyo registro ya existe es un error, y nunca se convierte en una actualización silenciosa |
| `Actualizar` | Encuentra el registro y reescribe los campos que mapeaste. Una fila que no encuentra nada es un error |
| `Limpiar` | Encuentra el registro y vacía cada campo que marcaste en `Campos a limpiar`. No toca nada más |
| `Eliminar` | Encuentra el registro y lo elimina, con las mismas revisiones que hace el botón de eliminar del catálogo |

**Elige `Crear` para un catálogo que estás cargando por primera vez**, y para cualquier archivo donde cada fila sea de verdad nueva. Elige `Actualizar` cuando los registros ya existen y quieres cambiar algunos de sus campos, que es además la opción segura para un segundo intento después de un `Crear` a medias. Elige `Limpiar` cuando quieres vaciar campos y no puedes expresarlo en una celda, porque una celda vacía significa «deja esto como está» y nunca significa «bórralo». Elige `Eliminar` solo cuando estés seguro, porque nada devuelve esos registros.

Si cambias el modo más adelante, reinicias todas las pantallas que vienen después.

<Danger>
  El modo `Eliminar` es permanente. `Enviar` se pone rojo y arriba del resumen aparece un aviso rojo diciendo que se eliminarán registros de forma permanente. Un solo clic es toda la confirmación, y no escribes nada para confirmar.
</Danger>

Si eliminas un producto pierdes sus variantes, junto con sus valores de especificación y sus asignaciones de categoría, etiqueta y recurso. Nada te impide eliminar un producto o un recurso.

Los otros seis tipos tienen una protección. Una marca, categoría, etiqueta, grupo de especificaciones, definición o valor no se elimina mientras algo de tu catálogo siga apuntando a ella, y recibes un error por fila que dice qué sigue asignado. Desasigna esos registros primero, o combina el registro desde el catálogo.

Cuánto elimina una sola fila depende de con qué coincidió. Un producto tiene variantes debajo. Coincidir por un identificador de variante y coincidir por un identificador de producto son dos instrucciones distintas.

| Tu fila coincidió por | Qué se elimina |
| --- | --- |
| Algo que es de la variante: SKU, código de barras, ISBN, número de parte, identificador personalizado o un ID de variante | Solo esa variante |
| Algo que es de la variante, en la última variante que le queda al producto | La variante, y el producto con ella |
| Algo que es del producto: su slug, que es el identificador de su dirección web, su título o un ID de producto | El producto completo, con todas sus [variantes](/es/pim/catalog/variants) |

### Paso 4: Haz coincidir tus filas con registros

`Reglas de coincidencia` es como el PIM encuentra el registro del que habla cada una de tus filas. `Crear` nunca toca un registro que ya tienes, así que nunca muestra esta pantalla. Los otros tres modos sí, y ninguno puede correr sin ella.

Una regla empareja un destino con una columna de tu archivo. El destino es qué tipo de cosa buscar, y la columna es de dónde sale el valor. Cada regla está en su propia tarjeta, y cada una se llama `Regla 1`, `Regla 2` y así.

| En una tarjeta de regla | Qué hace |
| --- | --- |
| `Coincidencia simple` | Un botón de opción. La regla usa un destino y una columna |
| `Coincidencia compuesta` | Un botón de opción. La regla usa dos o más, y todos tienen que coincidir |
| La lista desplegable de la izquierda de cada fila | Elige el destino |
| La lista desplegable de la derecha de cada fila | Elige la columna de tu archivo que lo alimenta |
| `Agregar` | Suma otro destino a una regla compuesta |
| El asa de arriba a la izquierda de la tarjeta | Arrástrala para mover la regla arriba o abajo de otra |
| `Agregar regla` debajo de las tarjetas | Suma una regla entera |

Tus reglas corren de arriba abajo, y la primera que encuentra exactamente un registro es la que se aplica. Por eso importa el orden y por eso puedes arrastrar las tarjetas.

| Lo que encontró una regla | Qué pasa |
| --- | --- |
| Exactamente un registro | La regla gana y tu fila se aplica |
| Más de uno | La regla se detiene ahí. No pasa a la regla siguiente |
| Nada | Tu fila recibe un error que dice que no se encontró ningún registro coincidente |

**Usa `Coincidencia simple` con la columna más específica que tengas.** Un SKU o un ID identifican un registro por sí solos. Una sola regla sobre cualquiera de los dos es todo lo que tu archivo necesita casi siempre. Recurre a `Coincidencia compuesta` cuando ninguna columna sola sea única en tu catálogo. En la práctica eso significa emparejar un producto por SKU más nombre de marca, porque el mismo SKU del proveedor aparece bajo dos marcas. Pasa una regla a `Coincidencia compuesta` y se te llena la forma habitual de esa tarjeta.

Los destinos que puedes elegir dependen de la tarjeta, y dos de ellos se comportan distinto al resto.

| Tarjeta | Destinos que puede usar una regla simple | Destinos que solo puede usar una regla compuesta |
| --- | --- | --- |
| `Productos` | `ID`, `SKU`, `Número de parte`, `Código de barras`, `ISBN`, `Personalizado`, `Slug`, `Título` | `Nombre de marca`, `Tipo de producto` |
| `Marcas` | `ID`, `Nombre de marca`, `Slug de marca` | Ninguno |
| `Categorías` | `ID`, `Slug de categoría`, `Ruta de categoría` | Ninguno |
| `Etiquetas` | `ID`, `Nombre de etiqueta` | Ninguno |
| `Grupos de especificaciones` | `ID`, `Nombre del grupo de especificaciones` | Ninguno |
| `Definiciones de especificación` | `ID`, `Nombre de definición` | `Nombre del grupo` |
| `Valores de especificación` | `ID`, `Nombre de valor` | `Nombre del grupo`, `Nombre de definición` |
| `Recursos` | `ID`, `URL de recurso`, `Nombre para mostrar` | Ninguno |

`Ruta de categoría` baja por tu árbol desde arriba, así que una celda que dice `Electrónica > Teléfonos` encuentra la hija y no cualquier cosa llamada `Teléfonos`. `URL de recurso` acepta tanto la dirección que escribe una exportación como la dirección pública que ves en el catálogo. Ignora todo lo que viene después del signo de interrogación en ambas, así que una dirección vencida de tu archivo igual funciona.

Hay tres reglas que las listas desplegables aplican por ti, para que una regla que puedas armar sea una regla que pueda funcionar:

- **`ID` nunca aparece en una regla compuesta.** Un ID ya identifica un registro, así que sumarle un segundo destino solo puede reducir el resultado a nada.
- **Una regla compuesta siempre conserva un destino identificador.** Una regla hecha solo de `Nombre de marca` coincidiría con todos los productos de esa marca. Mientras tu regla no tenga un destino identificador, la lista no te ofrece nada más y el botón que quita el último queda oculto.
- **El mismo destino no puede aparecer dos veces en una regla.** Un destino que ya usa otra fila de la misma tarjeta desaparece de la lista.

**Ya tienes hasta 2 reglas puestas la primera vez que abres esta pantalla.** Tus nombres de columna se comparan contra una lista de nombres que el PIM conoce, ignorando mayúsculas y puntuación. Así que `Product ID`, `product_id` y `PRODUCT-ID` caen todos en el mismo destino. Si no se reconoce nada, recibes una regla vacía con un destino razonable y una columna en blanco para que la llenes.

<Accordion title="Los nombres de columna que reconoce cada tarjeta por su cuenta">
  | Tarjeta | Nombres que reconoce |
  | --- | --- |
  | `Productos` | `id`, `product_id`, `uuid`, `variant_id`, `variant_uuid`, `sku`, `variant_sku`, `seller_sku`, `item_sku`, `part_number`, `part_numbers`, `mpn`, `mpns`, `manufacturer_part_number`, `manufacturer_part_numbers`, `gtin`, `gtins`, `upc`, `upcs`, `ean`, `eans`, `barcode`, `barcodes`, `isbn`, `isbns`, `slug`, `handle`, `url_slug`, `product_handle`, `title`, `name`, `product_name`, `product_title` |
  | `Marcas` | `id`, `brand_id`, `uuid`, `name`, `brand_name`, `brand` |
  | `Categorías` | `id`, `category_id`, `uuid`, `category_path`, `path`, `full_path`, `breadcrumb`, `slug`, `category_slug`, `handle` |
  | `Etiquetas` | `id`, `tag_id`, `uuid`, `name`, `tag_name`, `tag` |
  | `Grupos de especificaciones` | `id`, `spec_group_id`, `uuid`, `group_name`, `name`, `spec_group_name`, `spec_group` |
  | `Definiciones de especificación` | `id`, `spec_definition_id`, `uuid`, `definition_name`, `name`, `spec_name`, `attribute_name` |
  | `Valores de especificación` | `id`, `spec_value_id`, `uuid`, `value_name`, `value`, `spec_value`, `attribute_value` |
  | `Recursos` | `id`, `asset_id`, `uuid`, `image_url`, `url`, `asset_url`, `file_url`, `display_name`, `name`, `asset_name`, `title` |

  Cuando no coincide nada, el destino que recibes es `SKU` en productos, `Nombre de marca` en marcas, `Ruta de categoría` en categorías, `Nombre de etiqueta` en etiquetas, `Nombre del grupo de especificaciones` en grupos, `Nombre de definición` en definiciones, `Nombre de valor` en valores y `Nombre para mostrar` en recursos.
</Accordion>

Las columnas `id` y `variant_id` que escribe una exportación no son campos que puedas mapear en `Columnas`, y no hace falta que lo sean. Déjalas en tu archivo, apunta una regla al destino `ID` y sus valores se leen directo de la fila. Cualquiera de las dos encuentra tu producto padre.

Una regla que no terminaste muestra su problema en la tarjeta, en rojo, y `Siguiente` se queda apagado hasta que todas las tarjetas estén limpias.

| Mensaje | Qué salió mal |
| --- | --- |
| `Las reglas compuestas requieren al menos 2 campos de coincidencia. Agrega otro campo o cambia a coincidencia simple.` | Una regla compuesta con un solo destino |
| `Tipo de destino duplicado en esta regla. Cambia uno de ellos.` | El mismo destino dos veces en una regla compuesta |
| `Igual que la Regla 2: cambia el destino o la columna` | Dos reglas haciendo exactamente lo mismo |

### Paso 5: Mapea tus columnas

`Columnas` es donde conectas tu archivo con tu catálogo. Lista los campos de tu catálogo hacia abajo, en grupos con un título encima de cada uno, y cada campo tiene a su derecha una lista desplegable con los nombres de columna de tu archivo. Se lee de campo a columna, no de columna a campo, así que la lista de la página es tu catálogo y no tu hoja de cálculo.

El PIM llena todo lo que puede en cuanto llegas. Cada nombre de columna tuyo se compara contra el nombre interno de un campo, su nombre en inglés, su nombre en tu propio idioma y una lista de nombres antiguos. Las mayúsculas y la puntuación se ignoran. Gana el primer campo que coincida y cada columna tuya se usa una vez. Nada se compara de forma laxa, así que una columna coincide o no coincide, y algo casi igual como `Prod Título` se queda sin mapear.

<Warning>
  Lo que mapeas es lo que se importa. Una columna que no mapeaste no existe para esa importación, aunque su encabezado se llame exactamente como un campo.
</Warning>

Lo contrario también es cierto. Una columna que sí mapeaste se lee como el campo que elegiste, diga lo que diga su encabezado. Apunta una columna de descripciones a `Precio` y todas tus filas fallan en las reglas de precio.

**Arriba de la lista hay una barra de herramientas fija.** Trae una casilla de búsqueda que acota la lista mientras escribes. Las fichas de al lado filtran la lista a los campos que ya mapeaste, o a los que no. Esas fichas cuentan sobre la lista completa y no sobre lo que estás viendo, así que sirven de indicador de cuánto llevas. Si un filtro está escondiendo un campo que todavía tienes que mapear, una línea naranja debajo de la barra te lo avisa.

Cada campo te muestra qué necesita de ti.

| En la fila de un campo | Qué significa |
| --- | --- |
| Un subrayado punteado en el nombre | Pasa el cursor para ver una descripción corta y un valor de ejemplo |
| `Sin mapear` | Ninguna columna tuya alimenta ese campo |
| `Obligatorio` | `Crear` no corre hasta que lo mapees |
| `Obligatorio (cualquiera)` | Hay que mapear uno de un grupo pequeño, y con cualquiera basta |

`Siguiente` se enciende cuando mapeaste al menos una columna y todos los campos que el modo exige.

| Tarjeta | `Crear` exige | `Actualizar`, `Limpiar` y `Eliminar` exigen |
| --- | --- | --- |
| `Productos` | `Slug` y `Título` | Nada |
| `Marcas` | `Nombre de marca` | Nada |
| `Categorías` | `Ruta de categoría` o `Nombre de categoría` | Nada |
| `Etiquetas` | `Nombre de etiqueta` | Nada |
| `Grupos de especificaciones` | `Nombre del grupo` | Nada |
| `Definiciones de especificación` | `Nombre del grupo` y `Nombre de definición` | Nada |
| `Valores de especificación` | `Nombre del grupo`, `Nombre de definición` y `Nombre de valor` | Nada |
| `Recursos` | `URL de recurso`, que queda oculto en los otros tres modos | Nada |

Los otros tres modos no exigen nada porque tus reglas de coincidencia ya encontraron el registro. `Actualizar` sí tiene que mapear algo: la pantalla no avanza mientras todos los campos digan `Sin mapear`, ya que una actualización que no escribe ningún campo es una importación que no hace nada.

Estos son los campos donde puede escribir un archivo de productos.

| Grupo | Campo | Qué acepta |
| --- | --- | --- |
| Datos básicos | `Slug` | El identificador de la URL. Agrupa todas las variantes de un producto, así que repítelo en cada fila de variante |
| Datos básicos | `Título` | Ponlo en la fila principal de cada producto. Las filas de variante pueden dejarlo vacío |
| Datos básicos | `Descripción` | Texto plano o HTML, deducido por ti |
| Datos básicos | `Características` | Una o más, unidas por el separador de características |
| Datos básicos | `Estado` | `draft`, `active`, `unlisted` o `archived` |
| Taxonomía | `Tipo de producto` | Texto libre |
| Taxonomía | `Condición` | Cualquier condición que use tu catálogo, escrita como se lee en pantalla o en minúsculas con guiones bajos |
| Taxonomía | `Marcas` | Uno o más nombres, unidos por el separador de marcas. El primero pasa a ser el principal |
| Taxonomía | `Categorías` | Una o más rutas completas, como `Electrónica > Teléfonos > Smartphones` |
| Taxonomía | `Etiquetas` | Uno o más nombres, unidos por el separador de etiquetas |
| Taxonomía | `Categoría de Shopify` | Una ruta completa o un id de taxonomía, como `aa-1-2` |
| Identificadores | `SKU` | Uno por variante, y dos variantes no pueden compartirlo. Opcional |
| Identificadores | `Números de parte` | Uno o más. El primero es el principal |
| Identificadores | `Códigos de barras` | De 8 a 14 dígitos cada uno, con el dígito de control verificado |
| Identificadores | `ISBNs` | 10 o 13 caracteres, con el dígito de control verificado |
| Identificadores | `Identificadores personalizados` | Pares `Etiqueta=Valor`. El `=` es fijo |
| Recursos | `URL de imagen principal` | Una dirección web. El archivo se descarga y se almacena |
| Recursos | `URLs de galería` | Direcciones unidas por el separador de galería, conservando el orden |
| Recursos | `URLs de recursos` | Direcciones unidas por el separador de recursos, de cualquier tipo de archivo |
| Precios | `Costo físico` | `12.50`, o la forma por moneda |
| Precios | `Costo de respaldo` | El costo al que recurrir cuando no se conoce ningún otro |
| Precios | `Precio` | `29.99`, o la forma por moneda |
| Precios | `Precio comparativo` | El precio de referencia tachado |
| Precios | `MAP` | Precio mínimo anunciado |
| Precios | `MSRP` | Precio de venta sugerido por el fabricante |
| Inventario | `Rastrear inventario` | `true`, `false`, `yes`, `no`, `1` o `0`. Mapeado con la celda vacía significa verdadero |
| Inventario | `Stock de respaldo` | La única columna de existencias que puedes escribir |
| Variantes | `Opción 1: nombre` y `Opción 1: valor`, y siguientes | El nombre de un eje de variante y el valor de esta fila en él |
| Especificaciones | `Especificaciones` | Tres partes por entrada, como `Iluminación > Color > Rojo` |
| Dimensiones | `Peso del producto` y su unidad | Unidades `g`, `kg`, `oz`, `lb` o `ct` |
| Dimensiones | `Longitud del producto`, `Ancho del producto`, `Altura del producto` y sus unidades | Unidades `mm`, `cm`, `in` o `yd` |
| Dimensiones | `Peso de envío`, `Longitud de envío`, `Ancho de envío`, `Altura de envío` y sus unidades | Los números del paquete, con las mismas unidades |
| SEO | `Meta título` | El título que muestra un buscador |
| SEO | `Meta descripción` | Alrededor de 160 caracteres |
| Aduana | `País de origen` | Un código de país de dos letras, como `US` |
| Aduana | `Código HS` | De 6 a 13 dígitos |
| Extra | `Fuentes de información` | Pares `Etiqueta=URL` o direcciones sueltas. Las etiquetas se cortan a los 50 caracteres |
| Extra | `Notas internas` | Hasta 1.000 caracteres, nunca visibles para el comprador |

Los precios por moneda se escriben dentro de una sola celda, como `USD=29.99|EUR=27.50`. La moneda que coincide con la de tu organización pasa a ser el precio principal y el resto quedan como precios por mercado al lado.

Hay tres columnas que esta pantalla oculta en todos los modos, así que no las puedes mapear aunque tu archivo las traiga. `Costo del proveedor` y `Stock del proveedor` los escriben tus [fuentes de datos](/es/pim/uploads/data-sources), y `Stock físico` se suma desde tus ubicaciones conectadas. [Inventario](/es/pim/catalog/inventory) explica de dónde sale cada número.

<Accordion title="Los campos que mapeas en las otras siete tarjetas">
  | Tarjeta | Campos |
  | --- | --- |
  | `Marcas` | `Nombre de marca`, `Descripción`, `Sitios web` como pares `Etiqueta=URL` hasta un máximo de 10, `URL de logo`, `URL de banner`, `URLs de recursos`, `Slug`, `Meta título`, `Meta descripción` |
  | `Categorías` | `Ruta de categoría`, `Nombre de categoría` que se toma del final de la ruta si lo dejas fuera, `Descripción`, `URL de miniatura`, `URL de banner`, `URLs de recursos`, `Slug`, `Meta título`, `Meta descripción` |
  | `Etiquetas` | `Nombre de etiqueta`, `Descripción` |
  | `Grupos de especificaciones` | `Nombre del grupo`, `Descripción`, `Categorías` como rutas completas de arriba hacia abajo, ya que un nombre suelto se rechaza |
  | `Definiciones de especificación` | `Nombre del grupo`, `Nombre de definición`, `Es obligatorio`, `Es único`, `Descripción`, `Categorías excluidas` como rutas completas |
  | `Valores de especificación` | `Nombre del grupo`, `Nombre de definición`, `Nombre de valor`, `Descripción` |
  | `Recursos` | `URL de recurso`, `Nombre para mostrar`, `Texto alternativo`, `Asignado a`, `Referencia`, `Rol`, `Orden` |

  Un archivo de recursos escribe un archivo y como mucho una asignación por fila, así que poner la misma imagen en varios productos significa repetir la fila.

  | Campo de la tarjeta de recursos | Qué poner |
  | --- | --- |
  | `Asignado a` | `product`, `brand` o `category` |
  | `Referencia` | Un slug. También acepta un SKU para productos, o un nombre para marcas y categorías |
  | `Rol` | `primary`, `gallery`, `logo`, `banner`, `thumbnail` o `resources` |
  | `Orden` | Un número entero, con la posición dentro de ese rol |
  | `Nombre para mostrar` | Déjalo vacío y recibes el nombre de archivo del final de la dirección |
</Accordion>

### Paso 5: Qué hace una celda vacía

Una celda vacía y una columna sin mapear no son lo mismo, y esa diferencia decide si una actualización deja un campo intacto o lo borra.

| Tu archivo | `Crear` | `Actualizar` |
| --- | --- | --- |
| Una columna que no mapeaste | El campo toma su valor por defecto | Se conserva el valor existente |
| Una columna mapeada con la celda vacía | El campo toma su valor por defecto | Se conserva el valor existente |
| Una celda de dinero o dimensión con `0`, `0.00`, `$0` o `USD=0` | El campo queda vacío | Se borra el valor existente |
| `Stock de respaldo` con `0` | El número cero | El número cero |

<Warning>
  Un cero en una celda de dinero o dimensión es una instrucción de vaciar el campo, no un vacío. Una hoja de cálculo que rellenó con ceros sus celdas de precio vacías borra los precios que debía dejar intactos.
</Warning>

O sea que una celda en blanco nunca borra nada. Si vaciar un campo es lo que de verdad quieres, para eso está el modo `Limpiar`.

Una cosa más sobre los números. En una celda de dinero o dimensión, una coma se lee como separador de miles y se quita antes de leer el número. Así que `1,5` llega como `15`, y `0,00` llega como un cero que borra la columna. Escribe `1.5` con punto, o usa la forma por moneda `EUR=1.5`, que se lee igual.

### Paso 6: Ajusta las opciones

`Opciones` decide cómo debe comportarse el PIM en los casos que tu archivo no cubrió. Casi todo son preguntas con botones de opción, y los valores por defecto están elegidos para que nada se cree ni se destruya a tus espaldas. En una primera importación puedes dejar la pantalla entera como está.

**`Referencias faltantes` decide qué pasa con una fila que nombra algo que no tienes.** Cada pregunta ofrece `Omitir con advertencia`, `Crear automáticamente` y `Rechazar la fila`, en ese orden. Una pregunta sobre una categoría o una especificación pierde la del medio.

| Tarjeta | Pregunta | Opciones | Por defecto |
| --- | --- | --- | --- |
| `Productos` | `Si la marca no existe:` | Omitir, crear, rechazar | `Omitir con advertencia` |
| `Productos` | `Si la etiqueta no existe:` | Omitir, crear, rechazar | `Omitir con advertencia` |
| `Productos` | `Si la categoría no existe:` | Omitir, rechazar | `Omitir con advertencia` |
| `Productos` | `Si la categoría de Shopify no existe:` | Omitir, rechazar | `Omitir con advertencia` |
| `Productos` | `Si el valor de especificación no existe:` | Omitir, rechazar | `Omitir con advertencia` |
| `Productos` | `Si la especificación no está permitida para las categorías del producto:` | Omitir, rechazar | `Omitir con advertencia` |
| `Grupos de especificaciones` | `Si la categoría no existe:` | Omitir, rechazar | `Omitir con advertencia` |
| `Definiciones de especificación` | `Si el grupo de especificaciones no existe:` | Omitir, rechazar | `Omitir con advertencia` |
| `Definiciones de especificación` | `Si la categoría no existe:` | Omitir, rechazar | `Omitir con advertencia` |
| `Valores de especificación` | `Si la definición de especificación no existe:` | Omitir, rechazar | `Omitir con advertencia` |

`Omitir con advertencia` importa la fila sin esa referencia y registra una advertencia. `Rechazar la fila` la descarta. `Crear automáticamente` crea la marca o la etiqueta que falta por su nombre, y solo tienes esa opción en esas dos. Una marca y una etiqueta son apenas nombres. Una categoría o una especificación tienen un lugar en una estructura que el PIM no puede adivinar.

**Pon todas las preguntas en `Rechazar la fila` cuando reimportes un archivo que exportaste.** Ahí no debería faltar nada. Una pregunta en `Omitir con advertencia` dejaría pasar un problema real sin avisarte, y `Rechazar la fila` te lo pone enfrente.

Dos de estas preguntas se comportan distinto al resto. Una fila de `Definiciones de especificación` que nombra un grupo que no tienes se descarta entera, incluso bajo `Omitir con advertencia`. Lo mismo pasa con una fila de `Valores de especificación` que nombra una definición que no tienes. No queda nada de ninguna de las dos filas cuando falta su padre. Poner esas dos en `Rechazar la fila` solo cambia cómo lo llama el reporte.

**`Comportamiento de actualización` controla todos los campos que llevan más de un valor a la vez**, como las marcas, las categorías, las etiquetas y los valores de especificación de un producto. Aparece en las tarjetas `Productos`, `Grupos de especificaciones`, `Definiciones de especificación` y `Recursos` en `Actualizar`, y en `Recursos` en `Crear`.

| Opción | Qué hace |
| --- | --- |
| `Reemplazar` | Vacía lo que hay y aplica el conjunto de tu archivo. Es el valor por defecto |
| `Agregar` | Une los dos, descarta duplicados y deja las entradas existentes donde estaban |
| `Mantener existentes` | Ignora tu archivo donde el registro ya tiene un valor. Uno vacío sí se rellena |

Elige `Reemplazar` cuando tu archivo es la foto completa, que es lo que pasa siempre que exportaste, editaste y reimportaste. Elige `Agregar` cuando tu archivo solo nombra lo que quieres sumar, como una etiqueta nueva por producto. Elige `Mantener existentes` cuando estás rellenando huecos y no debes tocar nada que ya esté puesto.

| Tarjeta | Qué cubre la opción |
| --- | --- |
| `Productos` | Marcas, categorías, etiquetas, características, fuentes de información y valores de especificación |
| `Grupos de especificaciones` | Las categorías a las que aplica el grupo |
| `Definiciones de especificación` | Las categorías excluidas |
| `Recursos` | A dónde está asignado cada archivo |

No cubre tus imágenes. `URL de imagen principal`, `URLs de galería` y `URLs de recursos` siempre reemplazan, algo que [recursos](/es/pim/assets) explica desde el lado de la biblioteca. `Agregar` además se comporta distinto en una especificación de valor único: el valor de tu archivo se rechaza, se conserva el existente y la fila registra una advertencia mientras el resto se guarda igual.

**`Descargas de recursos` decide cuánto te cuesta una dirección de imagen rota.** Aparece en las tarjetas `Productos`, `Marcas` y `Categorías` en `Crear` y `Actualizar`.

| Pregunta | Por defecto | La otra opción |
| --- | --- | --- |
| `Si falla la descarga de un recurso:` | `Advertir y continuar` | `Fallar fila` |
| `Si la galería no tiene imagen principal:`, solo en productos | `Dejar sin imagen principal` | `Promover la primera a principal` |

Deja `Advertir y continuar` salvo que un producto sin imagen te resulte peor que ningún producto. Elegir `Fallar fila` en un archivo de productos rechaza el producto completo, así que esa fila vuelve como error y las demás filas del mismo producto vuelven como bloqueadas.

**`Si el recurso ya existe` decide si se vuelve a usar un archivo que ya tienes.** El PIM compara el contenido del archivo, no su dirección, así que reimportar la misma foto desde otro enlace igual la encuentra. En las tarjetas `Productos`, `Marcas` y `Categorías` recibes `Reutilizar existente`, que es el valor por defecto, y `Subir como nuevo`. Una importación de `Recursos` en `Crear` recibe tres opciones, porque ese archivo lleva su propio nombre para mostrar y su texto alternativo. `Reutilizar, actualizar etiquetas` es el valor por defecto, `Reutilizar, conservar etiquetas` deja el texto anterior intacto y `Subir como nuevo` hace una segunda copia.

**`Separadores de valores en lista` define el carácter que divide una celda que lleva una lista.** Cada casilla acepta hasta 3 caracteres, vaciar una devuelve el valor por defecto, y `Siguiente` queda apagado mientras una casilla se vea vacía. Cambia alguno solo cuando tus propios datos traigan el carácter por defecto, que es el único caso donde ese valor partiría un dato en dos.

Dos separadores usan `>` por defecto: `Ruta de especificación` y `Ruta de categoría`. Los otros catorce usan `|`: `Etiquetas`, `Características`, `Especificaciones`, `Lista de categorías`, `Marcas`, `Códigos de barras`, `ISBNs`, `Números de parte`, `Galería`, `Recursos`, `Sitios web`, `Fuentes de información`, `Identificadores personalizados` y `Categorías excluidas`.

| Tarjeta | Casillas de separador que ves |
| --- | --- |
| `Productos` | Etiquetas, Características, Especificaciones, Ruta de especificación, Ruta de categoría, Lista de categorías, Marcas, Códigos de barras, ISBNs, Números de parte, Galería, Recursos, Fuentes de información, Identificadores personalizados |
| `Marcas` | Sitios web, Recursos |
| `Categorías` | Ruta de categoría, Recursos |
| `Grupos de especificaciones` | Lista de categorías, Ruta de categoría |
| `Definiciones de especificación` | Categorías excluidas, Ruta de categoría |
| `Etiquetas`, `Valores de especificación`, `Recursos` | Ninguna |

El `=` entre una etiqueta y un valor en una celda de pares, como `UNSPSC=43211503`, es fijo y nada de aquí lo cambia. Nada de aquí define tampoco el carácter que separa las columnas de tu CSV, que siempre se encuentra por ti.

### Paso 7: Elige los campos a limpiar

`Campos a limpiar` solo aparece en el modo `Limpiar`, y es la lista de campos que tu importación va a vaciar en cada registro con el que coincida. Recibes una casilla por campo, agrupadas igual que en la pantalla de mapeo, con la misma casilla de búsqueda y las mismas fichas de filtro fijas arriba. Marca al menos una o `Siguiente` se queda apagado.

| Tarjeta | Campos que puedes limpiar |
| --- | --- |
| `Productos` | Descripción, tipo de producto, condición, estado, notas internas, meta título, meta descripción, categoría de Shopify, marcas, categorías, etiquetas, características, especificaciones, fuentes de información, códigos de barras, ISBNs, números de parte, identificadores personalizados, precio, precio comparativo, costo físico, costo de respaldo, MAP, MSRP, rastrear inventario, stock de respaldo, los ocho valores de dimensión de producto y envío, país de origen, código HS, imagen principal, galería y recursos |
| `Marcas` | Descripción, sitios web, logo, banner, meta título, meta descripción |
| `Categorías` | Descripción, miniatura, banner, archivos de recursos, meta título, meta descripción |
| `Etiquetas` | Descripción |
| `Grupos de especificaciones` | Descripción, categorías |
| `Definiciones de especificación` | Descripción, categorías excluidas |
| `Valores de especificación` | Descripción |
| `Recursos` | Texto alternativo |

Limpiar el par de inventario en productos deja el producto sin rastreo y con todas las cantidades de existencias vacías, así que marca esos dos juntos o ninguno.

Hay campos que nunca aparecen en esta pantalla, busques lo que busques. Los nombres y los identificadores no salen, porque vaciar aquello por lo que se encuentra un registro te dejaría sin forma de volver a encontrarlo. Eso cubre `SKU`, `Slug` y el `Título` de un producto. También cubre el nombre de una marca, una categoría, una etiqueta o una definición, el texto de un valor y el `Nombre para mostrar` de un recurso. Los números que el PIM mantiene por ti tampoco salen, que son `Costo del proveedor`, `Stock físico` y `Stock del proveedor`. Tampoco salen las columnas que siempre llevan algo, como las de posición y orden y todas las de unidad.

### Paso 8: Revisa el resumen y envía

`Resumen` es un panel llamado `Resumen de importación` que te devuelve todo lo que elegiste, así que léelo antes de pulsar nada.

| Fila | Cuándo la ves |
| --- | --- |
| `Entidad`, `Modo`, `Archivo` con su nombre y tamaño | Siempre |
| `Hoja` | Elegiste una |
| `Formato de archivo`, `Columnas en el archivo` | Siempre |
| `Campos mapeados` | Todos los modos salvo `Limpiar` y `Eliminar` |
| `Reglas de coincidencia`, un conteo y después las reglas | Todos los modos salvo `Crear` |
| `Campos a limpiar` | Solo en `Limpiar` |
| `Comportamiento de actualización` | `Actualizar`, y `Crear` en la tarjeta `Recursos` |
| Las respuestas de referencias faltantes | La tarjeta las preguntó |
| `Fallo de descarga de recurso`, `Galería sin imagen principal` | La tarjeta las preguntó |
| `Manejo de recursos` | La tarjeta lo ofrece |
| Una fila por cada separador que cambiaste | Cambiaste alguno |

Las reglas se escriben como las lee el PIM. Una regla simple sobre el SKU se ve como `sku`, y una regla compuesta sobre código de barras más marca se ve como `gtin+brand_name`. Cuando todas las respuestas de referencias faltantes son la misma y hay dos o más, se juntan en una sola fila que dice `Omitir con advertencia (todos)`. Espera una rareza: una importación de `Etiquetas` en `Actualizar` muestra una fila `Comportamiento de actualización` aunque la tarjeta `Etiquetas` nunca te ofreció ese control.

`Enviar` está abajo a la derecha y revisa todo otra vez, tus reglas de coincidencia incluidas, y después arranca la importación sin volver a subir tu archivo.

| Qué pasa | Mensaje |
| --- | --- |
| Empezó | `Importación iniciada correctamente` |
| Hay otra tuya corriendo | `Importación en cola en la posición {position}. Comenzará cuando el trabajo actual termine.` |
| Tu archivo pesa de más | Dice que el archivo debe pesar 476 MB o menos |
| Tu configuración no pasó la segunda revisión | Dice que la configuración de la importación no es válida |
| Pasaron más de 24 horas desde que subiste | Dice que el borrador no se encontró o expiró |
| No funcionó nada más | `No se pudo iniciar la importación. Por favor, intenta de nuevo.` |

### Límites

| Qué | Límite |
| --- | --- |
| Formatos que puedes subir | CSV y XLSX |
| Archivo más grande | 476 MB |
| Filas en un archivo | Sin límite |
| Cuota mensual o límite de frecuencia | Ninguno |
| Longitud del nombre del archivo | 255 caracteres |
| Filas en la vista previa | 10 |
| Cuánto dura una subida sin terminar | 24 horas |
| Reglas en una importación | Sin límite |
| Un separador que escribes | 3 caracteres |
| Columnas de opción de variante | 50 pares |
| Sitios web en una marca | 10 |
| Notas internas en un producto | 1.000 caracteres |
| Importaciones a la vez | Una por organización. El resto espera turno |
| Cuánto dura una importación terminada en la tabla | Para siempre |

### Lo que una importación no puede hacer

| No puedes | Haz esto en su lugar |
| --- | --- |
| Deshacerla, ni retirar una fila que ya escribió | Importa un archivo que corrija |
| Ver qué filas fallarían antes de correrla | Importa unas pocas filas primero y lee el archivo de resultados |
| Descargar un archivo de ejemplo o una plantilla inicial | Exporta los registros que vas a cambiar y edita ese archivo. Mira [exportaciones](/es/pim/uploads/exports) |
| Guardar un mapeo de columnas y reutilizarlo | Cada ejecución reconstruye el mapeo con tus nombres de columna |
| Programar una importación o repetirla cada semana | Configura una [fuente de datos](/es/pim/uploads/data-sources#cómo-armar-una-fuente-de-datos) |
| Reintentar una fila, o corregir una fila desde dentro de la importación | Corrige tu archivo e importa de nuevo |
| Hacer que una importación fallida se reintente sola | Vuelve a subir el archivo tú |
| Elegir el carácter que separa las columnas de tu CSV | Se encuentra por ti |
| Escribir existencias o costo del proveedor | Conecta una ubicación o una [fuente de datos](/es/pim/uploads/data-sources) |

## Qué forma tiene que tener un archivo de productos

El archivo de productos es el único que tiene forma propia. Una hoja de cálculo tiene una fila por cada línea de datos, y un producto con variantes es más de una línea de datos. Si te equivocas con la forma, todas las filas de un producto fallan juntas.

### Una fila por variante, agrupadas por slug

Todas las filas de un producto llevan el mismo `Slug`, y eso es lo que le dice al PIM que van juntas. La primera fila de cada grupo es la fila principal del producto: lleva el `Título` y todo lo que describe al producto entero. Las que vienen después son filas de variante, y pueden dejar vacíos los campos del producto mientras dan sus propios valores de opción.

- Un producto con una sola variante y sin opciones es **una fila**, con todo dentro.
- Cualquier otro caso es **una fila principal y luego una fila por variante**. Un producto con 4 variantes son 5 filas.

Necesitas el `Slug` en cada fila sin excepción, y nunca se deduce del `Título`. Un grupo sin fila principal falla, y también falla una fila de variante sin celdas de nombre de opción, porque ninguna de las dos se puede leer como variante de algo.

La forma más simple de acertar con la forma es no armarla. Exporta primero los productos, edita el archivo que recibes y devuelve ese: una exportación ya sale exactamente con esta disposición.

### Las columnas de opción

Una opción es un eje de variante, como `Color` o `Talla`. Cada uno es un par de columnas: `Opción 1: nombre` lleva el eje y `Opción 1: valor` lleva el valor de esta fila en él, y `Opción 2: nombre` y `Opción 2: valor` llevan el segundo eje, y así.

Siempre recibes al menos 3 pares en la pantalla de mapeo, y más si tu archivo trae más, hasta 50 pares. Escribe el encabezado como `Option 1 Name`, `option_1_name` u `option1_name` y los tres se reconocen. Todas las variantes de un producto tienen que listar los mismos ejes en el mismo orden, y dos variantes de un producto no pueden terminar con la misma combinación de valores.

### Columnas que salen de una exportación y no pueden volver a entrar

Casi toda una exportación de productos vuelve a entrar tal cual, con nombres de columna incluidos. Estas son las que no.

| Columna | Por qué |
| --- | --- |
| `id`, `variant_id` | Tus reglas de coincidencia las leen de la fila, y no son campos que mapees |
| `on_hand_stock`, `supplier_stock`, `supplier_cost` | El PIM las mantiene por ti |
| `currency` | Los precios por moneda van dentro de la celda de precio |
| Columnas de posición y de orden | Se ignoran |
| Conteos como `product_count` | Se ignoran |
| `kind` en una fila de recurso | Se ignora. Se deduce del archivo mismo |

Dejarlas en tu archivo no hace daño. Llegan sin mapear y se descartan, así que no hace falta limpiar una exportación antes de devolverla.

## Cuando algo falla

### Cómo seguir tu importación mientras corre

Tu importación aparece de inmediato en la tabla y va pasando por estos estados:

| Estado | Qué significa |
| --- | --- |
| `En cola` | Hay otra importación tuya corriendo. La tuya no ha empezado |
| `Pendiente` | La tuya está esperando a que la tomen |
| `Validando` | Tu archivo se está leyendo. Todavía no se escribe nada |
| `Procesando` | Se están escribiendo filas. Ves un porcentaje |
| `Importando recursos` | Una importación de `Recursos` está trabajando sus descargas |
| `Finalizando` | Ordenando después de la última fila. Ya no puedes cancelar |
| `Completado` | Lista |
| `Fallido` | Terminó, y no entró absolutamente nada |
| `Cancelado` | Terminó, y lo que ya se había escrito se quedó escrito |

Corre una importación a la vez y el resto espera en cola por orden de llegada, así que puedes tener varias tuyas esperando. El porcentaje es todo el avance que recibes: ni tiempo estimado, ni filas por segundo, ni lista de errores en vivo. Nada de lo que salió mal te llega hasta que la importación termina.

No hay estado parcial. Una importación con al menos un éxito termina como `Completado` aunque medio archivo haya fallado, y `Fallido` significa que no entró absolutamente nada. Así que lee los cuatro contadores, nunca el estado solo.

Una importación interrumpida se reinicia sola en menos de 2 minutos, y una que estaba descargando imágenes retoma donde se quedó. Una que sigue corriendo después de 4 horas se marca `Fallido` por ti.

Estés donde estés en la app, aparece un aviso pequeño cuando tu importación termina, se haya completado, haya fallado o la hayan cancelado.

### Cómo cancelar una

`Cancelar` es un botón al final de la fila de la importación, en la tabla. Sirve mientras está en cola, pendiente, validando, procesando o importando recursos, y no una vez que llega a `Finalizando`. En una fila donde no se puede usar, pasar el cursor por encima te dice por qué.

Cancelar conserva todas las filas que ya se escribieron. Las descargas nuevas de imágenes se detienen en 1 segundo, y las que ya iban en camino terminan y dejan sus archivos en tu [biblioteca de recursos](/es/pim/assets) sin asignar a nada.

### Cómo leer la tabla de importaciones

| Columna | Qué muestra |
| --- | --- |
| `Archivo` | El nombre del archivo. La búsqueda rápida solo mira esta columna |
| `Entidad` | Cuál de los ocho tipos importaste |
| `Modo` | Cuál de los cuatro modos corriste |
| `Estado` | Dónde va, con un porcentaje mientras corre |
| `Exitosos` | Filas que entraron limpias, en verde |
| `Advertencias` | Filas que entraron con algo que hay que leer, en naranja |
| `Errores` | Filas que no entraron, en rojo |
| `Bloqueados` | Filas que estaban bien pero se quedaron fuera, en gris |
| `Fecha de creación` | Cuándo se empezó |
| `Creado por` | Quién la empezó |

Un contador en cero se muestra como una raya. Los cuatro ordenan y filtran, y pasar el cursor por el encabezado de un contador te dice qué cuenta. Las listas de `Entidad`, `Modo` y `Estado` que están arriba de la tabla solo ofrecen valores que tu equipo ya usó, así que es normal ver una lista corta. Si armas los mismos filtros todas las semanas, [vistas guardadas](/es/pim/saved-views) te los conserva.

<Info>
  Una fila bloqueada no tiene nada malo. Todas las filas que comparten un slug son un producto y se escriben como una unidad, así que un error en cualquiera de ellas retiene al producto entero.
</Info>

Por eso corregir un solo error real suele destrabar una docena de filas bloqueadas a la vez. Las advertencias funcionan al revés: cuando un producto se guarda y su fila principal juntó advertencias, cada fila de variante de ese producto queda marcada para que vayas a mirar la principal.

### Cómo obtener el archivo de resultados

`Resultados` es un botón al final de la fila de la importación, junto a `Cancelar`. Se enciende cuando la importación termina, y hasta entonces pasar el cursor por encima te lo dice. Al pulsarlo te pregunta si quieres `CSV` o `Excel`, y después arma el archivo mientras esperas.

Recibes tu subida original con 2 columnas añadidas al final, `result` y `message`, y una fila de salida por cada fila de datos que mandaste.

| `result` | Qué significa | Qué lleva `message` |
| --- | --- | --- |
| `error` | La fila no se importó | Los errores, luego las notas de bloqueo, luego las advertencias |
| `blocked` | La fila estaba bien, pero otra fila del mismo producto falló | Notas de bloqueo y advertencias |
| `warning` | La fila se importó, y hay algo que hay que leer | Las advertencias |
| `success` | La fila se importó limpia | Nada |

Ordena o filtra la columna `result`, primero los errores y después los bloqueados. La fila 1 del reporte es la primera fila de datos de tu archivo, y el encabezado no se cuenta. Así que los números cuadran con tu hoja de cálculo teniendo eso en cuenta. Un mensaje nombra el tipo de problema y no el valor que lo causó, así que usa el número de fila para encontrar la celda.

El archivo lleva el nombre del tuyo, como `catalogo_results_2026-07-31.csv`, con la fecha en que se creó la importación. Se reconstruye cada vez que lo pides, así que puedes volver por él mientras la importación siga en la tabla, o sea para siempre. Cerrar el diálogo mientras se arma no lo cancela, y si tarda más de 2 minutos se te dice que vuelvas a pulsar `Resultados` en un momento para recogerlo.

### El correo que recibes

El correo llega a quien creó la importación y a nadie más. Solo lo recibes cuando la importación llega a `Completado`, así que una fallida o cancelada no le escribe a nadie, y no hay un centro de notificaciones dentro de la app donde mirar.

| Parte del correo | Qué trae |
| --- | --- |
| Asunto | Que la importación se completó, y si hubo errores |
| Estado | Si se importaron todas las filas, o si terminó con errores |
| Detalles | Total de filas, exitosas, errores y organización |
| Botón | Te lleva a los productos |

No lleva archivo adjunto ni enlace al archivo de resultados, así que la tabla sigue siendo el lugar para eso. El correo viene activado y lo puedes apagar en `Importación completada`, dentro de tu configuración de notificaciones.

### Errores antes de leer ninguna fila

Estos detienen el archivo y no una fila, así que no se escribe absolutamente nada.

| Mensaje | Qué salió mal |
| --- | --- |
| `No se pudo iniciar la subida` | La subida nunca arrancó |
| `No se pudo subir` | La transferencia no terminó |
| `El archivo supera el límite de subida de 476 MB` | Tu navegador revisa el tamaño antes de subir nada |
| `No se pudo leer el archivo` | La vista previa no se pudo construir |
| `No se pudo leer la hoja` | La hoja que elegiste no se pudo leer |
| `Esta hoja no tiene filas de datos. Elige otra hoja en el selector.` | La hoja está vacía debajo de su encabezado |
| `El archivo se leyó correctamente pero no tiene filas de datos. Revisa que contenga datos además de la fila de encabezados.` | Tu archivo trae encabezado y nada más |
| `Este archivo no es una hoja de cálculo compatible. Usa un archivo CSV o XLSX.` | El archivo no es una hoja de cálculo |
| `El archivo se descargó pero no se pudo leer como hoja de cálculo. Revisa que sea un CSV o XLSX válido.` | Se veía bien y aun así no se pudo leer |
| `El archivo se descargó pero está vacío. Revisa que en esa ubicación se esté publicando el archivo correcto.` | Casi siempre una dirección web que no sirve nada |

Si pegas una dirección web que devuelve una página en lugar de un archivo recibes `Esa dirección devolvió una página web en lugar de un archivo de datos.` El mensaje sigue con la solución para los dos servicios donde más pasa.

| Servicio | Qué cambiar |
| --- | --- |
| Dropbox | Cambia `dl=0` por `dl=1` al final del enlace |
| Google Drive | Reemplaza el `/edit` final y todo lo que le sigue por `/export?format=xlsx` |

Algunos fallos agregan debajo una línea de detalle técnico, en monoespaciado y bajo un divisor punteado. Esa línea es para soporte, no para ti.

### Los errores que de verdad te vas a encontrar

Estos son los que salen en archivos normales. Los desplegables de abajo tienen el resto, agrupados por tema.

| Mensaje | Qué cambiar |
| --- | --- |
| `Falta un campo obligatorio en esta fila.` | Una celda obligatoria está vacía. En un archivo de productos necesitas el `Slug` en cada fila, incluidas las de variante |
| `No se encontró ningún registro coincidente en tu catálogo.` | El valor de tu columna de coincidencia todavía no existe. Impórtalo con `Crear`, o apunta la regla a otro destino |
| `Varios registros coincidieron. Proporciona un identificador más específico.` | Tu regla es ambigua. Cambia a una regla compuesta o usa una columna única |
| `Esta fila ya existe. Usa el modo ACTUALIZAR para modificarla.` | Corriste `Crear` sobre registros que ya tienes |
| `Un SKU ya está en uso en otro lugar de tu catálogo. Elige un SKU único o usa el modo ACTUALIZAR.` | Otra variante ya tiene ese SKU. Una variante lleva como mucho uno, y no existe un SKU a nivel de producto |
| `Un identificador falló la validación del dígito de verificación. Verifica los dígitos.` | Un código de barras o un ISBN tiene el largo correcto y su dígito de control no cuadra. [Identificadores](/es/pim/catalog/identifiers) lista todas las reglas |
| `La marca referenciada no fue encontrada.` | Es una advertencia, no un error. Pon la pregunta de marca en `Crear automáticamente`, o importa tus marcas primero |
| `Esta fila actualiza el mismo registro que una fila anterior del archivo. Deja una sola fila por registro y vuelve a importar.` | Dos de tus filas apuntan al mismo registro. La primera se aplica y el resto dan error |
| `Esta fila no se guardó porque otra fila del mismo producto (padre o variante) tiene errores. Corrige los otros errores y vuelve a importar.` | Nada. Corrige el error real y esta fila entra en la siguiente corrida |
| `Esta variante se importó sin problemas, pero la fila principal del producto tiene advertencias. Revísala.` | Nada en esta fila. Ve a leer las advertencias de la fila principal de ese producto |
| `Algo salió mal. Vuelve a intentarlo. Si el problema persiste, contacta a soporte.` | Importa esa fila de nuevo. Si se repite, no es tu archivo |

<AccordionGroup>
  <Accordion title="Errores sobre la forma de un archivo de productos">
    | Mensaje | Qué cambiar |
    | --- | --- |
    | `Este producto no tiene una fila principal de producto. Una fila por producto debe llevar el Título y dejar vacías las celdas de valores de opción. Vuelve a exportar los productos para obtener un archivo con la forma correcta.` | Tu archivo trae filas de variante sin una fila principal arriba |
    | `Una fila de variante no tiene celdas de nombre de opción, por lo que no se puede importar como variante. Mapea las columnas de nombre y valor de opción (option1_name / option1_value) en cada fila de variante, o elimina la fila.` | La fila trae valores pero no nombres de eje |
    | `Una variante debe tener un valor para cada opción definida en su producto.` | A una variante le falta el valor de un eje |
    | `A una fila de variante le falta un valor para una de sus opciones.` | El mismo problema, visto desde la celda |
    | `Las variantes del mismo producto deben listar los mismos ejes de opciones en el mismo orden.` | Dos filas de un producto no están de acuerdo sobre los ejes |
    | `Dos variantes comparten la misma combinación de opciones. Cada variante debe tener una combinación única.` | Dos filas describen la misma variante |
    | `No se puede identificar qué variante de este producto actualizar.` | Renombrar un SKU o apuntar a una variante concreta exige que la fila coincida por `ID`, ya sea un ID de variante en una columna `ID` o una columna `variant_id` |
    | `Las columnas de producto se ignoraron porque este archivo no tiene fila principal para este producto. Para actualizar los campos del producto, importa un archivo que incluya la fila principal del producto.` | Agrega la fila principal, o acepta que solo cambien los campos de variante |
    | `Este archivo usa el formato de exportación heredado. Vuelve a exportar los productos para obtener un archivo reimportable.` | Exporta los productos de nuevo y edita el archivo nuevo |
  </Accordion>

  <Accordion title="Errores sobre un valor en una celda">
    | Mensaje | Qué cambiar |
    | --- | --- |
    | `Un campo supera su longitud máxima.` | Acorta la celda |
    | `El valor de un campo no es una de las opciones permitidas.` | La celda trae algo fuera de la lista que ese campo acepta |
    | `Un campo de sí/no tiene un valor inválido.` | Usa `true`, `false`, `yes`, `no`, `1` o `0` |
    | `Un campo entero tiene un valor inválido.` | Se espera un número entero |
    | `Un campo numérico tiene un valor inválido.` | Busca texto suelto o una coma usada como punto decimal |
    | `Una cantidad de stock es negativa. El stock debe ser 0 o un número entero positivo.` | Usa cero |
    | `Se indicó una unidad pero el valor de medida está vacío.` | Llena la medida, o vacía la unidad de al lado |
    | `Una URL está mal formada. Las URLs deben comenzar con http:// o https://.` | Agrega `http://` o `https://` al principio |
    | `Un slug debe contener al menos una letra o un dígito.` | Dale a la fila un slug de verdad |
    | `El valor de un identificador tiene un formato inválido.` | Revisa el largo del código de barras, el ISBN o el número de parte |
    | `El País de Origen debe ser un código de país ISO de 2 letras (p. ej., US, CN, DE).` | Usa el código, no el nombre del país |
    | `El HS Code debe tener entre 6 y 13 dígitos.` | Solo dígitos |
    | `Un campo contiene caracteres reservados para el formato de celda de especificaciones.` | Tu valor trae el carácter que usan tus separadores |
    | `La ruta de categoría está vacía o mal formada. Usa la ruta completa de arriba hacia abajo.` | Escribe la ruta entera desde arriba |
  </Accordion>

  <Accordion title="Errores sobre algo a lo que apunta la fila">
    | Mensaje | Qué cambiar |
    | --- | --- |
    | `La categoría referenciada no fue encontrada.` | Importa tus categorías primero. Una importación de productos no puede crear una |
    | `Varias categorías comparten este nombre. Proporciona la ruta completa (p. ej., "Padre > Hijo > Hoja") o agrega una columna de slug para distinguirlas.` | Escribe la ruta completa |
    | `Una categoría padre en la ruta no fue encontrada. Importa las categorías padre primero.` | Importa el árbol de arriba hacia abajo |
    | `La etiqueta referenciada no fue encontrada.` | Pon la pregunta de etiqueta en `Crear automáticamente`, o importa tus etiquetas primero |
    | `El grupo de especificaciones referenciado no fue encontrado. Importa los grupos de especificaciones primero.` | Sigue el orden del principio de esta página |
    | `La definición de especificación referenciada no fue encontrada. Importa las definiciones primero.` | Lo mismo |
    | `El valor de especificación referenciado no fue encontrado. Importa los valores primero.` | Lo mismo |
    | `Una especificación obligatoria no tiene valor en este producto. Agrega un valor o haz que la especificación sea opcional.` | Llénala, o cambia la definición |
    | `Un grupo de especificaciones no está permitido para las categorías de este producto.` | Dale al producto una de las categorías del grupo, o elige una especificación de un grupo que encaje |
    | `Una definición de especificación está excluida para una de las categorías de este producto.` | Elige otra especificación, o quítale al producto la categoría en conflicto |
    | `La ruta o el id de categoría de Shopify no se encontró en la taxonomía de Shopify.` | Revisa la ruta contra el selector del editor de productos |
  </Accordion>

  <Accordion title="Errores sobre algo que ya existe">
    | Mensaje | Qué cambiar |
    | --- | --- |
    | `Un código de barras ya está en uso en otro lugar de tu catálogo.` | Los códigos de barras son únicos en todo tu catálogo |
    | `Un ISBN ya está en uso en otro lugar de tu catálogo.` | Lo mismo |
    | `Un número de parte ya está en uso para una de las marcas seleccionadas.` | Los números de parte son únicos por marca |
    | `Un identificador personalizado está duplicado en la misma variante.` | Dos entradas de una celda comparten etiqueta |
    | `Ya existe un identificador personalizado con la misma etiqueta pero con un valor diferente.` | Decide cuál valor es el correcto |
    | `Una URL está duplicada dentro de la fila.` | La misma dirección aparece dos veces en una celda |
    | `Un elemento hermano bajo el mismo padre ya usa este nombre.` | Renómbralo, o muévelo bajo otro padre |
    | `Un elemento hermano bajo el mismo padre ya usa este slug.` | Lo mismo, con el slug |
    | `El SKU es de valor único y no se puede cambiar en modo Agregar.` | Pon `Comportamiento de actualización` en `Reemplazar`, o edita el SKU en el catálogo |
    | `Esta definición de especificación única ya tiene un valor diferente. Se conservó el valor existente.` | Una advertencia bajo `Agregar` en una especificación de valor único. Usa `Reemplazar` para sobrescribirla |
    | `Una especificación que admite un solo valor tiene más de uno en este producto.` | Deja un solo valor, o haz que la definición admita varios |
  </Accordion>

  <Accordion title="Errores sobre imágenes y archivos">
    | Mensaje | Qué cambiar |
    | --- | --- |
    | `No se pudo descargar el archivo fuente. Verifica que la URL sea de acceso público.` | La dirección pide iniciar sesión, o está mal |
    | `No se pudo subir el recurso. Vuelve a intentar la importación.` | Importa esa fila de nuevo |
    | `No se pudo subir el recurso: tu cuota de almacenamiento está llena.` | Elimina archivos que ya no uses, o pasa a un plan más grande. Mira [facturación](/es/billing) |
    | `El recurso se subió pero no se pudo asignar.` | El archivo está en tu biblioteca. Asígnalo desde ahí |
    | `La entidad ya tiene un recurso para este rol.` | Pon `Comportamiento de actualización` en `Reemplazar`, o usa otro rol |
    | `Este rol de ranura única ya tiene un recurso; el modo Agregar no puede reemplazarlo.` | Pon `Comportamiento de actualización` en `Reemplazar` |
    | `La entidad ya tenía un recurso para este rol y se seleccionó el comportamiento Conservar.` | El archivo nuevo está en tu biblioteca, sin asignar. Cambia a `Reemplazar` para intercambiarlo |
    | `El recurso ya está en tu biblioteca DAM. Se asignó el recurso existente.` | Nada. Tu archivo se reutilizó en lugar de copiarse |
    | `El recurso ya existe en tu biblioteca DAM. Los metadatos del CSV no se aplicaron.` | Elige `Reutilizar, actualizar etiquetas` si querías aplicar el nombre y el texto alternativo del archivo |
  </Accordion>

  <Accordion title="Errores y advertencias sobre precios">
    Tres de estos bloquean la fila, y el resto la dejan pasar y suman al contador `Advertencias`.

    | Mensaje | Bloquea la fila |
    | --- | --- |
    | `El precio de comparación debe ser mayor o igual al precio` | Sí |
    | `El precio está por debajo del costo (margen negativo)` | Sí |
    | `El MAP no puede ser mayor que el MSRP` | Sí |
    | `El precio está por debajo del MAP (precio mínimo anunciado)` | No |
    | `El precio está por encima del MSRP` | No |
    | `Tu costo está por encima del MAP` | No |
    | `Tu costo está por encima del MSRP` | No |

    El detalle de los avisos de precio tiene un tope por importación. Pasado ese tope, el archivo completo recibe una advertencia que dice `No todos los avisos de precios están listados: el detalle tiene un límite por importación. Corrige los listados y vuelve a importar para ver el resto.` Un archivo muy desordenado necesita entonces dos pasadas.

    Puede llegar una advertencia más en un producto que vendes a través del Repricer: `El precio se guardó en el PIM, pero los precios de esta cuenta de canal los gestiona el Repricer, por lo que los valores importados no se publicarán allí.` Gestiona esos precios desde el Repricer, o deshaz la vinculación para que los del PIM vuelvan a ser los que salen.
  </Accordion>

  <Accordion title="Errores al eliminar">
    | Mensaje | Qué cambiar |
    | --- | --- |
    | `No se puede eliminar: esta fila todavía tiene productos asignados. Elimina las asignaciones primero.` | Reasigna esos productos, o combina el registro como describe [marcas](/es/pim/catalog/brands) |
    | `No se puede eliminar: esta categoría todavía tiene categorías hijas. Elimina las hijas primero.` | Trabaja desde las hojas hacia arriba |
    | `No se puede eliminar: este grupo de especificaciones todavía tiene definiciones. Elimina las definiciones primero.` | Lo mismo, un nivel más abajo |
    | `No se puede eliminar: esta definición de especificación todavía tiene valores. Elimina los valores primero.` | Lo mismo otra vez |
    | `Una categoría no puede ser su propio padre.` | Revisa la ruta de esa fila |
    | `No se puede mover una categoría a uno de sus propios descendientes. Esto crearía un ciclo.` | Elige un padre fuera de la rama que estás moviendo |
  </Accordion>
</AccordionGroup>

### Corregir un archivo e importar de nuevo

Descarga el archivo de resultados, corrige tu archivo de origen e importa de nuevo.

<Tip>
  Las filas que ya entraron son el problema en tu segundo intento. Bajo `Crear` vuelven como errores de duplicado, uno por cada fila que salió bien la primera vez.
</Tip>

Así que puedes sacar esas filas del archivo o cambiar la importación a `Actualizar`, que las reescribe y deja intacto todo lo que no mapeaste. `Actualizar` suele ser la vía más rápida, porque no tienes que averiguar qué filas alcanzaron a entrar.

Las imágenes que se descargaron antes de que un producto fuera rechazado se quedan en tu biblioteca. Tu siguiente intento las encuentra y las reutiliza, así que reintentar un archivo de productos no te llena la biblioteca de duplicados.

## A dónde ir después

<Columns cols={2}>
  <Card title="Exportaciones" icon="download" href="/es/pim/uploads/exports">
    El archivo con la forma que espera una importación, y el ciclo de ida y vuelta que se construye sobre él.
  </Card>

  <Card title="Fuentes de datos" icon="rss" href="/es/pim/uploads/data-sources">
    El mismo archivo llegando en un horario, y qué hace distinto.
  </Card>

  <Card title="Productos" icon="package" href="/es/pim/catalog/products">
    En qué se convierte una fila, y los campos donde escribe un archivo de productos.
  </Card>

  <Card title="Recursos" icon="images" href="/es/pim/assets">
    Dónde va a parar una imagen importada, y los límites que su descarga tiene que superar.
  </Card>
</Columns>
