> ## 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.

# Fuentes de datos

> Una fuente de datos mantiene tu catálogo sincronizado con un archivo que está en otro lado, así cuando ese archivo cambia tu catálogo lo sigue solo.

Una fuente de datos es la hoja de cálculo de un proveedor que el PIM trae y lee hacia tu catálogo una y otra vez, con la frecuencia que tú elijas. Le dices dónde está el archivo, qué columna alimenta qué campo y cada cuánto revisar. Después de eso corre sola.

Armarías una por una de tres razones. Un proveedor cuyos precios y existencias cambian sin avisar. Varios proveedores que te mandan el mismo producto, sin ningún acuerdo sobre qué número conservar. O un archivo que vuelves a subir cada semana y que no quieres volver a mapear cada vez.

Una fuente de datos solo actualiza registros que ya tienes. Empareja cada fila de tu archivo con algo de tu catálogo y escribe adentro. Una fila que no empareja con nada se omite en lugar de volverse un producto nuevo, así que cargar un catálogo por primera vez es una [importación](/es/pim/uploads/imports).

Todo esto está en `Importar/Exportar`, dentro de la pestaña `Fuentes de datos`. El botón `Crear fuente de datos`, arriba de la tabla, abre un diálogo sobre la página que te lleva por hasta 7 pantallas. La tabla de abajo lista todas las fuentes que ha armado tu equipo, con una insignia de salud en cada una.

## Antes de empezar

### Si lo que quieres es una importación

Las dos leen un archivo CSV o XLSX hacia tu catálogo, y ahí termina el parecido. Una importación es un archivo que corres una vez. Una fuente de datos es un archivo al que el PIM vuelve una y otra vez.

| | Importación | Fuente de datos |
| --- | --- | --- |
| Cuándo corre | una vez, cuando tú la lanzas | según su propia programación, y cada vez que pulsas `Ejecutar ahora` |
| El archivo | el que subiste para esa corrida | se vuelve a traer en cada corrida desde la misma dirección, o lo vuelves a subir a mano |
| Una celda vacía | deja el valor que ya tenías | escribe el vacío en tu catálogo |
| Una fila que no coincide con nada | puede crear el registro | se omite, en cada corrida |
| Dos archivos que no coinciden en un campo | nada lo resuelve | lo resuelven las [prioridades de campos](/es/pim/uploads/data-sources/field-priorities) |

**Elige una importación** para una carga de una sola vez, y para cualquier cosa que tenga que crear productos, porque una fuente de datos nunca crea uno. **Elige una fuente de datos** cuando los números de un proveedor se mueven solos. Tu catálogo los sigue sin que nadie abra el archivo.

### Qué te permite hacer tu rol

Tu pestaña `Fuentes de datos` es de `Gerente` para arriba. Quien tenga rol `Administrador` o `Gerente` la ve y puede hacer todo ahí: crear una fuente, ejecutarla, pausarla, editarla y eliminarla.

