Devoluciones por producto: qué investigar primero
Un diagnóstico con CSV sintético y resultados recalculables: distingue pedidos, unidades y cohortes abiertas antes de atribuir una devolución a su causa.
TL;DR: Para investigar devoluciones, compara el mismo producto con el mismo tiempo de seguimiento y conserva dos tasas: pedidos afectados y unidades devueltas. El motivo que marca el cliente orienta la investigación; por sí solo no demuestra qué falló.
Contenidos
Para investigar devoluciones, compara el mismo producto con el mismo tiempo de seguimiento y conserva dos tasas: pedidos afectados y unidades devueltas. El motivo que marca el cliente orienta la investigación; por sí solo no demuestra qué falló.
La escena es reconocible: aparecen cuatro unidades devueltas de una mochila y alguien propone detener su campaña. Pero faltan tres preguntas: cuántas mochilas se entregaron, a cuántos pedidos pertenecen y cuánto tiempo han tenido los compradores para devolverlas. Este diagnóstico termina con una comprobación asignada, no con un culpable elegido a partir de una columna.
Define lo que estás contando
Una solicitud, una unidad recibida físicamente y un reembolso son hechos distintos. Aquí medimos unidades físicamente recibidas de vuelta, vinculadas a la línea original. Un reembolso sin devolución no entra en ese numerador. Una solicitud pendiente tampoco, aunque merece una cola operativa separada.
La distinción importa al exportar. Shopify diferencia Reversed quantity, que puede incluir cancelaciones y ediciones, de Returned quantity, específica de unidades físicamente devueltas. Su documentación también distingue la fecha de la venta de la fecha del ajuste. Comprueba el campo exacto antes de llamar «devoluciones» a todo valor negativo. Definiciones oficiales de Shopify.
Nuestra hoja es un formato propio, no una exportación ni una función de Frihet. Para situarla entre pedidos y otros registros, consulta la guía de datos e integración ecommerce.
Fija primero el corte y la cohorte
El ejemplo es completamente sintético. El corte es el 2026-09-13 y el seguimiento analítico dura 30 días desde la entrega, incluyendo devoluciones recibidas hasta el día 30. No es un plazo legal ni una política comercial recomendada. En tu operación, elige un horizonte que permita observar el proceso y documenta su criterio.
Agrupamos por SKU y fecha de entrega. La cohorte del 2026-08-01 ya ha completado el seguimiento; la del 2026-09-06 solo lleva siete días. «Madura» significa que ha completado nuestra ventana, no que sea imposible recibir más devoluciones. Los casos posteriores se conservan y pueden estudiarse aparte.
Para entregas parciales, separa las líneas por entrega y conserva una clave que permita volver a reunir el pedido. Si falta la fecha, marca el registro como no clasificable; no lo conviertas en un pedido sin devolución. Mantén también las solicitudes abiertas fuera de la tasa física y visibles para quien las tramita.
La tabla que puedes recalcular
El paquete de trabajo (ZIP) contiene order-lines.csv, results.csv y recalculate.py. El primero tiene 30 filas ficticias, una por línea entregada; el segundo es la salida calculada. El script usa solo Python 3 estándar. Conserva los originales y ejecuta python3 recalculate.py en una copia para comprobar los resultados.
| SKU y cohorte | Pedidos | Unidades entregadas | Pedidos con devolución | Unidades devueltas |
|---|---|---|---|---|
| BAG-A, 2026-08-01, madura | 10 | 20 | 3 | 4 |
| BAG-B, 2026-08-01, madura | 10 | 10 | 1 | 1 |
| BAG-A, 2026-09-06, abierta | 10 | 20 | 1 | 1 |
Para BAG-A madura: 3 / 10 × 100 = 30 % de pedidos afectados y 4 / 20 × 100 = 20 % de unidades devueltas. Para BAG-B madura, ambas tasas son 1 / 10 × 100 = 10 %. Ninguna contradicción: un pedido puede contener dos unidades y devolver ambas, como ocurre en la primera fila de BAG-A.
La BAG-A reciente muestra 10 % por pedidos y 5 % por unidades, pero sigue abierta. No demuestra que una intervención haya mejorado el producto. En estos datos no hemos simulado ninguna intervención. Tampoco existe un umbral universal que convierta el 20 % en aceptable o inaceptable.
Conserva una fila que puedas explicar
line_id,order_id,sku,cohort,channel,delivered_at,units_delivered,units_returned,return_received_at,reason_codeline_id identifica la línea; order_id permite contar pedidos distintos. No sumes recuentos de pedidos por SKU para calcular el total de la tienda: un pedido real puede contener varios productos. Aquí cada pedido contiene un único SKU para mantener el ejemplo comprobable.
SIZE significa tamaño inadecuado declarado; DAMAGE, daño declarado; UNKNOWN, motivo no disponible; NONE, ninguna devolución física registrada. El código no representa una verificación del almacén. Conserva el texto original aparte cuando exista, con acceso limitado y sin copiar datos personales innecesarios.
La hoja simplifica cada línea a una recepción y un motivo. Si una línea vuelve en varias fechas o con motivos distintos, usa una tabla de eventos enlazada por line_id y suma solo los eventos dentro del horizonte. No repitas units_delivered por cada evento: inflarías el denominador. Un identificador duplicado debe investigarse antes de borrar filas.
El motivo te dice dónde mirar
En BAG-A madura, tres unidades llevan SIZE y una UNKNOWN. Por tanto, 3 / 4 = 75 % describe el reparto de motivos entre unidades devueltas; no es una tasa de devolución del producto. Si eliminas el motivo desconocido, fabricarás un 100 % de tamaño a partir de información incompleta.
La próxima comprobación sería comparar las medidas de las tres unidades, la variante pedida y la ficha de producto que vieron esos compradores. Si las medidas coinciden pero la ficha induce a otra expectativa, aparece una hipótesis sobre información. Si una unidad difiere, habrá que investigar esa unidad y su lote. El motivo seleccionado no decide entre ambas explicaciones.
BAG-B tiene una unidad con DAMAGE. Revisa embalaje, evidencia de recepción y lote; esa etiqueta no demuestra que el transportista la dañara. Una sola observación tampoco permite estimar una tendencia estable.
No acuses al canal con un conjunto distinto
Los casos devueltos del ejemplo están en web. Eso invita a abrir una pregunta, no a cerrar el canal. Compara el mismo SKU, variante y horizonte, y revisa promoción, lote y calidad del registro. Cinco pedidos de un canal aportan poca información; dividirlos en segmentos aún más pequeños no crea precisión.
Si tus informes no coinciden, guarda filtros, fecha del corte y definición del campo. Shopify documenta diferencias debidas al periodo y a la lógica de los informes. Antes de buscar una causa comercial, descarta estar comparando partes distintas del pedido. Discrepancias de informes de Shopify. El directorio de integraciones sirve para comprobar qué fuente puedes consultar; su presencia no garantiza estos campos.
Cierra con una decisión pequeña y verificable
Copia esta ficha y asigna a una persona: «BAG-A, cohorte 2026-08-01; 4/20 unidades, 3/10 pedidos; tres motivos SIZE y uno UNKNOWN; revisar medidas y ficha; responsable de catálogo; evidencia pendiente; revisión después de comprobar las cuatro unidades devueltas de tres pedidos».
Añade qué resultado cambiaría la acción y conserva la versión anterior del análisis. No borres el desconocido ni retoques la cohorte para mejorar la cifra. Cuando exista evidencia, decide una prueba acotada y compara después cohortes igualmente maduras. Si necesitas valorar el efecto económico, trabaja por separado el cálculo de costes con la calculadora de margen: estas tasas no miden beneficio.
¿Te ha sido útil este artículo?
Preguntas frecuentes
¿Puedo usar una cohorte reciente para demostrar una mejora?
Una cohorte que sigue en observación no demuestra una mejora frente a otra que ya completó la ventana. Compara el mismo producto con igual observación y separa las tasas por pedido y por unidad.
¿El motivo más frecuente demuestra la causa de las devoluciones?
No: es una pista que debes contrastar con el producto y la evidencia disponible. Su porcentaje describe los motivos entre las unidades devueltas, no la tasa de devolución del producto; conserva también los motivos desconocidos.