⏱️ 10 minutos de lecturaÚltima actualización: Enero 2025

Tracking en Tiempo Real

Sistema de seguimiento en vivo usando WebSocket. Los clientes pueden rastrear sus pedidos sin autenticación desde que salen de cocina hasta que llegan a su puerta.

💡 Clave: El sistema usa WebSocket (Socket.IO) para actualizaciones instantáneas. Sin recargar la página, el estado del pedido se actualiza automáticamente en todos los dispositivos conectados.

¿Cómo Funciona el Tracking?

URL de Seguimiento Pública

/[slug]/track/[código-pedido]

Ejemplo: https://mirestaurante.com/mi-negocio/track/ORD-2025-001

  • Acceso sin login: El cliente solo necesita el código del pedido
  • Actualizaciones automáticas: WebSocket mantiene la página sincronizada
  • Mobile-friendly: Optimizado para teléfonos móviles
  • Timeline visual: Muestra el progreso paso a paso

Tecnología: WebSocket (Socket.IO)

Arquitectura de Conexión

Namespace:

/orders

Rooms (Salas):

  • store:[tenantSlug] - Todos los pedidos de una tienda
  • order:[código] - Seguimiento de un pedido específico
  • cadete:[id] - Notificaciones a un cadete específico

Eventos Principales:

order:statusCambio de estado del pedido
order:assignedPedido asignado a cadete
order:deliveredPedido entregado
cadete:statusCadete online/offline

Estados del Pedido (Timeline)

Línea de Tiempo
1

Pedido Recibido

Estado: pending

Tu pedido ha sido recibido y está esperando confirmación.

2

Confirmado

Estado: confirmed

El restaurante confirmó tu pedido.

3

En Preparación

Estado: preparing

La cocina está preparando tu pedido.

4

Listo

Estado: ready

Tu pedido está listo y esperando al repartidor.

5

En Camino

Estado: out_for_delivery

El repartidor está en camino a tu dirección.

Entregado

Estado: delivered

Tu pedido ha sido entregado. ¡Buen provecho!

Flujo de Actualización en Tiempo Real

Ejemplo: Cliente rastreando su pedido

1. Cliente abre página de tracking

GET /mi-negocio/track/ORD-2025-001
  • Carga el estado actual del pedido desde BD
  • Establece conexión WebSocket
  • Se une a la sala order:ORD-2025-001

2. Cocina marca pedido como "Listo"

PATCH /orders/:id { status: "ready" }
  • Backend actualiza la base de datos
  • Backend emite evento WebSocket
socket.to('order:ORD-2025-001').emit('order:status', { status: 'ready' })

3. Página del cliente se actualiza automáticamente

  • Timeline avanza al paso "Listo"
  • Sin recargar la página
  • Instantáneo (milisegundos)

4. Admin asigna cadete

PATCH /orders/:id/assign-cadete
  • Backend asigna y cambia estado a "out_for_delivery"
  • Emite evento a múltiples salas
socket.to('order:ORD-2025-001').emit('order:status', { status: 'out_for_delivery' })

5. Página del cliente actualiza nuevamente

  • Timeline avanza a "En Camino"
  • Puede mostrar nombre/vehículo del cadete

Beneficios del Sistema WebSocket

✅ Para Clientes

  • • Información siempre actualizada
  • • No necesitan recargar la página
  • • Experiencia fluida y moderna
  • • Reduce ansiedad de espera

✅ Para el Restaurante

  • • Menos llamadas preguntando por estado
  • • Transparencia total del proceso
  • • Mejor experiencia del cliente
  • • Menos costos de servidor (vs polling)

Compartir el Link de Tracking

Hay varias formas de compartir el enlace de seguimiento con el cliente:

1. Email Automático

Cuando el pedido es confirmado, el sistema puede enviar un email con el link de tracking.

2. WhatsApp Manual

Copia el link y envíalo por WhatsApp al cliente.

Hola! Tu pedido #ORD-2025-001 está en proceso. Rastréalo aquí: https://...

3. SMS (si configurado)

Integración con servicio SMS para enviar el link automáticamente.

Consideraciones Técnicas

Reconexión Automática

Si el cliente pierde conexión (ej: entra en un túnel), Socket.IO se reconecta automáticamente cuando vuelve la señal.

Fallback a HTTP Polling

En redes restrictivas que bloquean WebSocket, Socket.IO automáticamente cambia a long-polling HTTP.

Sin Autenticación Requerida

Las páginas de tracking son públicas. Solo necesitas el código del pedido (que solo conoce el cliente).

Mejores Prácticas

✅ Comparte temprano: Envía el link de tracking cuando confirmes el pedido, no cuando esté listo.

✅ Actualiza rápido: Cambia los estados apenas ocurran para mantener al cliente informado.

✅ Comunicación clara: Los nombres de estados deben ser fáciles de entender para clientes.

¿Te fue útil este artículo?

Centro de ayuda: guías y tutoriales | Nandu