Cargando datos...
Cargando...
Cargando...
Cargando...
1. Datos básicos
Título
Categoría
2. Características
Elegí una categoría en la sección 1 para ver las características.
Características secundarias (opcionales)
3. Imágenes
Carpeta de Google Drive (trae todas las imágenes sueltas en esa carpeta, ignora subcarpetas)
⚠️ La carpeta tiene que estar compartida como "Cualquier persona con el enlace puede ver".
4. Descripción
ℹ️ Para generar la descripción con IA, primero cargá los datos de arriba: como mínimo título, categoría e imágenes — cuantos más datos tengas cargados (características, tendencias, etc.), mejor va a salir.
5. Información del producto
Condición
Tipo de publicación
ML puede forzar envío gratis igual en Premium/Clásica por encima de cierto precio, sin importar lo que elijas acá.
SKU / familia
Código de barras (opcional)
Precio (COP)
Stock inicial
Dimensiones y peso del paquete (para el envío) — precargado con un default, editable
Altocm
Anchocm
Largocm
Pesog
📦 Se va a publicar como producto simple (sin variantes) — usa el SKU, precio, stock y dimensiones de arriba.
6. Resumen
ℹ️ Esta cuenta maneja el stock por bodega (multi-warehouse: bodega propia Fulfy Bogotá + Full ML). El "Stock inicial"/stock por variante cargado acá se asigna automáticamente a la bodega propia después de crear cada ítem. Full ML no se carga desde acá — para eso seguí usando "Envíos Full" como siempre.
Cargando...
MOSTRAR:
Cargando inventario...
Cargando reclamos...
📸 Captura desde marketplace (prueba)
1. Arrastra este botón a tu barra de marcadores (una sola vez): 📸 Mercametrics
2. Abre el producto en Amazon, Temu, AliExpress o Mercado Libre, baja hasta las opiniones para que carguen y dale clic al marcador.
3. Se abre esta página con lo que se pudo leer.
2. Abre el producto en Amazon, Temu, AliExpress o Mercado Libre, baja hasta las opiniones para que carguen y dale clic al marcador.
3. Se abre esta página con lo que se pudo leer.
Foto del producto *
Arrastra la foto aquí o haz clic para elegir
PNG, JPG o WEBP · máx. 20 MB
PNG, JPG o WEBP · máx. 20 MB
Imágenes de ejemplo (estilo) hasta 4 · también puedes pegar con Ctrl+V
Arrastra o haz clic para agregar ejemplos
Título
Beneficios uno por línea
Especificaciones medidas, materiales, capacidad…
Instrucciones de estilo
Links uno por línea · imagen = ejemplo extra, página = contexto
Formato
Calidad
Cantidad
Resultado
Sube la foto del producto, escribe los textos y genera.
Historial
Tiendas
Cuentas de Mercado Libre que maneja la app · el selector de arriba elige cuál ves
Cómo conectar una cuenta de Mercado Libre
Conectar con ML (recomendado): abre el login de Mercado Libre y vuelve solo. Entrá con la cuenta de ESA tienda: si el navegador ya tiene otra cuenta de ML abierta, usá una ventana de incógnito o cerrá la sesión de ML antes.Pegar tokens: Access Token (APP_USR-…) y Refresh Token (TG-…, permite la renovación automática) de la app en ML Developers →. El server los valida con Mercado Libre antes de guardarlos.
🔒 Los tokens y la API key de Fulfy quedan solo en el servidor; nunca vuelven al navegador.
Usuarios
Equipo y roles (admin, dev, operador) · ven todas las tiendas
v3.2
Multi-tienda, Administración, roles e Inicio
Octubre 2026 · versión actual
NUEVO
Crear infografías: serie armada desde la captura del marketplace (21-oct-2026)
Después de capturar un producto con el marcador, eliges la foto y "✨ Armar serie" deja el formulario listo: foto del producto, título, beneficios, ficha técnica en sistema métrico y 7 escenas en español. Las opiniones guían qué destacar, sin inventar datos. Revisas y generas.
NUEVO
Liquidación: valor del stock por SKU y liquidar con el % de retorno que elijas (20-oct-2026)
Panel nuevo en Mercado Libre (solo Admin/Dev). Un renglón por SKU con stock: unidades (bodega y Full), valor a costo Fulfy, rotación (ventas de 30 días y días de stock), precio y margen de hoy (la publicación que más vende, con los costos de Promociones) y valor + ganancia: el valor de la mercancía a costo más lo que se gana vendiendo todas las unidades. Arriba: valor del stock, valor + ganancia, valor con rotación lenta (más de 90 días o sin ventas) y la caja estimada de lo que está en liquidación. La tilde Liquidar pide el % de retorno (10% por defecto) y muestra el precio piso, el descuento, la caja y el valor + ganancia (costo + ganancia, en grande) antes de confirmar. Se pueden abrir varios a la vez, cada uno con su %: con 2 o más aparece Liquidar seleccionados para guardarlos todos juntos. Cada producto lleva su foto al lado del nombre. En Promociones, todas las publicaciones de ese SKU salen de todas las reglas (topes de descuento, margen mínimo de 20%, ticket mínimo, 2 por SKU, poco stock, rotura, dropshipping, Meli+) y van siempre con promo al precio más bajo que deje ese margen: la campaña de ML más profunda que cumpla o, si ninguna sirve, un descuento individual. Llevan la etiqueta 🔥 LIQUIDACIÓN, tienen su filtro y aparecen en 🚨 Faltan promo mientras no tengan promo. Se aplica a mano desde Promociones, como siempre. Se guarda por tienda y lo ven igual el operador e Inicio; al quitarla, el SKU vuelve a las reglas normales (lo ya aplicado en ML queda como está).
NUEVO
Envíos Full: el sugerido ya no se achica por un quiebre de stock (20-oct-2026)
El sugerido usa las ventas de 30 días; si la publicación estuvo sin stock en Full, esas ventas quedan bajas y se sugería mandar de menos (o nada, si no vendió en 30 días). Ahora, si lo que hay en Full (+ stock propio) no alcanza para 7 días al ritmo de 60 días y ese ritmo es mayor que el de 30, se usa el de 60 para el sugerido, la cobertura y la reserva de bodega. La fila muestra ⚠️ Quiebre · ritmo 60d (al pasar el mouse, las dos cifras). Una publicación en quiebre tampoco se sugiere para "Sacar de Full" por haber vendido poco. Sin quiebre, todo igual que antes.
NUEVO
Inicio › Resumen: qué publicaciones explican cada cifra (20-oct-2026)
Debajo de "Tus ingresos bajaron/subieron $X principalmente por…" y de lo que amortiguó o frenó, una línea ↳ Sobre todo: con las 3 publicaciones que más aportan a esa cifra (tráfico, conversión o ticket, con el mismo reparto hecho por publicación), su monto y clic para abrir en ML. Si entre todas no explican ni la mitad de la cifra es efecto mezcla (por ejemplo, el ticket promedio cae porque se vendió menos lo caro, aunque ninguna bajó su precio): se aclara y se listan las que más cambiaron sus ingresos. Sin visitas del período anterior, se listan las que más movieron los ingresos. Los avisos "📦 bajaron por quiebre de stock" y "🚚 bajaron sin stock para vender, pero hay en Fulfy" ahora nombran sus publicaciones (hasta 5, mayor caída primero, "y N más"), cada una con su caída y el stock de hoy (Full o ML y Fulfy).
NUEVO
Rendimientos: publicaciones que gastan en Ads sin vender (20-oct-2026)
Antes la tabla salía solo de las órdenes y una publicación con gasto en Ads y cero ventas en el período no aparecía. Ahora se suman al final (sin ranking, facturación $0, mayor gasto primero), con un aviso arriba de la tabla que las cuenta y filtra al hacer clic. Etiqueta Gasta sin vender: se mide en plata contra lo que deja una venta al precio de hoy antes de Ads (comisión, envío y costo Fulfy estimados; sin costo Fulfy, 30% del precio). Rojo si ya gastó eso, o tiene 30+ clics sin compra, o a ese precio la venta no deja nada; ámbar desde la mitad; gris "Sin ventas aún" con menos. El texto dice si el problema parece el anuncio (CTR bajo) o la ficha/precio (clics sin compra). En la vista por SKU, si otra publicación del SKU vendió, el gasto se suma a ese SKU. Los promedios de CTR, CVR Ads, ACOS e Inversión Ads pasan a incluir ese gasto. Ads sin ventas (las que venden orgánico pero nada por Ads) usa el mismo criterio por plata, y también Sin ventas en Publicidad (contra el 30% del precio).
NUEVO
Inicio: ❓ Preguntas sin responder (20-oct-2026)
En Qué hacer hoy, junto a Reclamos y mensajes, una tarjeta con las preguntas de compradores de los últimos 3 días que siguen sin respuesta: la más vieja primero, hace cuánto llegó (ámbar desde 6 h, rojo desde 24 h), la publicación (clic = abre en Mercado Libre) y el texto de la pregunta. ↗ Responder lleva a la página de preguntas del vendedor en ML. La ven todos los roles. Se actualiza cada 2 minutos.
FIX
Inicio: los botones de Promociones urgentes dejaban de andar (20-oct-2026)
Después de aplicar una promo desde Inicio, el resto de los botones Entrar no hacía nada (o podía abrir la confirmación de otra publicación): al actualizar, se redibujaba el panel Promociones oculto y los botones de Inicio quedaban apuntando a la lista vieja. Ahora se redibuja Inicio con el plan nuevo (sin volver a pedir costos a Fulfy) y la publicación aplicada sale de la lista.
NUEVO
Relámpago y oferta del día solo en las 2 publicaciones del SKU (20-oct-2026)
En Inicio y en el panel Promociones, el relámpago y la oferta del día se recomiendan solo en las 2 publicaciones que exponemos de cada SKU (líder y segunda), para concentrar exposición y ventas. Las de precio lleno ya no los recibían; ahora tampoco una 3ª publicación que lleva promo solo por tener stock en Full: queda con su promo principal y el relámpago aparece con el motivo "oferta corta solo en las 2 publicaciones que exponemos del SKU". En Inicio, los nombres abren la publicación en Mercado Libre y una campaña ya no se repite entre "Sin promo" y "Relámpago".
NUEVO
Inicio: Promociones urgentes = publicaciones sin promo para entrar (20-oct-2026)
La tarjeta 🏷️ Promociones urgentes muestra solo publicaciones que hoy no tienen ninguna promo activa ni programada y para las que el plan propone Entrar ya: pasan los mismos filtros del panel Promociones (2 publicaciones con promo por SKU, stock, margen, tope, ticket mínimo). Primero las de 🚨 Faltan promo (Full, sobrestock…), después el resto. No aparecen las de poner en cola (arrancan más adelante), Meli+, las que van a precio lleno a propósito, las pausadas ni las sin stock. Debajo, los relámpago y oferta del día para entrar ya. El indicador 🚨 Faltan promo sigue igual a la pestaña del panel.
NUEVO
Promociones más simple (15-oct-2026)
Pestañas por qué hacer: 🚨 Faltan promo · 🔁 Ajustar (ya tienen promo y hay que cambiarla o salir) · 🎯 Campañas ML (relámpago, del día y eventos ⭐ PREMIUM juntos) · 📋 Todo. El menú de la barra es la situación de cada publicación, la misma de ⚙ Config: Full, Sobrestock, Dropshipping, Sin costo, Poco stock, Normal e Inactivas (sin stock o pausadas). Cada producto lleva una sola etiqueta de situación más los días de stock (con 🛑 o ⚠ si rompe stock en Full); los productos arrancan cerrados y se abren con un clic. Se quitaron las tarjetas de arriba (Faltan promo, Hacer hoy, Para salir, Cupones), "Cómo se decide" y el botón de campañas por publicación: las campañas y el calendario siguen en + detalle. Meli+ se muestra en todas las publicaciones donde ML lo permite: en las que más venden (top 20, configurable) va activo con precio y entra en Aplicar; en el resto aparece calculado (promo + 5 pts) pero desactivado: en la confirmación hay una casilla Meli+ (marcada de entrada solo en las que más venden) y esas nunca entran en Aplicar. En ⚙ Config, "siempre con promo" es una casilla por situación (Full, Sobrestock, Dropshipping, Sin costo) y decide 🚨 Faltan promo; el valor original se ve al pasar el mouse.
NUEVO
Promociones: pestaña ⚙ Config (15-oct-2026)
Los valores con los que se arma el plan se ven y se editan en la pestaña ⚙ Config, solo para Admin y Dev, en 3 tarjetas: Descuentos (2 niveles, Normal 30% y Alto 35%, y cuánto lleva cada situación: un nivel o un % propio; si cambiás el nivel cambian todas las que lo usan), Situaciones (cuándo un producto es Full por romper stock, poco stock, sobrestock, estrella, dropshipping o remate) y Límites (margen mínimo y objetivo, piso, precio mínimo, redondeo). Lo propio de Mercado Libre (revisiones, duración y mínimo del individual, relámpago, Meli+, paso fino, Ads/u y las palabras de los eventos ⭐ PREMIUM) va en Avanzado, plegado. Todo es editable; los cortes de dropshipping y el margen objetivo son copias propias de Promociones (Importaciones y Márgenes no cambian). Se guardan por tienda; al guardar se recalcula el plan sin volver a pedir datos a ML ni a Fulfy, y lo usan todos (también el operador y la tarjeta de Inicio). En ámbar, lo que no está en el original; Volver a los valores originales los restaura.
NUEVO
Promociones: pestañas ⚡ Relámpago y del día y ⭐ PREMIUM (14-oct-2026)
⚡ Hacer hoy se reemplazó (repetía casi todo Faltan promo; las acciones de salir quedan en Todo). ⚡ Relámpago y del día: todas las invitaciones a relámpago y oferta del día, también las de los próximos días, con precio, descuento y margen según las reglas de siempre (tope +5, principal +5, nunca salir): para entrar o poner en cola, las que no convienen con el motivo y las ya programadas. ⭐ PREMIUM: los eventos de ML (Hot Sale, Black Friday, Cyber, 10:10, liquidación post evento…), con el cálculo de cada publicación aunque arranquen después de la revisión: poner en cola si conviene (margen, tope, ticket mínimo, líder/segunda, stock) o el motivo si no. Aplicar actual en estas pestañas manda lo que conviene; en Todo no las incluye. En Inicio, el botón pasa a Relámpago y del día.
MEJORA
Promociones: menos filtros (14-oct-2026)
Quedan 3 pestañas: ⚡ Hacer hoy · 🚨 Faltan promo · 📋 Todo (se quitaron En orden y Sin promo: se ven en Todo y cada producto ya muestra todas sus publicaciones). El menú queda en Todo · ⚡FULL · 📦 Sobrestock bodega · ⛔ Sin stock · ⏸ Pausadas en ML (se quitaron Resto y Activas en ML).
MEJORA
Promociones: "+ detalle" con campañas combinadas (14-oct-2026)
El detalle es más corto: arriba el calendario del producto; después una línea por publicación (…1234, líder/segunda/precio lleno, ventas, visitas, precio y margen de hoy); y abajo cada campaña de ML una sola vez, con cada publicación adentro mostrando MCO · descuento · margen (● activa, verde = va en el plan, rojo = salir, gris = sin uso; el precio y el motivo al pasar el mouse) y su botón Salir o Entrar igual. Antes se repetía la misma campaña en cada publicación.
MEJORA
Promociones: la segunda publicación del producto va pegada a la líder y puede tomar la posta (14-oct-2026)
En un producto con varias publicaciones, las dos con promo van coordinadas. La líder (la que más vende) lleva el descuento más alto y la segunda entre 0 y 3 puntos menos (antes 5). Cuando el precio lo elegimos nosotros, va 1 punto debajo, o 2 o 3 si hace falta para el margen. Si nunca supera a la líder, la campaña queda bien. O bien, con Meli+: la segunda va 5 puntos debajo y el Meli+ queda al mismo descuento que la líder (solo publicaciones del top de ventas, con margen y con la principal todavía sin activar). Pasar la posta: si la líder baja en ventas y visitas frente al período anterior y la segunda sube sin bajar en nada, la segunda pasa a ser la líder (lo dice el "por qué" con 🔁).
MEJORA
Promociones: un solo calendario por producto en "+ detalle" (14-oct-2026)
Al abrir + detalle, el plan de todas las publicaciones del producto se ve en un solo calendario arriba de la tabla (cada barra dice de qué publicación es, …1234). La columna de cada publicación queda solo con sus campañas de ML.
MEJORA
Promociones: nombre corto y sin "Qué hacer" (14-oct-2026)
En la cabecera de cada producto el nombre queda en 2 o 3 palabras (el nombre completo aparece al pasar el mouse). Se quitó la columna Qué hacer (el título y la etiqueta de cada fila): la acción se ve en el botón (Entrar, Salir…) y el motivo debajo de la campaña.
MEJORA
Promociones: cabecera del producto más simple (14-oct-2026)
La cabecera de cada producto queda en unidades · nombre · SKU y después las etiquetas. Se quitó la parte que repetía unidades (días de stock en texto, unidades Full sueltas, bodega y ⭐). La etiqueta ⚡FULL lleva la cantidad adentro (⚡FULL 38), también en las filas de cada publicación y en Inicio. Al final va una etiqueta con el stock: N DÍAS (en rojo si es poco o rompió stock), SIN VENTAS o SIN STOCK.
MEJORA
Promociones: se ven todas las publicaciones, también las pausadas o sin stock (14-oct-2026)
El panel ahora muestra también las publicaciones pausadas en Mercado Libre (por falta de stock o pausadas a mano), con la etiqueta ⏸ PAUSADA. No llevan plan de promo ni acciones (tampoco entran en Aplicar actual ni en Faltan promo) hasta que se reactiven. El menú de filtros suma ▶ Activas en ML, ⛔ Sin stock (activas o pausadas) y ⏸ Pausadas en ML; con Mostrar todo y Todo el stock se ve todo. Además, en cualquier pestaña, si un producto aparece se ven todas sus publicaciones con lo que corresponde a cada una (✓ promo activa en orden, entrar, salir o precio lleno), no solo las que cumplen la pestaña. Aplicar actual sigue mandando solo las acciones de la pestaña.
MEJORA
Promociones: Full mínimo 30%, aviso de rotura de stock, sobrestock 35% y dropshipping siempre con promo (14-oct-2026)
Full: la promo va al 30%. Si al 30% el margen queda debajo de 20%, baja de a 1 punto hasta 20% de descuento; si ni así llega, queda sin promo con el aviso. Stock con la venta de 30 días: con menos de 30 días la promo va igual con el aviso ⚠ vamos a romper stock (en la fila, en la confirmación y en Aplicar actual). Con menos de 7 días no se propone promo (🛑 ROMPIÓ STOCK) y las activas quedan como están. Para hacerla igual, en las campañas de la publicación aparece Entrar igual: la confirmación vuelve a avisar que rompimos stock y hay que marcar "Confirmo" (nunca entra en Aplicar actual). Sobrestock en bodega: 35%, bajando si el margen no da 20%. Dropshipping (menos de 5 u. y menos de 10 ventas, sin Full): siempre al 30% sin ninguna otra regla (margen, ticket, líder del SKU, stock); si ML no la invita, descuento individual al 30%. Cuenta en 🚨 Faltan promo y lleva la etiqueta DROPSHIPPING.
MEJORA
Promociones: etiquetas SOBRESTOCK y SIN COSTO FULFY, promo al 29% sin costo, precios en 00 y stock primero (14-oct-2026)
La cabecera de cada producto muestra etiquetas como la de ⚡FULL: 📦 SOBRESTOCK (bodega Fulfy para más de 90 días) y SIN COSTO FULFY. Las publicaciones sin costo en Fulfy ahora tienen plan: promo al 29% por defecto con las mismas prioridades (campaña larga, co-fondeada primero, la líder del SKU con más descuento y las demás 5 puntos menos, ticket mínimo $60.000, tope 30%); si ninguna campaña de ML sirve, descuento individual al 30%. Sin costo no hay margen, así que las promos activas no se sacan y no se sugiere Meli+. Todos los precios que elegimos (DEAL, relámpago, individual, Meli+, también el sugerido de ML) terminan en 00 (ej. $50.000 o $50.100, nunca $50.032); los de precio fijo de ML (co-fondeadas) van tal cual. La cabecera del producto arranca con el stock total.
MEJORA
Promociones: la ventana se cierra sola al aplicar con éxito (13-oct-2026)
Cuando Mercado Libre acepta la promo, la ventana de confirmación se cierra sola y aparece un aviso ("✓ Mercado Libre aceptó…"), en Inicio y en Promociones. En Aplicar actual se cierra sola solo si se aceptaron todas. Si alguna falló o se detuvo el envío, queda abierta con el ✓/✕ de cada una. Si ML rechaza, la ventana sigue abierta con su mensaje.
MEJORA
Inicio: botón para aplicar la promo desde Qué hacer hoy (13-oct-2026)
En la tarjeta Promociones urgentes de Inicio, cada fila (faltan promo y relámpago u oferta del día) tiene el mismo botón que el panel Promociones: Entrar, Poner en cola o Meli+. Abre la misma confirmación con precio, descuento, margen y avisos (con precio editable donde lo elige el vendedor), y al aplicar queda "✓ Aplicado". No vuelve a pedir costos a Fulfy.
MEJORA
Promociones: campañas en desplegable, sin columna Cuándo (13-oct-2026)
Las campañas de ML de cada publicación quedan ocultas detrás del botón ▸ Campañas (N · X activas), debajo del título de la publicación. Al abrirlo, la lista aparece arriba de todo en la fila, antes de las acciones. Se quita la columna Cuándo: lo que va en cola ya dice "arranca dd/mm" en el por qué. El menú de stock (Todo el stock / FULL / Sobrestock / Resto) queda del tamaño de los botones; antes se estiraba a todo el ancho.
MEJORA
Promociones: una fila por publicación y ofertas del día con sobrestock o caída de ventas (13-oct-2026)
La vista pasa a una fila por publicación, con un borde marcado entre una y otra. A la izquierda va la publicación (foto, título, MCO, Full o precio lleno). A la derecha, sus acciones en líneas compactas: qué hacer · campaña y por qué · precio · margen · cuándo · botón. Abajo, en la misma fila, todas sus campañas de ML. La oferta del día se recomienda aunque no baje más que la oferta principal. Si el producto tiene sobrestock en bodega o sus ventas cayeron 20% o más contra el período anterior, también se recomienda por encima del tope de descuento (siempre con margen mínimo y ticket mínimo); el motivo aparece en "por qué".
MEJORA
Promociones: relámpago y oferta del día solo para entrar (13-oct-2026)
El plan ya no recomienda salir de un relámpago ni de una oferta del día: las activas quedan como están y cuentan como oferta corta. Solo se recomienda entrar, y esas recomendaciones aparecen en Hacer hoy del panel y en Inicio → Qué hacer hoy, en la tarjeta Promociones urgentes ("⚡ Relámpago y oferta del día para entrar"). Corregido: ML manda el precio mínimo del relámpago pero no el máximo, y por eso nunca se calculaba su precio ("sin precio para calcular el margen"). Ahora el techo es el precio original y se propone principal +5 puntos bajando hasta +1, con margen mínimo y tope de cortas.
MEJORA
Promociones: una sola vista, más simple (13-oct-2026)
Se juntan Simple y Avanzada en una sola vista (sin selector). Debajo de cada publicación aparecen todas sus campañas de ML en una línea compacta (● = activa; verde = la usa el plan, rojo = salir, gris = no se usa; al pasar el mouse, precio, fechas y motivo). Cada producto tiene un botón + detalle que abre lo que antes estaba en Avanzada, con menos columnas: Publicación · Ventas y stock · Precio y margen de hoy · Plan (línea de tiempo) con la lista completa de campañas a la vista y Salir manual en las activas. Se quitó la columna "Por qué" de Avanzada. El filtro de stock (Todo / FULL / Sobrestock / Resto) pasa a un menú desplegable al lado de las pestañas, así queda una sola fila de botones.
MEJORA
Inicio: Promociones urgentes en lugar de Mayor caída / Mayor crecimiento (13-oct-2026)
Qué hacer hoy queda más simple: se quitan las tarjetas Mayor caída y Mayor crecimiento (el análisis sigue en la pestaña Resumen). Junto a Stock para reponer aparece 🏷️ Promociones urgentes: los productos con unidades en Full o sobrestock en bodega que no tienen ninguna promo activa ni programada (lo mismo que la pestaña 🚨 Faltan promo de Promociones), con lo que propone el plan (entrar a qué campaña y con qué descuento). Botones para ir a Faltan promo y a Hacer hoy. El indicador "Mayor caída" pasa a ser 🚨 Faltan promo. Usa los mismos datos que el panel Promociones (sin llamadas extra a Fulfy) y si se abre Promociones enseguida, no vuelve a cargar todo.
MEJORA
Promociones: Aplicar actual y pestaña Mostrar todo (13-oct-2026)
El botón ⚡ Aplicar todo pasa a llamarse ⚡ Aplicar actual y manda solo las acciones pendientes de lo que se ve en pantalla: la pestaña elegida, el filtro de stock (Full, sobrestock…) y el buscador. Nueva pestaña 📋 Mostrar todo en la vista simple con todos los productos; con Todo el stock y sin buscar, Aplicar actual manda todo lo pendiente (lo que antes hacía Aplicar todo). La revisión muestra qué pestaña y filtro se están aplicando.
MEJORA
Promociones: vista simple más limpia y etiqueta FULL (13-oct-2026)
La vista Simple tiene 4 pestañas: 🚨 Faltan promo, ⚡ Hacer hoy (entrar, en cola, Meli+ y salir juntos), En orden y Sin promo. Las pestañas de cada acción siguen en Avanzada. La tabla pasa de 9 a 6 columnas: el descuento va al lado del precio, y el cuándo y el por qué van debajo de "Qué hacer". La explicación de reglas queda plegada en "ℹ Cómo se decide". El stock Full se marca en todo el panel con una etiqueta verde con letras blancas ⚡FULL y las unidades en verde. Los productos con unidades en Full llevan además un borde verde en su fila.
FIX
Promociones: se ven todas las publicaciones y "falta costo" ya no manda a salir (12-oct-2026)
Las publicaciones a precio lleno (las que no llevan la promo porque otra del mismo SKU la lleva) ya no se ocultan: aparecen en gris dentro de su producto, en las dos vistas, con "💲 Precio lleno" y en qué publicación va la promo. El aviso en rojo "sacar la oferta" queda solo para las que todavía tienen una oferta activa. Si el SKU no tiene costo en Fulfy y no se puede calcular el margen, el panel ya no recomienda salir de las promos activas: muestra "⚠ Falta costo", las deja como están y la publicación aparece en la pestaña Todo. Las campañas sin precio (por ejemplo, cupones) ya no se marcan como "sin costo en Fulfy" cuando el costo sí está cargado.
FIX
Inicio adaptado a celular, tablet y laptop (08-oct-2026)
En Qué hacer hoy las tarjetas Mayor caída, Mayor crecimiento y Stock para reponer van de a 3 en pantalla ancha. Si no entran, la que sobra baja a otra fila a todo el ancho, y en celular van una debajo de otra. En celular la página ya no se sale de la pantalla: los títulos largos se cortan con "…" (esto mejora todos los paneles) y las tarjetas no se estiran de alto. En Reclamos y mensajes, si la tarjeta es angosta, el título baja a su propia línea.
MEJORA
Administración: borrar tienda y botones de conexión más claros (08-oct-2026)
Borrar reemplaza a Desactivar. Un cartel explica qué pasa y hay que escribir el nombre de la tienda para confirmar. Se desconecta la cuenta de Mercado Libre (se revoca la autorización de Mercametrics), se borran tokens, Fulfy, configuración y todos los datos de la tienda sin dejar copia, y desaparece del selector para todos. Lo que está en Mercado Libre no se toca. No se puede borrar la última tienda. Los botones pasan a llamarse Conectar con login ML (abre Mercado Libre y carga los tokens solo) y Pegar tokens a mano (la alternativa manual).
MEJORA
Períodos "Últimos N días" = N días completos, sin hoy (08-oct-2026)
7, 15 y 30 días toman días cerrados, de hace N días hasta ayer. Hoy queda afuera porque todavía no terminó; antes eran N días más hoy a medias. Hoy, los meses y los rangos personalizados no cambian. El Dashboard muestra las fechas del período en la etiqueta. También cambian el ritmo de 15 días de Inventario y los 30 días de Promociones, que ahora son días completos.
FIX
Rentabilidad y Rendimientos: un día de más al final del rango (08-oct-2026)
Con el navegador en hora de Colombia, la fecha final se corría un día hacia adelante en todos los períodos. Ahora toman exactamente los días elegidos.
MEJORA
Costos fijos prorrateados por día del período (08-oct-2026)
En el Dashboard (y en el IA Asistente) los costos Mensual se reparten por día: un mes completo suma el monto exacto, 10 días de octubre suman 10/31. Los rangos que cruzan meses usan los días de cada mes. Los Anual se reparten por los días del año; Único y Por envío Flex siguen igual.
NUEVO
Multi-tienda: varias cuentas de Mercado Libre en la misma app (06-oct-2026)
Selector de Tienda arriba de Período. Cada tienda tiene su cuenta de ML, su Fulfy (opcional) y sus propios datos: costos fijos, COGS, importaciones, publicidad guardada, tendencias, promociones y borradores. Usuarios, infografías y TRM son compartidos. Cambiar de tienda recarga el panel, así nunca se mezclan datos. Una tienda sin Fulfy se muestra sin costos. La cuenta de siempre quedó como la tienda principal.
NUEVO
Panel Administración: Tiendas y Usuarios (06-oct-2026)
En Config (solo Admin/Dev) junta lo que antes era Conectar ML y Usuarios. Permite crear tiendas (nombre, país y moneda, API key de Fulfy), renombrarlas, cambiar Fulfy, conectar la cuenta de ML con login o pegando tokens, y ver el detalle de conexión (usuario ML, token, cuentas de Ads). Una cuenta de ML no puede estar en dos tiendas.
NUEVO
Dashboard: aviso "Ventas que se fueron" (06-oct-2026)
Muestra las ventas canceladas y lo devuelto en reembolsos parciales del período; los reclamos abiertos aparecen como "en riesgo". El costo de devoluciones de Facturación ML es solo informativo y no resta en la utilidad.
MEJORA
Limpieza: menos llamadas y carga compartida (06-oct-2026)
El catálogo de Fulfy se lee una sola vez y lo comparten Dashboard, Resumen, Envíos Full y Rentabilidad. Antes el Dashboard hacía una llamada por SKU. Las órdenes del mismo período también se reutilizan entre paneles y los Ads por publicación salen en una sola llamada. Se quitaron funciones y archivos sin uso. Los números no cambian. Promociones pasó a la sección Mercado Libre del menú.
NUEVO
IA Asistente con datos reales (01-oct-2026)
El asistente consulta los datos de la app para cualquier período: ventas (y comparación), órdenes, reclamos y mensajes, stock. Admin/Dev además ven rentabilidad, rentabilidad por producto y publicidad. Usa los mismos cálculos que los paneles, así da los mismos números. Explica qué hacer en cada caso (mensajes, reclamos, mediaciones, stock, margen, Ads).
NUEVO
Infografías IA (01-oct-2026)
Panel debajo de IA Asistente (solo Admin/Dev): genera imágenes de producto a partir de la foto, ejemplos de estilo y textos. Entrega la versión lista para ML (1200×1200) e historial. Límite de 30 imágenes por día.
NUEVO
Inicio: Reclamos y mensajes (01-oct-2026)
Bloque con los mensajes postventa sin responder, reclamos abiertos y mediaciones, con link a la venta. Consultarlo no marca los mensajes como leídos.
FIX
Seguridad: archivos internos ya no son públicos (01-oct-2026)
El sitio solo sirve la app y la API. Los archivos de datos, configuración y código del servidor dejaron de ser accesibles desde el navegador.
NUEVO
Roles de usuario y panel Inicio (30-sep-2026)
Tres roles: Admin y Dev ven todo y gestionan usuarios. Operador ve Inicio, Inventario, Envíos Full, Órdenes, Calidad, Crear Publicación, IA Asistente (sin costos) y Promociones completo, sin montos de costo ni margen en el resto. El bloqueo se hace en el servidor, no solo ocultando en pantalla. Los paneles nuevos quedan solo para Admin/Dev. Inicio es la pantalla de arranque: KPIs, stock para reponer, productos que bajaron y subieron, reclamos. Admin/Dev tienen además la pestaña Resumen.
QUITADO
Menú reorganizado (30-sep-2026)
Secciones Analítica, Mercado Libre, Postventa, Gestión y Config. Márgenes Pro pasa a llamarse Rentabilidad. Resumen pasa a ser una pestaña de Inicio. Se eliminaron los paneles viejos de Márgenes/Performance, la Rentabilidad anterior y Alertas de Stock (sus alertas viven ahora en Inventario). Los links viejos redirigen al panel nuevo.
MEJORA
Inventario, Envíos Full e Importaciones: criterios de stock (30-sep-2026)
El criterio de alertas cambia en Inventario:
• 🔴 Quiebre: Bogotá + Full + en tránsito alcanza para menos de 40 días, con el ritmo de 15 y 30 días.
• 🟠 Sin stock en Bogotá: 0 en bodega y con ventas en 30 días.
• Selector Activos / Todos.
Envíos Full: urgente con menos de 15 días, opcional entre 15 y 25, objetivo 45 días. Se corrigió que en variantes Full el stock se contaba doble. Importaciones: el ritmo se pondera 50% últimos 20 días, 40% de 20 a 40 y 10% de 40 a 60; cobertura de 100 días.
• 🔴 Quiebre: Bogotá + Full + en tránsito alcanza para menos de 40 días, con el ritmo de 15 y 30 días.
• 🟠 Sin stock en Bogotá: 0 en bodega y con ventas en 30 días.
• Selector Activos / Todos.
Envíos Full: urgente con menos de 15 días, opcional entre 15 y 25, objetivo 45 días. Se corrigió que en variantes Full el stock se contaba doble. Importaciones: el ritmo se pondera 50% últimos 20 días, 40% de 20 a 40 y 10% de 40 a 60; cobertura de 100 días.
NUEVO
Rendimientos: Ads y margen por publicación (30-sep-2026)
Columnas Costo Ads, ACOS y Margen por unidad. Accionables nuevos: "Ads sin ventas", "ACOS alto", "Bajar puja o pausar Ads". Avisos de margen aparte: "Pierde plata" (<0), "Margen bajo" (<20%), "Revisar margen" (20–30%), "Ads se come el margen", "ACOS sobre equilibrio".
NUEVO
Costos fijos: por envío Flex y en dólares (30-sep-2026)
Frecuencia Por envío Flex: el monto se multiplica por los envíos Flex del período. Moneda USD: se pasa a pesos con la TRM oficial del día; si no hay TRM, se avisa y no se suma.
v3.1
Importaciones: carga masiva de pedidos a China desde Excel/CSV
Julio 2026
NUEVO
Promociones: plan de campañas por publicación entre revisiones (1 y 15 de cada mes) (01-oct-2026)
Panel nuevo en Analítica (solo Admin/Dev). Botones para aplicar en Mercado Libre (entrar, poner en cola, activar Meli+, salir) con confirmación que muestra precio, descuento, margen y lo que se envía; si ML rechaza, se ve su mensaje, sin reintentos; historial en el server. Botones habilitados para todas las publicaciones (el modo prueba con MCO2179583773 terminó). Botón ⚡ Aplicar todo en la vista simple: abre una revisión con todas las acciones pendientes (precio, descuento, margen y avisos), todas marcadas para desmarcar las dudosas; hay que tildar "Revisé todas" para enviar. Se mandan de a una (primero salir, después entrar/cola y al final Meli+), sin reintentos; si ML rechaza una se sigue con las demás y al final se ve ✓/✕ con el mensaje de ML; se puede detener a mitad de camino. Selector Simple / Avanzada: la simple (por defecto) es la lista de lo que hay que hacer hoy, una fila por acción (entrar, poner en cola, activar Meli+, salir) con campaña, precio, descuento, margen y fecha; la avanzada es el detalle por producto que sigue. Una fila por publicación con ventas (▲▼ vs período anterior), stock y días de stock (como Inventario), precio y margen de hoy, y el plan en una línea de tiempo hasta la revisión siguiente. Las campañas se revisan el 1 y el 15 de cada mes: se decide ahora lo que arranca antes de la próxima revisión o cierra inscripción antes, y lo que arranca más adelante va en cola (aceptar ahora, queda programado). Base = campaña de ML de ≥ 15 días activa hasta la próxima revisión (co-fondeada primero, después descuento dentro de 20–35%, más días y mejor margen); Meli+ (solo en las 20 publicaciones que más venden en el período, entre las que tienen stock suficiente, para darles tracción) con campañas DEAL de ML, sin crear descuentos individuales: si la principal es DEAL, en la misma campaña (precio Meli+ 5% más abajo); si no, otra DEAL de ML en paralelo con general = principal −4% y Meli+ = principal +1%. Detecta también las promos propias (descuento individual y otras que ML no lista como campaña), consultando cada publicación activa: se muestran como "Descuento individual (propio)" con su precio Meli+, siguen las mismas reglas y tienen botón Salir; si ya hay un precio Meli+ activo, no se sugiere otro. Ticket mínimo 0.000 en todas las promos (si el descuento lo pasa, el precio queda justo en 0.000; con Meli+, el Meli+ en 0.000 y el general 5 puntos arriba). Columna Por qué en las dos vistas con el motivo de cada recomendación, salvo remate (más de 30 u. y stock para más de 90 días o sin ventas: sin piso y margen ≥ 0), general = base −4% y Meli+ = base +1% (ML pide Meli+ 5% más abajo; si el margen Meli+ queda ≥ 30%, base / base +5%), y sin base el individual hace de base con 20% / 25%; picos = campañas cortas (relámpago, oferta del día, Hot Sale…) solo si bajan más que la base. Topes de descuento: stock normal 35% (relámpago y co-fondeadas 40%), poco stock (menos de 25 días; producto estrella —SKU en el 80% de la facturación, como Rendimientos— con más de 30 u.: menos de 15 días) 15% sin picos, sin stock nada. Margen con promo ≥ 20%. Publicaciones que comparten SKU: solo 1 lleva promo (la que más vende en el período; sin ventas, la de más visitas o visitas en alza) y una 2ª si vende al menos la mitad que la 1ª; las demás quedan a precio lleno para que la promo se vea como oferta (salir de sus campañas / no entrar). Precios que elige el vendedor (DEAL, individual, Meli+) redondeados a 000 o 500; en la confirmación se pueden editar precio y % (y el Meli+) con el margen recalculado y avisos (ticket mínimo, rango de ML, 5 puntos del Meli+, redondeo). Los productos con promos activas y nada que hacer siguen a la vista como "✓ Todo bien" (pestaña En orden). En la vista simple los productos son desplegables (arrancan cerrados, con un resumen de acciones en la cabecera; botón Abrir/Cerrar todo). En la vista simple cada producto lleva su cabecera (nombre, SKU, stock y Full), aunque tenga una sola publicación. Cada producto (el conjunto de SKU de las variantes de una publicación) es su propio grupo; una publicación combo que junta varios productos compite en cada uno, sin pegarlos en un solo grupo. Por SKU se muestran como máximo las 2 publicaciones que llevan la promo; las de precio lleno quedan ocultas salvo que tengan una oferta activa (aparecen en rojo para sacarla y desaparecen al salir). Las dos vistas agrupan por SKU (la simple, con una cabecera con stock, días y qué publicaciones tienen Full) y cada publicación muestra su stock Full ("Full N u." o "Sin Full"). La vista avanzada agrupa por SKU (cabecera con stock compartido y las publicaciones adentro; las de precio lleno sin gráfico). En campañas donde el precio lo elige el vendedor (DEAL) se propone el mayor descuento de la banda que deje margen ≥ 30% (si no, el menor que deje ≥ 20%), dentro del rango de ML, en lugar del sugerido por ML. La columna Ventas pasa a mostrar las unidades de cada publicación (y las del SKU abajo) y sus visitas. Lo activo que queda fuera del plan pasa a Para revisar con el motivo. Pestañas Con plan, Para revisar, Sin acción; la lista ordena lo más próximo primero. Margen = neto con los costos por unidad del período (los de Rentabilidad); Ads por unidad siempre de los últimos 30 días (gasto ÷ unidades, sin importar la barra) y, con menos de 5 u. vendidas, el % de Ads promedio de la tienda; est. = sin ventas en el período, con costo Fulfy. KPIs: campañas vigentes y del ciclo, con plan, Meli+ a activar, para revisar y cupones del período desde Mercado Pago (lo que puso ML y el cargo por cupón que paga el vendedor, hoy no restado en los márgenes).
NUEVO
Publicidad: datos en vivo desde la API de ML Ads (30-sep-2026)
El panel Publicidad deja la carga manual de reportes .xlsx y lee la API de Product Ads con la barra global de período (máximo 90 días atrás, límite de ML). KPIs de resultado, tráfico y conversión con variación contra el período anterior del mismo largo, más Publicidad de Seguidores aparte. Campañas real vs. objetivo (ACOS y ROAS objetivo, presupuesto y uso), evolución diaria de toda la cuenta o por campaña y tabla de todos los anuncios con buscador, filtros, orden por columna y señales (Sin ventas, ACOS sobre objetivo, Escalar). Desplegable Campaña (o clic en la fila de la tabla): KPIs con objetivo, presupuesto y uso, evolución diaria con línea de ACOS objetivo, top 10 anuncios por inversión y tabla filtrada de esa campaña; en Toda la cuenta, gráfico de reparto por campaña con ACOS real vs. objetivo. Montos sin IVA, tal cual ML. Comparar / Tendencia sigue con jul/ago de los reportes y suma solo cada mes cerrado desde la API.
MEJORA
Dashboard: Publicidad ahora va con IVA (30-sep-2026)
La tarjeta Publicidad con IVA pasa a ser la tarjeta Publicidad y entra en la utilidad, en la franja Rentabilidad Neta Real y en la Distribución de los ingresos. Desglose: Ads sin IVA (dato de la API) + Seguidores tal cual Facturación ML + IVA 19% sobre Ads = total Publicidad.
NUEVO
Dashboard: KPI Publicidad con IVA (29-sep-2026)
Nueva tarjeta Publicidad con IVA en la fila Mercado Libre = Ads con IVA (gasto de Product Ads de la API × 1,19: el cost de la API viene sin IVA y la facturación ML de PADS lo cobra con IVA) + Publicidad de Seguidores tal cual Facturación ML (sin sumarle IVA). Muestra el desglose de cada uno. Es solo informativa: la utilidad, la franja Rentabilidad Neta Real y el KPI Publicidad siguen con los datos de la API sin IVA.
QUITADO
Panel Finanzas eliminado · Dashboard reorganizado (29-sep-2026)
Se quitó el panel Finanzas: su resultado (ventas − cargos − impuestos − COGS = utilidad) ya está en la franja Rentabilidad Neta Real del Dashboard con los mismos cálculos. En el Dashboard: la franja Rentabilidad Neta Real pasa arriba de todo; Distribución de los ingresos ordenada de mayor a menor; los KPIs van al final en 3 filas (Ventas · Mercado Libre · Costos propios); Ads + Seguidores se unen en un KPI Publicidad con ambos montos; Unidades vendidas muestra también las órdenes. Se quitaron la tarjeta Desglose de Costos, Información del Período y el KPI de IVA publicidad. Publicidad de Seguidores ahora usa el monto tal cual lo da Facturación ML (antes ÷ 1,19).
MEJORA
Dashboard: Rentabilidad Neta Real en pasos
La franja pasa de Ventas / Total costos / Utilidad / % a un recorrido: Ventas reales − Cargos e inversiones (comisión + envío + Ads) − Impuestos (retención 1%) = Recibí − COGS + gastos fijos = Utilidad neta (con % de margen). Cada paso muestra su % sobre ventas y su composición.
MEJORA
Costos unificados: el mismo número en todos los paneles
Dashboard, Finanzas, Rentabilidad y Márgenes Pro calculan con la misma función (forEachLineaCosto): comisión = sale_fee × unidades; envío = costo real de cada envío (Full + Flex + Drop-off) por fecha de la orden, repartido entre las líneas; retención 1%; Ads × 1.19 (IVA). Antes Dashboard y Finanzas contaban solo envíos Full por fecha de despacho (~$0,9 M menos en 30 días) y Rentabilidad no incluía las publicaciones con Ads sin ventas. Verificado: los 4 paneles dan el mismo revenue, comisión, envío y retención al peso. Si una página del catálogo Fulfy falla, se avisa (sin reintentos ni llamadas extra a Fulfy).
NUEVO
Márgenes Pro (beta)
Panel de prueba que une Márgenes y Rentabilidad: por SKU con desglose por publicación, Revenue − Comisión real (sale_fee × unidades) − Envío real (/shipments/{id}/costs repartido entre las líneas de la orden) − COGS Fulfy − Retención 1% = Contribución; menos Ads ML (con IVA, repartido entre variaciones por revenue) = Margen neto. Cada costo en $ y % del revenue. Filtros Killers ≥30% / Regulares 15–30% / Críticos <15% (por margen neto), Ads sin ventas y Sin costo Fulfy. Totales verificados al peso contra órdenes, envíos y Ads de ML.
FIX
Ads ML vuelve a funcionar · comisión y envío corregidos
Ads: ML dio de baja las rutas legacy de Product Ads; el server usa las vigentes /advertising/MCO/... (nuevo /api/ml/ads-by-item masivo con caché). Comisión: Dashboard y Finanzas sumaban sale_fee sin multiplicar por cantidad (ML lo da por unidad) → subestimaban la comisión en órdenes de varias unidades. Envío en Rentabilidad: leía o.shipping.cost, que la orden no trae → siempre $0; ahora usa el costo real por envío (/api/ml/shipping-by-order).
QUITADO
Márgenes: columnas de stock movidas a Inventario
Se quitaron de la tabla de Márgenes Días Stock, Bogotá, Full ML y Vendidas (también en el desglose por publicación); se mantiene Stock. Solo cambia la vista: los cálculos siguen iguales y esos datos se ven en el panel Inventario. Los KPIs de Márgenes (Bogotá crítico, Con stock Full ML) y el CSV exportado no cambian.
NUEVO
Panel Inventario (Mercado Libre, debajo de Márgenes)
Mismo listado por SKU que Márgenes, enfocado en stock: Bogotá (Fulfy), Full ML, Rotar (no disponible en Full), Stock total, Días stock, Ventas del período, Vendidas históricas, Costo unit. (COGS Fulfy) y Valor (stock total × costo, con % del total). KPIs: valor del inventario (Bogotá/Full), unidades, productos con stock y filtros rápidos Sin stock / Bogotá crítico / Stock sin rotación (>90 días o sin ventas) / Sin costo Fulfy. Desglose por publicación, buscador y exportar CSV. Márgenes e Inventario comparten los datos (getPerfData) con caché de 5 min por período; "↻ Actualizar" fuerza la recarga.
NUEVO
Importar hoja de pedidos a China (pestaña "🚢 Pedidos a China")
Botón "📥 Importar hoja" para subir el Excel/CSV del proveedor (columnas Producto, SKU, Variante, Categoría, Qty, Destino, separador ;). El .xlsx/.xls se lee con XLSX.read + sheet_to_json (mismo patrón que la exportación de Envíos Full); el .csv usa un parser propio con soporte de comillas y detección automática de delimitador (; vs ,). La columna "Variante" se separa en filas individuales por el patrón "<cantidad> <etiqueta>" (ej. "170 black, 50 khaki, 80 beige" → 3 filas); si un segmento no matchea el patrón o la suma no coincide con la cantidad de la hoja, la fila queda marcada con ⚠️ para revisión manual sin bloquear. Las filas "TOTAL" o sin producto se ignoran. Antes de guardar se abre un preview 100% editable (cantidad, destino MELI/Shopify/Otro, SKU/familia con el mismo datalist de autocompletado del formulario manual) con sugerencia automática de SKU/familia solo para destino "meli" sin SKU en la hoja, comparando el nombre del producto contra los títulos ya calculados en la pestaña Estimación (marcada siempre como "≈ sugerido, verificar", nunca como dato confirmado). Al confirmar, cada fila incluida genera un pedido independiente vía POST /api/import-orders (mismo skuPrefix para variantes de una misma familia) con fecha de pedido de hoy y fecha estimada de llegada a 90 días (IMP_LEAD_TIME_DIAS), y notas trazando variante/destino/categoría de origen.
QUITADO
Performance: columnas Visitas y Conv% eliminadas
Performance: se quitaron las columnas Visitas y Conv% y la carga de visitas por publicación desde la API de ML (una llamada por item) para acelerar el panel.
MEJORA
Performance: carga en paralelo
La config y la paginación del stock Fulfy corren en paralelo con la carga de ML; los lotes de items-detail van de a 5 simultáneos; precios, Full ML y Ads por item se piden al mismo tiempo. Se dejaron de pedir precios y Full para las variaciones virtuales VAR_ (no son item_id de ML; antes generaban llamadas con item_id=undefined). El fetch de Ads por item se salta cuando la API de campañas de ML Ads responde error o no hay campañas.
NUEVO
Performance: KPIs como filtros
Click en Sin stock total, Bogotá crítico o Precio bajo mínimo muestra solo esos productos, ignorando el buscador, ordenados por urgencia: sin stock → más vendidos del período primero; Bogotá crítico → menos días de stock en Bogotá primero; precio bajo mínimo → mayor brecha contra el mínimo primero. Otro click en el mismo KPI o "✕ Quitar filtro" vuelve a la vista completa. Ordenar por una columna con el filtro activo reordena dentro del subconjunto; escribir en el buscador sale del filtro. El filtro se mantiene al cambiar el período. De paso, ordenar por columna ya no descarta la búsqueda activa.
MEJORA
Performance: columnas renombradas y reordenadas
"Total" pasa a llamarse Stock y "Total ventas" pasa a Vendidas. Stock y Días Stock se movieron entre Producto y SKU, tanto en la fila del producto como en el desglose por publicación.
MEJORA
Período unificado en la barra superior
Performance y Finanzas dejan de tener su propio selector de fechas y usan la barra global "Período: Hoy / 7 / 15 / 30 días / Personalizado" (nuevo helper periodDates(), mismo criterio que dateRange() del server). Performance suma la opción "Hoy" (comparada contra ayer) y Días Stock se calcula con ese período. Pareto, Performance y Finanzas se recargan al cambiar el período (antes Pareto no lo hacía). La barra se oculta en Envíos Full y Alertas de stock (usan ventanas fijas de 15/30/45 días propias del cálculo) y en Changelog. Calidad y Publicidad mantienen sus controles propios (60 días / histórico y por mes).
MEJORA
Responsive en celular
El selector de período pasa al sidebar, debajo del logo. En pantallas ≤ 768px: las grillas de KPIs y resúmenes de 3-4 columnas pasan a 2; los formularios pasan a 1 columna; las acciones del topbar hacen wrap; se deja espacio arriba para el botón ☰; el waterfall de Finanzas muestra nombre + monto arriba y la barra abajo; el detalle de reclamos de Calidad y las métricas por familia de Importaciones pasan a 3 por fila. Fix: si el sidebar quedó colapsado desde desktop, en celular el menú no se podía abrir. Los números grandes de KPIs y resúmenes (Dashboard, Rentabilidad, Finanzas, Performance) escalan con el ancho de pantalla y, si igual no entran, cortan dentro de su caja en vez de desbordar.
MEJORA
Performance: sale Rotar, entra Precio promedio
Se ocultó la columna Rotar de la tabla para limpiar la vista (el dato sigue en el CSV exportado). Nueva columna Precio prom. después de Revenue: revenue del período ÷ unidades vendidas, con delta ▲▼ y valor del período anterior, por SKU y por publicación. Ordenable y también incluida en el CSV.
MEJORA
Performance: PRECIO y Mínimo en una sola columna
La columna PRECIO muestra arriba el precio publicado en ML (con promos aplicadas) y abajo "mín: $X", el precio mínimo para mantener el margen objetivo del 30% (COGS Fulfy + flete + empaque + comisión ML + IVA + cargo fijo). Si el publicado está por debajo del mínimo, ambos se ven en rojo con ⚠. En el desglose por publicación se mantiene el precio de cada una. Se quitó la columna separada Mínimo.
NUEVO
Performance: columna Margen
Nueva columna Margen después de PRECIO: margen real del período seleccionado, calculado sobre cada venta al precio efectivamente cobrado (unit_price de la orden), con los mismos costos que el precio mínimo (calcMargenML): COGS Fulfy + flete $8.000 + empaque $1.500 + comisión ML (13% clásica / 16% premium) + IVA de la comisión + cargo fijo ML por tramo. No descuenta Ads. Verde ≥ 30% (objetivo), ámbar entre 0 y 30%, rojo si pierde. Muestra la utilidad promedio por unidad ($) y el % sobre lo facturado; el tooltip trae la utilidad total del período. Solo aparece en productos/publicaciones con ventas en el período (sin ventas → "—"). Ordenable por %. El CSV suma Precio, Margen $ y Margen %.
FIX
Performance: datos propios por variación en el desglose
Las filas de variación ya no heredan datos de la publicación padre: Ventas, Revenue, Precio prom. y Margen usan solo las ventas de esa variación (si no vendió → 0 / "—"; antes mostraba el total de toda la publicación). Full ML por variación usa el stock real por inventory_id (by_variation de /api/ml/item-full-stock) en vez del total del padre; el Full del producto también suma ese dato real y solo reparte proporcional a available_quantity si ML no lo desglosa. En el desglose se quitaron los "—" de Días Stock y Bogotá (son datos del producto, no de cada publicación).
MEJORA
Performance: VISTA Resumida / Completa
El selector COLS (Stock / Histórico / Ventas / Precios / ADS) se reemplazó por VISTA. Resumida: Producto (con su SKU), Stock, Días Stock, Ventas, Revenue, PRECIO y Margen. Completa: suma Bogotá, Full ML, Vendidas, Precio prom. y ADS ML. La vista elegida se recuerda en el navegador (por defecto Resumida). Tour actualizado. En Resumida se oculta la línea "ant:" del período anterior; las flechas ▲▼ con el % de tendencia se mantienen.
MEJORA
Performance: SKU dentro de la columna Producto
Se eliminó la columna separada SKU: ahora el SKU se muestra debajo del nombre del producto, junto a la cantidad de publicaciones ("2 pubs · SKU"), y la columna Producto se angostó (150px mínimo) para dejar más espacio al resto. Click en cualquier punto del bloque nombre / x pubs / SKU copia el SKU al portapapeles sin plegar ni desplegar la fila: el bloque (ajustado al contenido; el nombre siempre en un solo renglón y la columna Producto mide exactamente lo que ocupa el nombre más largo, el resto del ancho queda para las demás columnas) se resalta al pasar el mouse y el aviso "✓ SKU copiado" en verde aparece solo en el SKU (más el toast "SKU … copiado"). Click en el resto de la fila despliega las publicaciones. El buscador sigue encontrando por SKU.
MEJORA
KPIs compactos en todos los paneles
Las cajas de KPI (.kpi) son más chicas: menos padding, valor en 20px (antes 26px), etiqueta y subtítulo más finos. Las grillas de KPIs (.kpi-grid y todos los contenedores *-kpis) pasan a auto-fit con mínimo 160px: entran tantas cajas por fila como quepan, así quedan en 1 renglón (máx. 2). En Performance se quitó la fila-título "Catálogo" que ocupaba un renglón entero. En Rentabilidad las tarjetas superiores bajan de 28px a 22px y también se acomodan en auto-fit.
MEJORA
Performance: orden de KPIs y filtro Full ML
Los KPIs arrancan con Productos, Revenue y Unidades vendidas; después Sin stock, Bogotá crítico, Con stock Full ML y el resto. Con stock Full ML ahora también funciona como filtro (igual que Sin stock / Bogotá crítico / Precio bajo mínimo): trae solo los productos con stock en Full, ordenados de más a menos stock en Full. Unidades vendidas también filtra: muestra solo los productos con ventas en el período, de más a menos unidades vendidas (la caja indica cuántos productos vendieron).
v3.0
Consolidación: cleanup de paneles y guía contextual
Mayo 2026
NUEVO
Panel Finanzas
Resultado financiero del período en formato waterfall: Ventas concretadas → menos comisión ML (sale_fee real por orden) → menos costo de envío real (solo Full, neto del descuento por reputación) → menos publicidad y otros cargos (input manual) → menos impuestos 1% → Recibiste (neto seller) → menos COGS (cruzado por SKU contra Fulfy) → Utilidad neta con margen %. Selector de fechas independiente desde/hasta (default últimos 30 días). 4 summary cards: Ventas / Cargos ML / Recibiste / Margen neto. Aviso amarillo cuando hay SKUs vendidos sin match en el catálogo Fulfy (COGS parcial).
NUEVO
Costo de envío real desde /shipments/{id}/costs
Nuevo endpoint /api/ml/shipping-costs en el server que cruza órdenes pagadas del rango con la API de shipments de ML. Por cada envío fetcha /shipments/{id} + /shipments/{id}/costs en paralelo (batches de 15), filtra por status_history.date_shipped dentro del rango y agrega por logistic_type: Full, Flex y Drop-off. La descripción de la fila "Costo de envío" del panel Finanzas suma solo Full (coincide con "Envío a mi cargo" del reporte ML) y muestra el descuento por reputación aplicado. Ventana de órdenes ampliada 14 días hacia atrás para capturar envíos que despacharon tarde.
MEJORA
Performance: tour guiado y tooltips contextuales
Botón "● Tour" en el topbar abre un overlay de 6 pasos que explica el panel completo: bienvenida, selección de período, búsqueda, KPIs superiores, columnas configurables y exportación. Cada toggle de columna (Stock, Histórico, Ventas, Precios) tiene un ícono ? que muestra al hover un tooltip con título, descripción detallada y un tip extra. Implementado con delegación de eventos sobre document — un solo listener para todos los íconos.
MEJORA
Rentabilidad: COGS desde Fulfy como única fuente
Se retiró el input editable de COGS manual y los indicadores F/M/? por fila. El costo ahora viene exclusivamente del catálogo Fulfy vía SKU. Cuando una publicación no tiene match en Fulfy, la celda muestra el mensaje "Sin costo Fulfy" en rojo en lugar de un input vacío. Las llamadas a /api/cogs se eliminaron de Dashboard, Rentabilidad, Performance y Finanzas — un solo punto de verdad para el costo de producto.
QUITADO
Panel Mis Productos retirado del sidebar
El nav-item de "Mis Productos" ahora está oculto. El panel y su lógica de CRUD se mantienen en el código pero ya no son alcanzables desde la UI. La razón: el flujo de COGS manual que justificaba el panel fue reemplazado por la integración Fulfy (ver entry de Rentabilidad arriba). El endpoint /api/cogs en el server.js sigue intacto.
QUITADO
Panel Métricas eliminado
Se quitó el panel "Métricas" que analizaba un producto individual en el tiempo (visitas/ventas con período comparado, gráfico Chart.js, KPIs con delta). El nav-item, el panel HTML, las funciones loadMetricas, initMetricasProducts, filterMetricasProducts, selectMetricasProduct, getMetricasFilter, onMetricasFilterChange, el wrapper window.nav específico y el loader ensureChartJS se removieron por completo. La funcionalidad estaba poco usada y duplicaba info disponible en Rentabilidad y Performance.
v2.0
Nuevos paneles + integración Fulfy
Abril 2026
NUEVO
Panel Métricas
Análisis de producto individual en el tiempo. Buscador por nombre o SKU, selector de período (7/15/30 días o fechas custom), gráfico de líneas con visitas y ventas diarias del período actual superpuesto con el período anterior en línea punteada. KPIs con delta ▲▼ comparando ambos períodos: revenue, unidades, margen, conversión, ACOS y ROAS. Tabla diaria con visitas, unidades, revenue y conversión.
NUEVO
Panel Performance (Catálogo de productos)
Vista completa del catálogo cruzando Mercado Libre con Fulfy. Columnas: Bogotá (stock Fulfy), Full ML real, Rotar (unidades con not_available en Full), Total, Total ventas históricas, Visitas, Ventas del período + delta vs período anterior, Revenue + delta, Conversión + delta, Precio mínimo calculado y Precio real de ML. Desglose expandible por publicación incluyendo items con una sola publicación. Ordenamiento por cualquier columna. Buscador por nombre, SKU o MCO. Comparación de períodos con valor anterior visible debajo del actual.
NUEVO
Integración Fulfy Stock API
Conexión completa con app.backend.fulfy.co para obtener stock bodega, costo de productos y nombre comercial por SKU. Paginación automática con guard de 50 iteraciones. Manejo de redirects 301 en el proxy del servidor. El stock bodega en Inventario se sincroniza desde Fulfy en lugar de ingreso manual.
MEJORA
COGS desde Fulfy en panel Rentabilidad
El costo de cada producto se obtiene automáticamente desde la API de Fulfy como fuente primaria. El input manual sigue activo como fallback editable. Indicador visual por fila: F (fuente Fulfy, borde cyan), M (manual, borde normal), ? (sin costo, borde rojo). Al editar el input se persiste en db.json y recalcula sin recargar.
MEJORA
Stock Full ML real via API de inventarios
Inventario consulta /inventories/{id}/stock/fulfillment por cada variación para obtener el stock físico real en depósitos Full ML. La versión original usaba available_quantity que mezcla Full y no-Full. Items Full sin variaciones se marcan con ~ en ámbar indicando stock estimado no verificable por API.
MEJORA
Inventario desglosado en 4 columnas
Stock Full ML / Stock Disponible ML / Stock Bodega / Total reemplaza la columna única anterior. Nuevo filtro KPI "Reabastecer Full ML" para items con stock Full menor a 15 días de cobertura. Ordenamiento por columna con click en encabezado. Fila completa clickeable para abrir la publicación en ML.
MEJORA
SKUs en todos los paneles
extractMLSku() busca el SKU en cascada: seller_sku → attributes[SELLER_SKU] → seller_custom_field → variaciones. SKU visible en Publicaciones, Inventario, Rentabilidad y Performance. PATCH masivo aplicado sobre 79 variaciones en ML para cargar seller_custom_field donde faltaba.
MEJORA
Paginación completa de publicaciones
Publicaciones e Inventario traen todos los items activos paginando de a 100. La versión original tenía límite fijo de 100 — con 154 publicaciones activas se perdían 54. Contador "X de Y productos" confirma que se cargaron todos.
MEJORA
Links de publicaciones con URL real
Órdenes, Publicaciones, Inventario y Rentabilidad usan el permalink completo de ML con slug del título. La versión original generaba URLs incompletas tipo /MCO2729149814 en lugar de /MCO-2729149814-morral-tula-impermeable-...
FIX
Panel Órdenes no cargaba con token válido
Variable itemId usada antes de ser declarada en el .map() de loadOrdenes(). El ReferenceError era capturado por el catch que ejecutaba showConnectPrompt(), aparentando un problema de token cuando era un bug de JS.
FIX
Panel Publicaciones pedía conectar ML con token activo
El subtítulo del panel no tenía id="pub-sub". La referencia nula disparaba showConnectPrompt() desde el catch de loadPublicaciones().
FIX
Catches ML diferenciados en todos los paneles
Dashboard, Órdenes, Publicaciones, Stock, Rentabilidad y Reputación distinguen errores de token vs errores de JavaScript. Los errores JS muestran el mensaje real con botón Reintentar en lugar del prompt de conexión genérico.
v1.0
Versión Original — fulfyecom_v16
Base de partida · Abril 2026
Dashboard de archivo único (index.html + server.js) con 10 paneles: Dashboard, Rentabilidad, Órdenes, Publicaciones, Inventario, Mis Productos, Costos Fijos, IA Asistente, Conectar ML y Usuarios. Conectado a Mercado Libre Colombia via API oficial con auto-refresh de token cada 5 horas. Stock mostraba available_quantity sin distinguir Full ML de stock propio. Sin conexión a Fulfy. COGS 100% manual en db.json. Límite de 100 publicaciones por panel. Links de items sin slug. Catch genérico en todos los paneles ML mostraba siempre el prompt de conexión ante cualquier error.
Dashboard
Rentabilidad
Órdenes
Publicaciones
Inventario
Mis Productos
Costos Fijos
IA Asistente
Conectar ML
Usuarios
Rendimientos
Análisis 80/20 por producto · ML Colombia
Cargando análisis...
Cargando...
Cargando...
Cargando Publicidad desde ML…