Operaciones
Cómo evitar quiebres de stock y sobreventa vendiendo en varios canales (Chile)
Guía operacional para pymes chilenas que venden por WooCommerce, Shopify, MercadoLibre y tienda física: cómo evitar sobreventas, quiebres y descuadres de inventario.
La sobreventa multicanal aparece cuando dos canales aceptan pedidos sobre una disponibilidad que todavía no fue actualizada. Su frecuencia depende de tráfico, arquitectura, latencia, reservas y reglas de cada canal; mídela en tu operación en vez de adoptar un porcentaje genérico.
Esta guía aterriza por qué pasa, cómo se evita en serio (no parches), y qué exigir a tu sistema cuando lo evalúas.
Por qué pasa la sobreventa
Cada canal mantiene su propio stock publicado:
- Shopify tiene
inventory_quantitypor SKU/variante. - WooCommerce tiene
_stockpor producto/variación. - MercadoLibre tiene
available_quantitypor publicación. - Tienda física tiene lo que está realmente en la góndola.
Si entre los 4 hay latencia para sincronizar, en esa ventana pueden aceptar ventas simultáneas que suman más unidades que las que tienes.
Ejemplo real: tienes 1 unidad de SKU ABC. Cliente en Shopify la compra a las 14:00:03. Sincronización a MercadoLibre programada cada 5 min. Cliente en MercadoLibre la compra a las 14:00:08. Sincronización corre a las 14:05:00. Resultado: vendiste 2 unidades de algo que tenías 1.
Los 3 pilares para evitar sobreventa
1. Stock real-time con reserva atómica
Reserva atómica significa que cuando un canal acepta una venta, antes de confirmarla bloquea el stock en la base de datos central (no en su propia cache). Si el bloqueo falla porque otro canal lo tomó primero, el cliente ve “agotado”.
Esto requiere que todos los canales pasen por el mismo sistema central — es exactamente lo que hace un ERP. Plugins aislados no resuelven esto porque cada uno tiene su propia idea del stock.
2. Sincronización bidireccional
No basta con que el ERP empuje stock a los canales. Necesitas que los canales devuelvan ventas al ERP en tiempo real (idealmente vía webhook, no polling).
- Shopify: webhooks
orders/paid. - WooCommerce: webhooks o REST API con polling cada 30-60s para baja latencia.
- MercadoLibre: webhooks de notifications API.
Define y monitorea un objetivo de propagación acorde con tu volumen y con los límites de cada API. Los webhooks pueden perderse o repetirse, por lo que también necesitas reintentos, idempotencia y reconciliación.
3. Umbrales de seguridad por canal
Aunque tengas reserva atómica, conviene definir reglas por canal:
- Stock mínimo publicado: si te quedan 2 unidades, no publicar las 2 en todos los canales. Reserva 1 para tienda física, por ejemplo.
- Pausa automática de publicación: cuando el stock llega a 0 en bodega, pausa publicación en todos los canales (no solo bajar
quantitya 0). - Stock dedicado por canal: para SKUs estratégicos, asigna X unidades a un canal específico (típico para campañas).
Cómo se monta bien (arquitectura)
┌─────────────────────┐
│ ERP / Sistema │
│ central de stock │
└──────────┬──────────┘
│
┌──────────────┬───────┴────────┬──────────────┐
▼ ▼ ▼ ▼
┌────────┐ ┌──────────┐ ┌────────────┐ ┌─────────┐
│Shopify │ │WooCommerce│ │MercadoLibre│ │ Tienda │
│ Webhook│ │ Webhook │ │ Webhook │ │ Física │
└────────┘ └──────────┘ └────────────┘ └─────────┘
│ │ │ │
└──────────────┴────────────────┴──────────────┘
Ventas viajan AL ERP (webhook)
Stock viaja DEL ERP (API push)
Reglas no negociables de la arquitectura:
- El ERP es la única fuente de verdad del stock. Si un canal y el ERP discrepan, gana el ERP.
- Las ventas notifican al ERP por webhook, no por polling.
- Las actualizaciones de stock del ERP a los canales son push, no esperando que el canal pregunte.
- Reserva atómica en transacción de base de datos, no por flag.
Errores comunes que vemos en pymes
- Sincronizar cada 15 minutos y rezar. Funciona hasta que no funciona.
- Pegar 2 plugins distintos (uno Shopify ↔ ERP, otro MercadoLibre ↔ ERP) sin coordinar prioridades.
- Dejar el stock de tienda física en planilla aparte. La planilla nunca se actualiza al ritmo de las ventas online.
- No tener proceso para devoluciones. Devolución no incrementa stock automáticamente → terminas vendiendo menos por miedo a que no haya.
- No pausar publicación al llegar a 0. El canal sigue mostrando “1 unidad” hasta el próximo sync.
Checklist técnico antes de salir multicanal
- ERP o sistema central de stock activo y único.
- Webhooks configurados en Shopify, Woo y/o MercadoLibre.
- Reserva atómica en la base de datos del ERP.
- Updates de stock con confirmación de recibo (no fire-and-forget).
- Umbrales mínimos por canal definidos.
- Pausa automática al llegar a 0.
- Devoluciones incrementan stock automáticamente.
- Reportes diarios de discrepancias (ERP vs canal).
- Plan de acción para discrepancias detectadas.
- Pruebas suficientes para cubrir simultaneidad, duplicados, reintentos, devoluciones y caídas antes de producción.
Cómo se ve la operación con esto bien hecho
Cliente compra última unidad en Shopify a las 14:00:03:
- Shopify dispara webhook
orders/paidal ERP. - ERP recibe y valida el evento.
- ERP marca stock = 0 en transacción atómica.
- ERP dispara update a MercadoLibre y WooCommerce con stock 0.
- ERP marca publicación pausada en todos los canales.
- El sistema registra la propagación y alerta si algún canal no confirma.
Mientras un canal aún muestra la disponibilidad anterior existe una ventana de riesgo. Si recibe otro pedido, el resultado depende de quién tiene autoridad para reservar, de las reglas del canal y de cómo se gestione la excepción.
Por eso la meta no debe ser prometer “0%”, sino acotar la ventana, impedir dobles procesamientos, detectar diferencias y resolver excepciones con trazabilidad.
Lo siguiente
- Cómo sincronizar inventario entre tienda física, Woo y Shopify — el paso a paso técnico.
- Cómo vender en MercadoLibre sin descuadrar tu stock — el caso de MELI en detalle.
- Qué es un ERP — por qué el ERP es la pieza central.
Si ya tienes sobreventas que no logras controlar, agenda una demo de ExpandePRO y te mostramos cómo se ve la operación con stock real-time multicanal.
Fuentes consultadas
Preguntas frecuentes
¿Por qué se produce la sobreventa multicanal?
Porque el stock se descuenta en cada canal con latencia (segundos a horas). Si vendes el mismo SKU en Shopify y MercadoLibre con sincronización cada 15 minutos, en esa ventana ambos canales 'creen' que tienen 1 unidad disponible y aceptan venta. Cuando se sincroniza, ya vendiste 2 unidades de un producto que solo tenías 1.
¿Sirve sincronizar cada cierto tiempo o tiene que ser real-time?
Los eventos reducen latencia frente al polling, pero ningún intervalo garantiza sobreventa cero. La reserva debe ocurrir en el sistema que tenga autoridad para confirmar la disponibilidad; después se propaga el stock a los demás canales y se reconcilian diferencias.
¿Qué es un buffer de stock y conviene usarlo?
Un buffer es publicar menos stock del real para tener margen. Ej: tienes 10 unidades, publicas 9 en MercadoLibre y 9 en Shopify. Funciona si tu sincronización es lenta, pero reduce ventas potenciales. Es solución de contingencia, no de fondo: lo bueno es resolver la raíz con stock real-time.
¿Cómo manejo stock entre tienda física y online?
Tres formas: 1) bodega única (todo el stock sirve para todos los canales), 2) bodegas separadas (X unidades reservadas para tienda física, Y para online), 3) bodegas con priorización (todo sirve para todos pero la tienda física tiene prioridad). La elección depende de tu modelo. Lo crítico es que cuando vendes en uno, los otros lo sepan al instante.
¿Qué pasa si MercadoLibre tarda en sincronizar?
El API de MercadoLibre es estable pero tiene rate limits. Si tu sistema satura el API te van a tirar throttling y la sincronización se retrasa. Soluciones: priorizar updates por SKU activo, hacer batches, usar webhooks de MELI en vez de polling. Un ERP serio implementa esto sin que lo veas.
¿Quieres dejar de pelear con tu operación?
ExpandePRO conecta tu tienda online, el SII, tus pagos y tu inventario en una sola plataforma. Prueba cómo se ve tu operación con una sola fuente de verdad.