Cargando datos...
Cargando...
Cargando...
ℹ️ La sugerencia automática se calcula con 45 días de cobertura objetivo. Los valores en la columna "Enviar" son editables — tu edición pisa el cálculo automático y se mantiene mientras no recargues la página. La columna "Fulfy" muestra el stock total del SKU en bodega y, al lado, lo que queda disponible después de restar lo que ya asignaste a otras publicaciones del mismo SKU en esta sesión — si llega a 0 o menos, se resalta en rojo como alerta (no bloquea, es solo un aviso). Las publicaciones con variantes se abren en una fila por variante (↳) con su propia cantidad; el Excel exporta cada variante con su # de Variación, que ML necesita para procesarlas. El "Full ML" se muestra por variante (stock real de cada inventory_id), con la foto de cada variante. Ordená haciendo click en los encabezados Full ML, Fulfy, Vtas y Sugerido (click de nuevo invierte el orden). El sugerido reparte el stock de bodega entre publicaciones del mismo SKU dando prioridad a las de más ventas y dejando una reserva mínima de 3-5 unidades en bodega según el volumen de ventas. La columna "En tránsito" muestra unidades ya enviadas a Full que Mercado Libre está procesando (últimos 15 días) — el sugerido ya las descuenta para no proponer reenviarlas. Las columnas "≈ Rotación" y "≈ Ocupación" son una aproximación propia del puntaje "Desempeño en Full" de ML (no el número exacto que ves en tu cuenta, porque no tenemos historial de stock ni el tamaño físico de cada producto) — cuando la rotación está en zona roja o ámbar, el "Sugerido" ya viene reducido automáticamente para no seguir mandando stock a productos que están rotando mal; podés sobreescribir "Enviar" a mano si querés ignorar esa reducción.
Cargando...
ℹ️ La cobertura se calcula con el promedio entre la venta diaria de los últimos 15 y 30 días. Entra en alerta de Full ML si le quedan menos de 7 días de stock en el centro de distribución de ML, o en alerta de Bogotá si le quedan menos de 10 días en bodega Fulfy.
Cargando...
ℹ️ El ritmo de venta usa una ventana de 90 días con más peso a los días recientes (tramos 15/30/40/60/90 días, pesos decrecientes). El stock actual suma bodega Fulfy (Bogotá) + stock en centro Full ML + stock registrado en bodega Cali (pestaña "🏭 Bodega Cali"). El tiempo de tránsito China→bodega usado es de 90 días (3 meses) como buffer de seguridad. La "fecha sugerida de pedido a China" es la fecha de quiebre estimada menos ese tiempo de tránsito — si ya pasó, el producto queda marcado 🔴 Pedir ya con los días de atraso. La cantidad sugerida a importar cubre el tiempo de tránsito más ~120 días adicionales de cobertura tras la llegada (para no reordenar en ciclos muy cortos) y se reparte entre las polarizaciones (colores/variantes) del mismo SKU base según su participación en las ventas. Los grupos se arman por prefijo de SKU (todo antes del último guion, ej. FULSET4605-AZUL y FULSET4605-ROJO son la misma familia). Si un producto ya tiene un pedido a China registrado (pestaña "Pedidos a China") que llega a tiempo, deja de pedir refuerzo y pasa a 🔵 Ya pedido; la cantidad sugerida ya descuenta lo que está en camino. Si el pedido activo llega DESPUÉS del quiebre estimado, el estado 🔴/🟡 se mantiene (va a haber quiebre de stock igual, con o sin ese pedido) pero se agrega el badge 🚢 Ya pedido... (tarde) para dejar claro que ya hay algo en camino aunque no alcance — la alerta en ese caso es para evaluar reforzar/expedite, no para pedir por primera vez. Los pedidos a China se pueden validar parcial o totalmente registrando lo recibido en la pestaña "🏭 Bodega Cali" (los SKU internos de Cali no coinciden con los de Bogotá/ML, por eso el registro es por familia, no por SKU exacto). La señal de categoría en Mercado Libre (competencia y tendencia) es una aproximación: cada vez que abrís el panel se guarda una medición para poder comparar contra la próxima, ya que ML no expone histórico de categoría. Cada familia también se clasifica por su volumen histórico de ventas (sold_quantity de ML, sumado por familia): con menos de 10 ventas totales Y menos de 5 unidades en bodega propia (Fulfy Bogotá + Cali) se considera ⚪ Dropshipping (queda fuera de las alertas de importación, solo a modo de referencia/auditoría); si tiene 5 o más unidades en bodega propia, o 10 o más ventas históricas, se trata como producto regular aunque venda poco. También se exime si tiene ticket alto: cuando el precio de venta actual de TODAS las publicaciones de la familia supera $250.000, se trata como producto propio aunque venda poco y tenga poco stock (un ticket así de alto explica por sí solo la baja rotación). Con 50 o más ventas históricas se marca 🔥 Alto volumen. Dentro de un mismo estado (🔴/🟡/etc.), el orden prioriza primero alto volumen con ventas en los últimos 15 días, luego alto volumen sin ventas recientes, luego ventas recientes sin ser alto volumen, y por último se desempata por fecha de pedido. ⚠️ Limitación conocida de ML: si una publicación se cerró y se volvió a crear, su contador de ventas históricas se reinicia — no hay forma de evitarlo desde la API.
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.
COLS:
?
?
?
?
?
Cargando datos de performance...
Cargando reclamos...
🔐
Conecta tu cuenta de vendedor
Necesitas un Access Token de ML para ver tus ventas reales, stock, publicidad y reputación.
1
Crea app en ML Developers
2
Obtén tu Access Token
3
Pégalo aquí y listo
Credenciales
Access Token ML
User ID de ML
Refresh Token ML — permite renovación automática cada 6h
🔒 El token se guarda cifrado en el servidor. Nunca se expone al navegador directamente.
📌 La búsqueda pública de mercado funciona sin token. Para datos privados (ventas, stock, ads) necesitas el Access Token.
📌 La búsqueda pública de mercado funciona sin token. Para datos privados (ventas, stock, ads) necesitas el Access Token.
Conexión actual
Cargando...
v3.1
Importaciones: carga masiva de pedidos a China desde Excel/CSV
Julio 2026 · versión actual
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.
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
Concentración de Ventas
Análisis 80/20 por producto · ML Colombia
Cargando análisis...