Guía para decidir mejor

Cómo investigar pedidos duplicados en WooCommerce

Dos pedidos no significan necesariamente dos cargos, ni al revés.

Dos pedidos parecidos en WooCommerce pueden deberse a dos envíos del cliente, una actualización de pantalla, un reintento de la pasarela o una integración que creó otro registro. Antes de borrar uno, determina si hubo uno o dos cobros y si ambos tienen efectos en stock, factura, envío y notificaciones. Un pedido duplicado no equivale automáticamente a un cargo duplicado.

Conserva la evidencia mínima

Anota identificadores de ambos pedidos, fecha con zona horaria, importes, estado, método y referencia de transacción. En el panel de la pasarela comprueba cuántas autorizaciones y capturas existen. Si ambos pedidos tienen el mismo ID externo, revisa cómo la extensión maneja notificaciones repetidas; si los IDs difieren, puede haber dos operaciones reales. Evita compartir datos completos del cliente o tarjeta en tickets.

Reconstruye el recorrido

Relaciona notas del pedido, logs de WooCommerce, eventos de pasarela, solicitudes al checkout y tareas programadas. Busca un doble clic, timeout que llevó al usuario a repetir, redirección interrumpida, extensión de pago desactualizada o webhook reenviado. Los eventos pueden llegar más de una vez; una integración debe tratar el mismo evento de forma idempotente. No atribuyas un duplicado a la caché o al servidor sin ver la secuencia. Revisa la entrega de notificaciones y los fallos del checkout.

Corrige según dinero y mercancía, no solo según interfaz

Si hay un cobro y dos pedidos, identifica cuál conservará el equipo antes de cancelar el otro y confirma que stock, automatizaciones y facturación quedan coherentes. Si hay dos cobros, coordina reembolso según la pasarela y política de la tienda; no marques uno «fallido» para ocultar un cargo real. Si hay cero cobros, no envíes producto solo por ver un estado de pedido ambiguo. Documenta cada acción y su autorización.

Prueba que no vuelva a ocurrir

En sandbox reproduce el caso con respuesta lenta controlada o reenvío autorizado del mismo evento, sin crear cargos reales. Comprueba que el plugin de pagos, checkout y tareas no generen una segunda operación y que el cliente vea una confirmación clara. Si la causa requiere una actualización, sigue el proceso de prueba sin afectar ventas. Para soporte de infraestructura, envía la cronología saneada y códigos HTTP, no credenciales de la pasarela.