Quien tenga rol `Editor` no ve la pestaña. Si sigue un enlace hacia acá le sale `Importaciones`. Los roles se asignan en [equipo, roles y permisos](/es/team#qué-puede-hacer-cada-rol-del-pim).

### Una celda vacía borra lo que tenías

<Warning>
  Una celda vacía en una columna que tu archivo sigue trayendo escribe ese vacío en tu catálogo. Los textos, el dinero y las medidas quedan vacíos, y las marcas, categorías y etiquetas pierden todo. Nada te devuelve el valor viejo.
</Warning>

Este es el comportamiento que sorprende a quien llega desde las importaciones, donde una celda vacía deja tu valor en paz. Qué escribe una sincronización en tu catálogo, más abajo, dice qué campos se borran y cuáles están protegidos.

### Los registros tienen que existir antes

Una fila solo sirve cuando encuentra algo de tu catálogo donde escribir. Con el catálogo vacío se omite cada fila de tu archivo, así que cárgalo antes con una [importación](/es/pim/uploads/imports).

Conectar un flujo demasiado pronto no es trabajo perdido. Las filas que no encontraron nada se vuelven a revisar solas apenas tu catálogo gana algo con lo que podrían coincidir. Una importación que corras es lo que suele disparar esa revisión.

## Cómo armar una fuente de datos

<Steps>
  <Step title="Abre el diálogo y ponle nombre">
    Desde `Importar/Exportar`, entra a la pestaña `Fuentes de datos` y pulsa `Crear fuente de datos` arriba de la tabla. En la primera pantalla, llamada `Datos básicos`, escribe un `Nombre`. Después pon la lista desplegable `Entidad` en el tipo de registro del que habla tu archivo.
  </Step>

  <Step title="Apúntala al archivo">
    En `Origen`, pon la lista desplegable `Tipo de fuente` en el lugar donde está tu archivo y llena la dirección, o suelta el archivo ahí. Al pulsar `Siguiente` el PIM se conecta y lee las columnas de tu archivo.
  </Step>

  <Step title="Di cómo una fila encuentra su registro">
    En `Reglas`, cada par de listas desplegables es un tipo de identidad a la izquierda, como `SKU`, y la columna de tu archivo que lo trae a la derecha. El PIM ya adivinó las dos.
  </Step>

  <Step title="Di qué columna alimenta qué campo">
    En `Campos`, cada campo del catálogo es una fila con una lista desplegable de las columnas de tu archivo. El PIM ya emparejó las que tienen nombres parecidos. Vacía las que no quieres alimentar.
  </Step>

  <Step title="Configura las opciones">
    `Opciones` aparece solo cuando algo de lo que mapeaste necesita una decisión. Cada sección tiene un valor por defecto, así que puedes pulsar `Siguiente` sin abrir ninguna.
  </Step>

  <Step title="Empareja las marcas del archivo con las tuyas">
    `Marcas` aparece solo en una fuente de `Productos` que coincide por `Brand Name`. Apunta cada nombre de marca de tu archivo a una marca de tu catálogo, o pulsa `Siguiente` y sáltala.
  </Step>

  <Step title="Elige cada cuánto corre">
    En `Programación`, pon la lista desplegable `Frecuencia` en `Intervalo`, `Diario` o `Semanal`, llena las horas y pulsa `Crear`.
  </Step>
</Steps>

Ese es todo el flujo. Tu fuente aparece de inmediato en la tabla. Corre por primera vez cuando le toque según su programación, o apenas pulses `Ejecutar ahora` en su fila.

Todo lo que sigue explica esas pantallas una por una, y después qué le hace una sincronización a tu catálogo. No necesitas nada de eso para un flujo sencillo.

## Cada opción en detalle

El diálogo tiene 7 pantallas y tú ves entre 4 y 7. `Opciones` aparece solo cuando algo de lo que mapeaste trae una decisión consigo. `Marcas` aparece solo en una fuente de `Productos` cuya regla usa `Brand Name`, y `Programación` nunca aparece cuando subes el archivo tú.

Pulsa `Volver` cuando quieras, o pulsa un marcador de paso arriba del diálogo para saltar a una pantalla que ya llenaste. `Siguiente` se queda en gris hasta que la pantalla donde estás esté completa. En la última pantalla ese botón dice `Crear`, o `Guardar` cuando editas una fuente que ya existe.

### Paso 1: Ponle nombre y elige qué alimenta

`Datos básicos` es la primera pantalla dentro del diálogo, y ahí llenas tres campos.

| Campo | Qué hace |
| --- | --- |
| `Nombre` | Obligatorio, hasta 100 caracteres, y no hay dos fuentes tuyas que compartan uno. Si lo repites la casilla se pone roja con `Ya existe una fuente de datos con este nombre` |
| `Descripción` | Opcional, hasta 500 caracteres. Se muestra en la columna `Descripción` de la lista |
| `Entidad` | El tipo de registro del que hablan las filas de tu archivo |

Las dos casillas de texto te cuentan los caracteres abajo mientras escribes.

`Entidad` es la elección de la que cuelga todo lo demás. Decide por qué identidades puedes coincidir, qué campos puedes alimentar y qué opciones aparecen después. Una fuente alimenta un solo tipo de registro, así que un archivo con productos y marcas juntos necesita dos fuentes.

| `Entidad` | Una fila de tu archivo es |
| --- | --- |
| `Productos` | un producto, o una variante específica de uno |
| `Marcas` | una marca |
| `Categorías` | una categoría |
| `Etiquetas` | una etiqueta |
| `Grupo de especificaciones` | un grupo de especificaciones |
| `Definición de especificación` | una especificación |
| `Valor de especificación` | un valor permitido de una especificación |
| `Recurso` | una imagen o un documento de tu [biblioteca de recursos](/es/pim/assets) |

<Warning>
  Cambiar `Entidad` después de llenar las pantallas siguientes descarta tus reglas, tus mapeos de campos, tus separadores y tus mapeos de marcas. El diálogo pregunta antes, con `Restablecer y continuar`.
</Warning>

### Paso 2: Apúntala al archivo

`Origen` es la segunda pantalla, y te pregunta dónde está tu archivo. `Tipo de fuente` es una lista desplegable con 4 opciones, y los campos de abajo cambian según tu respuesta.

| `Tipo de fuente` | Qué llenas |
| --- | --- |
| `URL (HTTP/HTTPS)` | `URL de la fuente`, la dirección web completa de tu archivo |
| `FTP` | `Host`, `Puerto`, `Usuario`, `Contraseña` y `Ruta del archivo` |
| `SFTP` | Los mismos 5 campos |
| `Carga manual` | Nada. En lugar de eso sueltas tu archivo en el diálogo |

`Puerto` se llena solo al elegir el protocolo, 21 para `FTP` y 22 para `SFTP`. Un puerto que escribiste tú se conserva si cambias entre los dos.

**En `FTP` el usuario y la contraseña van juntos.** Deja `Usuario` y `Contraseña` vacíos para un servidor que acepta acceso anónimo. Llena los dos en cualquier otro caso, porque escribir uno vuelve obligatorio el otro. `SFTP` siempre te pide los dos. El botón del ojo junto a `Contraseña` te muestra lo que escribiste.

**Pulsar `Siguiente` en esta pantalla se conecta de verdad.** El PIM llega al servidor, descarga tu archivo y lee sus nombres de columna y sus primeras filas. Esas columnas son las que te ofrecen las pantallas siguientes.

Una falla te deja en esta pantalla con un aviso rojo que nombra el motivo, así que lo corriges y vuelves a pulsar `Siguiente`.

<AccordionGroup>
  <Accordion title="Qué te está diciendo cada falla de conexión">
    | Mensaje | Qué hacer |
    | --- | --- |
    | `Eso no parece una dirección web válida. Ingresa una URL completa que comience con http:// o https://.` | Agrega el `http://` o `https://` que falta |
    | `Esta dirección apunta a una ubicación restringida o de red interna y no se puede usar. Ingresa la dirección de un servidor público.` | Usa una dirección a la que se llegue desde fuera de tu red |
    | `No encontramos el servidor "{host}". Revisa que la dirección no tenga errores de escritura.` | Corrige la casilla `Host` |
    | `El servidor "{host}" rechazó la conexión. Revisa el puerto y que el servidor esté en línea.` | Corrige la casilla `Puerto`, o pregúntale a tu proveedor si el servidor está arriba |
    | `El servidor no respondió a tiempo. Revisa el host y el puerto, y que el servidor sea accesible desde internet.` | Pregúntale a tu proveedor si el servidor es público |
    | `El servidor cerró la conexión inesperadamente. Inténtalo de nuevo; si persiste, contacta al proveedor del archivo.` | Vuelve a pulsar `Siguiente` |
    | `No pudimos establecer una conexión segura: el certificado de seguridad del servidor parece inválido o vencido.` | Pídele a tu proveedor que renueve su certificado |
    | `El servidor rechazó el usuario o la contraseña. Verifica las credenciales.` | Vuelve a escribir `Usuario` y `Contraseña` |
    | `El archivo "{path}" no se encontró en el servidor. Revisa la ruta del archivo, por ejemplo: /exports/products.csv.` | Corrige la casilla `Ruta del archivo` |
    | `El servidor negó el acceso a "{path}". Es posible que la cuenta no tenga permiso para leer ese archivo o carpeta.` | Pídele a tu proveedor que le abra esa carpeta a tu cuenta |
    | `No pudimos acceder a esa URL. Revisa que esté bien escrita y que sea accesible desde internet.` | Abre la dirección en un navegador y mira qué pasa |
    | `No pudimos conectarnos al servidor. Revisa los datos de conexión e inténtalo de nuevo.` | Revisa cada casilla de la pantalla |
    | `El servidor requiere iniciar sesión para acceder a esa URL (HTTP {status}). Usa un enlace que no requiera autenticación.` | Pídele a tu proveedor un enlace que no pida sesión |
    | `No se encontró nada en esa URL (HTTP {status}). Revisa que el enlace sea correcto y siga activo.` | Pídele a tu proveedor el enlace actual |
    | `El servidor está limitando las solicitudes en este momento (HTTP {status}). Espera un momento e inténtalo de nuevo.` | Espera y vuelve a pulsar `Siguiente` |
    | `El servidor tuvo un problema interno al procesar la solicitud (HTTP {status}). Inténtalo más tarde.` | Espera y vuelve a pulsar `Siguiente` |
    | `El servidor devolvió una respuesta inesperada (HTTP {status}).` | Abre la dirección en un navegador y mira qué devuelve |
  </Accordion>

  <Accordion title="Qué te está diciendo cada problema del archivo">
    | Mensaje | Qué hacer |
    | --- | --- |
    | `Esa dirección devolvió una página web en lugar de un archivo de datos.` | El resto de ese mensaje te da la solución para Dropbox y Google Drive. Usa un enlace que entregue el archivo mismo |
    | `Este archivo no es una hoja de cálculo compatible. Usa un archivo CSV o XLSX.` | Pídele a tu proveedor CSV o XLSX. El `.xls` viejo también se rechaza |
    | `El archivo se descargó pero no se pudo leer como hoja de cálculo. Revisa que sea un CSV o XLSX válido.` | Abre tu archivo y revisa que sea lo que esperas |
    | `El archivo se descargó pero está vacío. Revisa que en esa ubicación se esté publicando el archivo correcto.` | Pregúntale a tu proveedor qué hay en esa dirección |
    | `El archivo se leyó correctamente pero no tiene filas de datos. Revisa que contenga datos además de la fila de encabezados.` | Pídele a tu proveedor un archivo con filas adentro |
    | `Esta hoja no tiene filas de datos. Elige otra hoja en el selector.` | Elige otra hoja |
    | `El archivo supera el límite de 500 MB. Reduce su tamaño o divídelo en archivos más pequeños.` | Pídele a tu proveedor que divida el archivo |
  </Accordion>
</AccordionGroup>

### Paso 2: Sube el archivo tú

`Carga manual` te da un área donde soltar el archivo en lugar de los campos de dirección. Arrástralo encima, o pulsa para buscarlo. El PIM lo lee apenas llega y te muestra cuántas columnas tiene, unas filas de ejemplo y su total. Suelta un archivo nuevo en esa misma área cuando quieras para reemplazar lo que hay.

Un XLSX con más de una hoja recibe un selector de hoja arriba de esa vista previa. Las hojas que el PIM ve vacías quedan fuera de tu selector. Cuando la primera hoja es una de esas, te elige una que sí tenga datos.

Un archivo que subes tú no tiene programación. Se sincroniza apenas guardas la fuente. Después corre solo cuando subes un archivo nuevo o pulsas `Ejecutar ahora` en su fila, y editar un mapeo de campos por su cuenta no la corre.

<Note>
  Un archivo que se trae desde una URL o desde un servidor FTP o SFTP siempre lee la primera hoja y no muestra selector. Solo un archivo que subes tú te deja elegir.
</Note>

### Paso 3: Di cómo una fila encuentra su registro

`Reglas` es la tercera pantalla, y es la que hace la coincidencia por ti. Ahí dices qué hace que una fila de tu archivo sea la misma cosa que un registro de tu catálogo.

Una regla es una lista de pares que tú armas. Cada par te da dos listas desplegables lado a lado. A la izquierda eliges el tipo de identidad, como `SKU` o `Barcode`. A la derecha eliges la columna de tu archivo que lo trae. `Regla 1` ya está ahí cuando llegas, con la columna llena donde el PIM reconoció alguno de tus encabezados.

**`Coincidencia simple` usa un par y `Coincidencia compuesta` usa dos o más.** Las dos son botones de opción arriba de cada regla. Una coincidencia simple toma una de tus columnas y busca el registro que trae ese valor exacto. Una compuesta toma varias de tus columnas y busca el único registro que las cumple todas a la vez.

Por eso `Brand Name` y `Product Type` se ofrecen dentro de una regla compuesta y en ningún otro lado. Cualquiera de los dos por su cuenta coincidiría con cada producto de esa marca o de ese tipo.

**Las reglas se prueban de arriba abajo y gana la primera que encuentra exactamente un registro.** Arrastra una regla por el asa de su borde izquierdo para subirla o bajarla. `Agregar regla`, al final de la pantalla, agrega otra regla, y `Agregar`, dentro de una regla, le agrega otro par.

**Una regla que encuentra más de un registro detiene ahí la fila.** La fila cuenta como sin coincidencia, las reglas de abajo ni se prueban y no se escribe nada. Escribir el precio de tu proveedor en uno de dos productos que comparten título es peor que no escribir nada.

Una de tus reglas no puede usar dos veces el mismo tipo de identidad, y dos de ellas no pueden ser idénticas. La pantalla te lo dice, con `Tipo de destino duplicado en esta regla. Cambia uno de ellos.` y `Igual que la regla 1 - cambia el destino o la columna`. Una regla compuesta con un solo par dice `Las reglas compuestas requieren al menos 2 campos de coincidencia. Agrega otro campo o cambia a coincidencia simple.`

<Accordion title="Todas las identidades por las que puedes coincidir, según el tipo de registro">
  Esta lista desplegable muestra sus opciones en inglés, tengas la app en el idioma que la tengas.

  | `Entidad` | Lo que ofrece la lista de la izquierda |
  | --- | --- |
  | `Productos` | `ID`, `SKU`, `Part Number`, `Barcode`, `ISBN`, `Custom`, `Slug`, `Title`, más `Brand Name` y `Product Type` dentro de una regla compuesta |
  | `Marcas` | `ID`, `Brand Name`, `Brand Slug` |
  | `Categorías` | `ID`, `Category Slug`, `Category Path` |
  | `Etiquetas` | `ID`, `Tag Name` |
  | `Grupo de especificaciones` | `ID`, `Spec Group Name` |
  | `Definición de especificación` | `ID`, `Group Name`, `Definition Name` |
  | `Valor de especificación` | `ID`, `Group Name`, `Definition Name`, `Value Name` |
  | `Recurso` | `ID`, `Asset URL`, `Display Name` |

  `ID` es el identificador propio del PIM para tu registro. Es el que te da una [exportación](/es/pim/uploads/exports) cuando enciendes `Incluir campos del sistema`. En productos acepta el de un producto o el de una variante y resuelve al producto en los dos casos.

  `Category Path` coincide por la ruta completa, escrita como la escribe una exportación, así: `Electrónica > Teléfonos > Smartphones`. `Asset URL` acepta el enlace web de una exportación de recursos e ignora todo lo que va después del signo de interrogación.
</Accordion>

### Paso 3: Qué decide la coincidencia en un flujo de productos

En una fuente de `Productos`, la identidad por la que coincides decide cuánto de cada fila entra.

| Coincides por | La fila habla de |
| --- | --- |
| `SKU`, `Barcode`, `ISBN`, `Part Number` o `Custom` | una variante específica |
| `ID`, `Slug`, `Title`, `Brand Name` o `Product Type` | el producto |

Una coincidencia por variante escribe solo lo que le pertenece a esa variante cuando el producto tiene más de una. Recibes su precio, su costo, sus existencias, sus medidas y sus códigos de barras. Los campos que comparte todo el producto se descartan sin decir nada, algo que [historial de sincronización](/es/pim/uploads/data-sources/sync-history) explica junto con la excepción de las imágenes.

Una coincidencia a nivel de producto escribe en el producto y en su variante predeterminada, la fila que [variantes](/es/pim/catalog/variants) llama la escondida. Así que un flujo que quieres que sea dueño de los títulos coincide por `Slug` o por `Title`. Un flujo que coincide por `SKU` es un flujo por variante, traiga lo que traiga.

### Paso 4: Di qué columna alimenta qué campo

`Campos` es la cuarta pantalla, y es donde conectas las dos cosas. Cada campo del catálogo de tu `Entidad` es una fila, con el nombre del campo a la izquierda y una lista desplegable de tus columnas a la derecha. Elige una columna para alimentar ese campo, o deja la lista vacía para dejarlo en paz.

El PIM llena esto por ti antes de que lo toques. Cuando llegas, cada campo cuyo nombre se parece a uno de tus encabezados ya está mapeado. No se fija en mayúsculas, espacios ni puntuación, así que una columna llamada `numeros de parte` va sola a `Números de parte`. Vaciar un mapeo se queda vacío, porque esa adivinanza corre una sola vez.

Los campos vienen ordenados en grupos con su propio encabezado, en el mismo orden que usa el diálogo de [exportación](/es/pim/uploads/exports). Arriba de ellos hay una barra que te da una casilla `Buscar` y un filtro de `Todos`, `Mapeados` y `Sin mapear`. Los conteos junto a esos tres se mantienen sobre tu lista completa mientras acotas.

Necesitas al menos un campo mapeado para guardar. Por debajo de eso, `Siguiente` se queda en gris en esta pantalla y `Guardar` se queda en gris en la última.

Los productos reciben una fila que ningún otro tipo de registro tiene, llamada `Custom`, al final del grupo `Identificadores`. Apúntala a cualquier columna y esa columna se vuelve un identificador personalizado. Su encabezado se vuelve la etiqueta y cada celda se vuelve el valor de ese producto. Es la única fila que el PIM nunca adivina por ti, y una fuente lleva una sola, así que elegir otra columna reemplaza la primera.

<Accordion title="Los campos que ninguna fuente de datos puede alimentar">
  Unos cuantos campos nunca están en esta pantalla.

  | Campo | Por qué no está aquí |
  | --- | --- |
  | `SKU` | Nombra una variante. Coincide por él en lugar de alimentarlo |
  | `Stock físico` | Lo escriben tus integraciones conectadas, y [inventario](/es/pim/catalog/inventory) explica cómo se arma |
  | `Opción 1: nombre`, `Opción 1: valor` y las demás | Un flujo no puede crear ni renombrar las opciones de una variante |
  | `Nombre para mostrar` | El PIM lo arma a partir de las opciones de la variante |

  Dos de estos juntos significan que una fuente de datos nunca puede cambiar la forma de un producto. Escribe dentro de variantes que ya existen y nunca agrega una. Así que un proveedor que agrega una talla nueva a un producto tuyo es un cambio que haces tú o que entra por una [importación](/es/pim/uploads/imports).

  Las existencias que un flujo puede escribir son `Stock del proveedor` y `Stock de respaldo`. El costo es `Costo del proveedor`, `Costo físico` y `Costo de respaldo`.
</Accordion>

### Paso 5: Configura las opciones

`Opciones` es la quinta pantalla y trae hasta 4 secciones. Cada una llega cerrada, y abrir una cierra la anterior. Una sección aparece solo cuando mapeaste un campo que la necesita, y cuando ninguna de las cuatro aplica la pantalla se salta.

| Sección | Aparece cuando | Decide |
| --- | --- | --- |
| Referencias faltantes | mapeaste un campo que apunta a otro registro, como `Marcas` | qué hace una fila cuando nombra algo que no tienes |
| `Descargas de recursos` | mapeaste una columna de enlaces de imagen o de archivo | qué hace una fila cuando un enlace no se descarga |
| `Si el recurso ya existe` | lo mismo | qué le pasa a un archivo que ya tienes |
| `Separadores de valores en lista` | mapeaste un campo que puede traer varios valores | qué carácter parte una celda en una lista |

**La primera sección hace una pregunta por cada cosa que mapeaste.** Un flujo de productos puede levantar 6: `Si la marca no existe:`, `Si la etiqueta no existe:`, `Si la categoría no existe:`, `Si la categoría de Shopify no existe:`, `Si el valor de especificación no existe:` y `Si la especificación no está permitida para las categorías del producto:`. Cada una ofrece `Omitir con advertencia`, que es lo predeterminado, y `Rechazar la fila`. No hay una tercera respuesta, porque una fuente de datos no crea el registro que falta.

Elige `Omitir con advertencia` mientras echas a andar un flujo, para que una marca desconocida no te tire también el precio y las existencias de esa fila. Elige `Rechazar la fila` cuando tu flujo ya esté asentado y prefieras ver fallar una fila entera antes que verla entrar a medias.

**`Descargas de recursos` cubre los enlaces que no funcionan.** `Si falla la descarga de un recurso:` viene en `Advertir y continuar`, frente a `Fallar fila`. En un flujo de productos que mapea una columna de galería pero ninguna de imagen principal, abajo aparece una segunda pregunta. `Si la galería no tiene imagen principal:` ofrece `Dejar sin imagen principal` y `Promover la primera a principal`, y la segunda toma la primera imagen que sí se descargó.

**`Si el recurso ya existe` decide qué le pasa a las etiquetas de un archivo que ya tienes.** `Reutilizar, actualizar etiquetas` es lo predeterminado y sobrescribe tus etiquetas con las del archivo. `Reutilizar, conservar etiquetas` deja las tuyas en paz, y `Subir como nuevo` guarda otra copia cada vez.

**`Separadores de valores en lista` es para las celdas que traen una lista.** Un producto con tres etiquetas las mete todas en una celda, y el PIM parte esa celda por una barra vertical. Las partes de una ruta de categoría se parten por `>`. Cambia el carácter aquí si tus propios valores ya traen barras verticales. Recibes una casilla por cada lista, cada una acepta hasta 10 caracteres, y vaciarla devuelve el valor por defecto.

### Paso 6: Empareja las marcas del archivo con las tuyas

`Marcas` aparece solo en una fuente de `Productos` cuya regla compuesta usa `Brand Name`. Lista cada nombre de marca distinto de tu archivo y te deja apuntar cada uno hasta a 15 marcas de tu catálogo, o marcarlo como `+ Crear como nueva marca`.

Una insignia en cada fila dice cómo va. `Mapeada` significa que ya la apuntaste a algún lado, `Nueva` que la marcaste para crearla, y `Requerida` que todavía no la contestas. Arriba de la lista hay una casilla de búsqueda y un filtro de `Todos`, `Mapeados` y `Sin mapear`, el mismo par que trae `Campos`.

Este es el único lugar de toda la función donde una fuente de datos crea un registro. Un nombre de marca es una cosa o la otra, nunca las dos, y en [marcas](/es/pim/catalog/brands) es donde aparecen las que se crean. También puedes pulsar `Siguiente` y saltarte la pantalla, con lo cual esas filas quedan bajo tu respuesta a `Si la marca no existe:`.

### Paso 7: Elige cada cuánto corre

`Programación` es la última pantalla para un archivo que el PIM trae. `Frecuencia` es una lista desplegable con 3 opciones, y los campos de abajo cambian según tu respuesta.

| `Frecuencia` | Qué aparece | Cuándo corre |
| --- | --- | --- |
| `Intervalo` | `Ejecutar cada` | cada 5, 15 o 30 minutos, o cada 1, 2, 3, 6, 12 o 24 horas |
| `Diario` | `Ejecutar a las` | a cada hora de reloj que agregues |
| `Semanal` | `Días de la semana` y `Ejecutar a las` | a cada hora que agregues, en cada día que elijas |

**`Diario` no es lo mismo que cada 24 horas.** `Diario` y `Semanal` disparan a las horas de reloj que elegiste, en la zona horaria con la que guardaste la programación. Editarla después nunca la cambia por la de quien la editó. `Intervalo` cuenta las horas desde que pasó la última corrida.

Elige `Intervalo` para las existencias, donde quieres el número cerca de la verdad todo el día y 5 minutos es el hueco más corto que hay. Elige `Diario` o `Semanal` para un proveedor que publica un archivo nuevo a una hora conocida, para que tu corrida caiga después del cambio.

Una fuente a la que ya le toca arranca dentro del minuto siguiente. Cambiar tu programación toma efecto de inmediato, así que una fuente semanal a la que le cambias la hora no se espera la semana vieja.

Una fuente corre una a la vez y nunca se encima. Si el turno llega mientras la corrida anterior sigue en curso, ese turno se salta y al minuto siguiente se vuelve a intentar. Un rato de caída te da una corrida y luego el ritmo normal, nunca una pila de corridas atrasadas.

### Lo que el asistente no te deja cambiar

Hay cosas sobre cómo se lee tu archivo que se deciden por ti.

| Qué | Cómo funciona |
| --- | --- |
| El carácter entre valores en un CSV | Se lee del archivo. Uno con un separador raro aparece en la vista previa como una sola columna ancha |
| La fila de encabezados | Siempre la fila 1 |
| La hoja de un libro traído desde un servidor | Siempre la primera |
| Cambiar un valor al entrar | No hay forma de recortar, partir ni reformatear una columna |
| Sumar a una lista en vez de reemplazarla | Un campo mapeado con varios valores se reemplaza entero, en cada corrida |
| Elegir qué filas leer | Cada fila de tu archivo se lee en cada corrida |

<Note>
  Nada previsualiza lo que una sincronización cambiaría. El asistente previsualiza el archivo, o sea sus encabezados y sus primeras filas, y ninguna pantalla te muestra cómo quedaría tu catálogo.
</Note>

### Ejecutar, pausar o eliminar una fuente

Todo lo que le haces a una fuente después de crearla pasa en su fila de la lista. Pulsar la fila misma vuelve a abrir el asistente sobre esa fuente. Guardar una edición es todo o nada: la fuente, las credenciales, las reglas, los mapeos y los mapeos de marcas se guardan juntos o no se guarda ninguno.

| Acción en la fila | Qué hace |
| --- | --- |
| `Ejecutar ahora` | Corre la fuente de inmediato y revisa de nuevo cada fila de tu último archivo, incluidas las que nunca coincidieron |
| `Historial` | Abre el [historial de sincronización](/es/pim/uploads/data-sources/sync-history) de esa fuente |
| `Pausar` y `Reanudar` | Detiene y reactiva la programación |
| `Eliminar` | Quita la fuente |

Marca las casillas de varias filas y arriba de la tabla aparece una barra. Te ofrece `Ejecutar ahora`, `Pausar / Reanudar` y `Eliminar`, que hacen esas mismas tres cosas con todas a la vez.

**`Ejecutar ahora` es más que adelantar la corrida.** Una corrida programada deja quietas las filas selladas como sin coincidencia y las filas cuyos errores ya se asentaron. `Ejecutar ahora` las vuelve a poner todas en la fila, que es como aplicas un arreglo hecho a mano. No tienes que esperar a que tu proveedor vuelva a tocar esa fila.

El botón queda inactivo mientras la fuente está pausada, mientras ya hay una corrida en curso y en un archivo subido a mano sin nada subido todavía. Se reactiva solo cuando la corrida termina.

**`Pausar` detiene un flujo sin borrarlo.** Su programación se salta una fuente pausada, y `Ejecutar ahora` también. Además deja de competir por los campos que mapea, así que una fuente que pausas no le entrega sus campos a otra al día siguiente. `Reanudar` la devuelve a su programación normal.

<Danger>
  Eliminar una fuente de datos no se puede deshacer y tampoco deshace su trabajo. La confirmación dice qué se va: `Se quitarán el historial de sincronización y los registros de propiedad de campos.`
</Danger>

Cada valor que esa fuente escribió se queda en tu catálogo tal como lo dejó, y las fuentes que quedan vuelven a decidir los campos que también mapean. La fila sale de tu lista al instante y su nombre queda libre enseguida, mientras la limpieza de su historial sigue por detrás.

### Qué te muestra la lista

La tabla tiene 15 columnas. `Nombre`, `Descripción`, `Origen`, `Destino`, `Reglas de coincidencia`, `Campos mapeados`, `Frecuencia`, `Estado`, `Última sincronización`, `Coincidentes`, `Sin coincidencia`, `Fecha de creación`, `Creado por`, `Última actualización` y `Actualizado por`. Al pasar el cursor por `Reglas de coincidencia` o por `Campos mapeados` se te dice qué traen.

`Coincidentes` y `Sin coincidencia` son la respuesta acumulada a cuánto del archivo de esa fuente ya encontró un registro en tu catálogo. Una fuente cuya `Sin coincidencia` sube es una fuente cuyo archivo se alejó de tus reglas.

En la barra de arriba de la tabla hay un botón más, junto a `Crear fuente de datos`. `Prioridades de campos` abre la pantalla donde dices a qué fuente le cree tu catálogo cuando dos de ellas mandan el mismo campo, y [prioridades de campos](/es/pim/uploads/data-sources/field-priorities) lo cubre completo.

### Límites

| Qué | Límite |
| --- | --- |
| Formatos que puede leer | CSV y XLSX |
| Un archivo que el PIM trae | 500 MB |
| Un archivo que subes tú | 476 MB |
| Nombre de la fuente | 100 caracteres |
| Descripción | 500 caracteres |
| Hueco más corto entre corridas | 5 minutos |
| Marcas del catálogo a las que puede apuntar un nombre de marca | 15 |
| Identificadores personalizados por fuente | 1 |
| Campos en un grupo | al menos 2 |
| Un separador que escribes | 10 caracteres |
| Corridas a la vez, por fuente | 1 |
| Corridas fallidas antes de que una fuente se apague sola | 5 |

### Lo que una fuente de datos no puede hacer

| No puedes | Haz esto en su lugar |
| --- | --- |
| Crear un producto, una variante o una categoría desde un flujo | Cárgalos antes con una [importación](/es/pim/uploads/imports) |
| Leer solo algunas filas de tu archivo | Pídele a tu proveedor un archivo más acotado |
| Ver qué cambiaría una sincronización antes de correrla | Córrela y lee el [historial de sincronización](/es/pim/uploads/data-sources/sync-history) |
| Deshacer una sincronización, o revertir una fuente | Corrige los valores a mano, o con una importación |
| Cambiar un valor al entrar | Corrígelo en el archivo antes de que el PIM lo lea |
| Sumar a una lista de valores en vez de reemplazarla | Manda la lista completa en la celda en cada corrida |
| Alimentar dos tipos de registro desde un mismo archivo | Arma una segunda fuente sobre el mismo archivo |
| Mandarle datos a un proveedor | Usa una [exportación](/es/pim/uploads/exports) |

## Qué escribe una sincronización en tu catálogo

### Cada corrida revisa cada fila que coincidió

**Una corrida no solo mira lo que cambió.** Cada corrida programada revisa cada fila que tiene un registro en tu catálogo. Calcula lo que tus flujos y tus [prioridades de campos](/es/pim/uploads/data-sources/field-priorities) dicen que ese registro debería tener, y lo escribe si tu catálogo dice otra cosa. Una fila en la que nadie discrepa se deja en paz, así que un catálogo asentado no te cuesta nada.

Entiende esto antes de editar a mano un campo alimentado, porque significa que una fuente de datos es dueña de sus columnas mientras corre. Cambia el precio de un proveedor en el [editor de productos](/es/pim/catalog/products) y la siguiente corrida vuelve a poner el número del proveedor. Para que tu cambio se quede, quítale ese campo a la fuente: vacía el mapeo en `Campos`, o pausa la fuente.

También significa que un valor que se estropeó se repara solo. Un campo que alguien sobrescribió por accidente regresa en la siguiente corrida sin que hagas nada.

### Qué hace una celda vacía

Una celda vacía es un valor que tu proveedor está afirmando, no un hueco que se le olvidó. Cuál valor depende del campo.

| El campo | Una celda vacía |
| --- | --- |
| Texto, dinero, medidas, SEO y notas | lo vacía |
| `Stock del proveedor` | escribe `0`, así que `Stock efectivo` cae a tus propios números |
| Marcas, categorías, etiquetas, características, especificaciones y fuentes de información | los quita todos |
| Imágenes y enlaces de archivos | los quita de ese registro |
| `Rastrear inventario` | se queda encendido, así que un vacío nunca apaga tu control de inventario |
| Una lista corta de campos protegidos | conserva lo que tenía |

Una columna que tu proveedor deja de mandar por completo es el caso contrario, y está a salvo. El PIM solo escribe los campos que recibe. Una columna que desaparece de tu archivo deja tu valor en paz para siempre, y la que hay que vigilar es la columna presente y vacía.

<Accordion title="Los campos que una celda vacía nunca toca">
  Unos pocos campos conservan tu valor diga lo que diga la celda, porque el registro dejaría de tener sentido sin ellos.

  | En | Los campos protegidos |
  | --- | --- |
  | Productos | `Título`, `Slug`, `Estado`, `Condición` |
  | Variantes | el nombre para mostrar, la posición y las 8 columnas de unidad de medida |
  | Marcas, categorías y etiquetas | el nombre y el slug |
  | Grupos, definiciones y valores de especificación | los nombres y la posición |
  | Definiciones de especificación | `Es obligatorio` y `Es único` |
  | Recursos | el nombre para mostrar |

  Una medida y su unidad se tratan por separado. Vaciar `Peso del producto` borra el número y deja `Unidad de peso del producto` en paz, así que tu registro sigue sabiendo que medías en libras.
</Accordion>

### Por qué un cero en una celda de dinero cuenta como vacío

Un precio, un costo, un MAP, un MSRP o un precio comparativo con `0`, `0.00` o `$0` se lee como si no trajera valor. Vacía la columna igual que la vaciaría una celda en blanco, y una medida de `0` se lee igual.

El motivo es que un proveedor que escribe `0` casi siempre quiere decir que no tiene número para ti, no que el artículo sea gratis. Así que ningún flujo puede poner un cero literal en una columna de dinero. La única forma de poner uno es escribirlo tú en los [campos de dinero](/es/pim/catalog/pricing#los-cinco-campos-de-dinero) del producto, que no pasan por esta lectura.

`Stock del proveedor` es la excepción, donde `0` es una respuesta real y se queda como tal.

### Qué pasa cuando una fila deja de llegar

No se elimina nada de tu catálogo cuando una fila deja de llegar. Cada campo que esa fila escribía se queda con el último valor que escribió. Un producto descontinuado no desaparece, no se despublica y no se vacía.

Hay una excepción, y es la que quieres. Cuando las filas de un producto dejan de llegar desde todas las fuentes que alimentan existencias, `Stock del proveedor` cae a `0` a los pocos segundos. `Stock efectivo` cae entonces a las cantidades físicas y de respaldo que tú manejas, que es lo que [inventario](/es/pim/catalog/inventory) llama una columna que manda la fuente. Tu catálogo deja de anunciar una cantidad que ya nadie confirma.

### Qué pasa con una fila que nunca coincidió

Una fila que llegó y no coincidió con nada queda sellada en vez de reintentarse para siempre. El archivo de un proveedor lleno de productos que no manejas no te cuesta nada en cada corrida.

El PIM vuelve a abrir esas filas por su cuenta apenas tu catálogo gana algo con lo que ahora podrían coincidir. Tres cosas cuentan: un producto creado, un identificador agregado o corregido, y una marca renombrada o unida a un producto. Reescribir un título no cuenta, porque un título no es en lo que fallaron esas filas.

Que termine una importación dispara esa revisión en segundos, y eso hace que el orden normal funcione. Conecta tus flujos, después carga tu catálogo, y tus flujos se ponen al día solos. Para un archivo que subes a mano, que termine una importación es lo único que reabre esas filas aparte de `Ejecutar ahora`.

## Cuando algo falla

### Cómo leer la insignia de la lista

La columna `Estado` muestra una insignia, y dos de las palabras no significan lo que parecen.

| Insignia | Qué significa | ¿Sigue en su programación? |
| --- | --- | --- |
| `Activo` | la última corrida salió bien, o terminó con algunas filas fallando, o todavía no hay ninguna | sí |
| `Error` | la última corrida falló, y la fuente sigue corriendo y sigue intentando | sí |
| `Pausado` | la pausaste tú | no |
| `Necesita atención` | se apagó sola | no |
| `Esperando archivo` | recibe un archivo subido a mano y todavía no llega ninguno | sí |

`Error` y `Necesita atención` te muestran el motivo al pasar el cursor. Las otras no muestran nada.

### Cuando una fuente se apaga sola

Una fuente se apaga sola después de 5 corridas fallidas seguidas, y de ahí en adelante dice `Necesita atención`. Para esas 5 solo cuentan las fallas de archivo completo: una descarga que nunca llegó, un archivo que no se pudo abrir, un guardado que falló.

Las filas que no se aplican no cuentan, y una corrida donde el archivo estuvo bien y solo fallaron algunas filas tampoco. Así que tu fuente puede reportar errores de fila corrida tras corrida sin que nunca la apaguen, y ese número no lo puedes cambiar.

Una fuente en `Necesita atención` sí corre cuando pulsas `Ejecutar ahora`. Una corrida exitosa la devuelve a `Activo` y reinicia la cuenta.

### Cuando cambian las columnas del archivo

Hay una falla que apaga una fuente la primera vez que pasa: que una columna que usan tus reglas o tus mapeos desaparezca de tu archivo. No se escribe nada, porque una columna presente en tu configuración y ausente de tu archivo se leería como una celda vacía y borraría el campo.

Al reabrir el asistente aparece arriba `Las columnas del archivo cambiaron. Corrige los campos marcados en rojo abajo antes de continuar.` Cada lista desplegable rota se marca en rojo, con `Esta columna ya no está en el archivo` debajo. Elige la columna nueva en cada una, y al guardar tu fuente se reactiva, se limpia el error y corre.

### Cuando una fila coincide con más de un registro

Una fila cuya regla encontró varios candidatos no escribe nada y cuenta como sin coincidencia. Para ver por qué, abre `Historial` en esa fuente y descarga su reporte de `Resultados`. La columna `message` de esa fila nombra hasta 5 de los registros con los que chocó y te dice qué cambiar.

Ahí los productos se nombran por su slug. En el caso típico, dos productos con el mismo título, los títulos son idénticos y el slug es lo único que los distingue. En [identificadores](/es/pim/catalog/identifiers) está qué hace único un valor.

### Cuando un archivo nombra el mismo producto dos veces

Dos filas del mismo archivo que apuntan al mismo registro pasan las dos, y se queda un solo juego de valores. Cada fila de ese grupo muestra el aviso en su columna `message` del archivo de `Resultados`. Un SKU repetido en el archivo de tu proveedor es algo que puedes encontrar y no algo que adivinas.

### Los correos que recibes

Cada falla de archivo completo te llega por correo, un mensaje por fuente. Te da la misma frase que muestra la insignia al pasar el cursor, y un botón de vuelta a tu lista. Las fallas repetidas se juntan en un solo mensaje, así que una fuente que falla cada 5 minutos no te llena la bandeja, y la siguiente sincronización exitosa lo cierra.

El correo es el único canal que hay. Una corrida donde el archivo estuvo bien y solo fallaron algunas de sus filas no le escribe a nadie. Un flujo con filas fallando sin aviso lo encuentras en el [historial de sincronización](/es/pim/uploads/data-sources/sync-history) y no en tu bandeja.

## A dónde ir después

<Columns cols={2}>
  <Card title="Historial de sincronización" icon="history" href="/es/pim/uploads/data-sources/sync-history">
    Qué contó cada corrida, y el reporte que la explica fila por fila.
  </Card>

  <Card title="Prioridades de campos" icon="list-ordered" href="/es/pim/uploads/data-sources/field-priorities">
    Qué fuente gana un campo cuando dos de ellas lo mandan.
  </Card>

  <Card title="Importaciones" icon="upload" href="/es/pim/uploads/imports">
    La carga de una vez que sí crea registros, y los cuatro modos en que corre.
  </Card>

  <Card title="Inventario" icon="warehouse" href="/es/pim/catalog/inventory">
    De qué columna de existencias es dueña una fuente, y qué pasa cuando deja de reportar.
  </Card>
</Columns>
