> For the complete documentation index, see [llms.txt](https://docs.shippify.co/developers/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.shippify.co/developers/guia-de-integracion/procesos-basicos/actualizacion-de-estados/estados.md).

# Estados

## Ciclo de vida

Para que una entrega sea completada, esta debe pasar por una serie de cambios de estados la cual detallamos en la siguiente imagen.

<figure><img src="/files/YYW5WVroEj9L7MoVWfLo" alt=""><figcaption><p>Estados de una entrega</p></figcaption></figure>

### Estados Iniciales

Cuando se crea una entrega en el sistema, esta se puede crear con estado **procesando** que significa que la tarea se creó satisfactoriamente y esta lista para ser asignada. Cuando se crea como **pendiente de revisión** es porque hubo un error en la geolocalización, ya sea en la dirección de recolección o entrega y es necesario que un operador corrija la dirección para que pueda pasar a procesando y seguir el flujo.

### Asignación

Para enlazar una entrega con un conductor hay dos vías, colocarla en estado **broadcasting** ( La entrega se publica en la red de conductores para que alguno la tome en la aplicación móvil) o **asignarla** directamente a un conductor (Este proceso es realizado por un operador en el dash, al asignarlo no significa que el conductor acepta la tarea).

### Recolección

Cuando un conductor toma la entrega desde la app móvil o un operador lo asignó desde el dash y el conductor acepta la entrega en la app móvil, esta pasa a **confirmado para la recolección**. Luego de confirmar la recolección, el conductor indica desde la app cuando se encuentra **en camino para la recolección**. Finalmente al llegar a la bodega el conductor marca en la app que ya está **en el punto de recolección**. En todo este proceso el conductor puede rechazar la entrega cambiándola al estado no recolectado.

### **Recolección Fallida**

En todo este proceso de recolección el conductor puede rechazar la entrega cambiándola al estado **no recolectado**, de este modo la entrega queda sin conductor asignado. Bajo este estado se pueden configurar razones para describir el motivo del cambio o rechazo, por ejemplo problemas con el vehículo.

### Entrega

Cuando ya está en bodega el conductor, se procede a escanear y verificar los paquetes de la entrega, en el caso que la entrega pertenezca a una ruta, se debe realizar el mismo proceso para cada una. Durante este proceso la tarea está con el estado **en entrega.** Luego de terminar la verificación, se pasa a **En camino a la entrega** y posteriormente a **en punto de entrega** cuando llegue a la dirección pactada.

### Entrega **Fallida**

En todo este proceso de entrega el conductor puede abstenerse de completar la entrega cambiándola al estado **En resguardo por el conductor**, bajo este estado se pueden configurar razones para describir el motivo del cambio, por ejemplo el cliente no estaba en el domicilio. El conductor puede reintentar la entrega hasta máximo 3 veces, en caso que logre realizar la entrega la tarea continua el flujo en verde, caso contrario sigue el flujo rojo que devuelve el paquete a la bodega quedando como **retornado** la entrega.

### Estados Finales

Luego de realizar la entrega de los paquetes al destinatario, se solicita en la app **comprobantes de entrega** como fotos o firma de la persona quien recibe el paquete. Una vez entregado los comprobantes la tarea cambia al estado **completado** finalizando asi el ciclo de vida de la tarea.

### Cancelación

En cualquier paso del flujo la entrega puede ser cancelada, ya sea por integración externa del API o desde el dash. Al cancelar, la entrega se queda sin conductor. Bajo este estado se pueden configurar razones para describir el motivo del cambio, por ejemplo cliente canceló el pedido.

## **Códigos de estado**

<table><thead><tr><th>Estado de la entrega</th><th>Código</th><th width="321">Descripción</th></tr></thead><tbody><tr><td>Pendiente de revisión</td><td>pending_to_review</td><td>Se crea una entrega con información faltante de recogida o entrega (contacto, ubicación) y necesita revisión.</td></tr><tr><td>Procesando</td><td>processing</td><td>Se crea con éxito una entrega en la plataforma.</td></tr><tr><td>Buscando conductor</td><td>broadcasting</td><td>Se ha publicado una entrega en una red de conductores.</td></tr><tr><td>Asignada</td><td>assigned</td><td>Se ha asignado una entrega a un conductor.</td></tr><tr><td>Confirmado para recolectar</td><td>confirmed_to_pickup</td><td>Se ha confirmado una entrega para que la realice un conductor.</td></tr><tr><td>En camino a la recolección</td><td>going_to_pickup</td><td>Un conductor se dirige a la dirección de recogida.</td></tr><tr><td>En el punto de recolección</td><td>at_pickup</td><td>Un conductor está en la dirección de recogida.</td></tr><tr><td>En entrega</td><td>on_delivery</td><td>Conductor en camino a la entrega</td></tr><tr><td>En camino a la entrega</td><td>going_to_dropoff</td><td>Un conductor se dirige a la dirección de entrega.</td></tr><tr><td>En el punto de entrega</td><td>at_dropoff</td><td>Un conductor está en la dirección de entrega.</td></tr><tr><td>Entregado</td><td>dropped_off</td><td>Un conductor espera el comprobante de entrega (foto, firma, datos del destinatario).</td></tr><tr><td>Completado</td><td>completed</td><td>Un conductor ha completado con éxito una entrega.</td></tr><tr><td>Canceledo</td><td>canceled</td><td>Se ha cancelado una entrega.</td></tr><tr><td>En camino al punto de retorno</td><td>going_to_return</td><td>Un conductor se dirige a la dirección de recogida para devolver una entrega.</td></tr><tr><td>En el punto de retorno</td><td>at_return_point</td><td>Un conductor se encuentra en la dirección de recogida para devolver una entrega.</td></tr><tr><td>Regresado</td><td>returned</td><td>Un conductor ha devuelto correctamente una entrega.</td></tr><tr><td>No recolectado</td><td>not_picked_up</td><td>Un conductor ha informado que no se ha recogido una entrega.</td></tr><tr><td>No recolectado pagable</td><td>not_picked_up_payable</td><td>Un conductor ha informado de que no se ha recogido una entrega, pero se le pagará.</td></tr><tr><td>En resguardo por el conductor</td><td>hold_by_courier</td><td>Una entrega es retenida por el conductor asignado hasta que se realice un nuevo intento o se devuelva a la dirección de recogida.</td></tr></tbody></table>

## **Motivos de problemas**&#x20;

Si necesitas especificar la razón por la que cambió a un estado una tarea, puedes configurarle al estado de tu preferencia los motivos que desees, estos explicaran o daran mayor detalle al cambio. Si en tu sistema externo tienes un estado que no existe en nuestra lista, puedes enlazarlo al que se parezca mas y crear bajo él un motivo que lo identifique mejor. Generalmente se agregan estos motivos a los estados de hold\_by\_courier y canceled.

### &#x20;Ejemplos

<table><thead><tr><th width="195">Estado en Shippify</th><th>Razón de problema</th><th>Estado Externo</th></tr></thead><tbody><tr><td>hold_by_courier</td><td>Rechazo del cliente</td><td>Rechazo del cliente</td></tr><tr><td>hold_by_courier</td><td>No se encuentra el cliente</td><td>No se encuentra el cliente</td></tr><tr><td>canceled</td><td>Pérdida del paquete</td><td>Paquete perdido</td></tr><tr><td>canceled</td><td>Cancelación del cliente</td><td>Cliente canceló</td></tr></tbody></table>

### Creación

Puedes crear estos motivos dentro del dash accediendo a [este link](https://dash.shippify.co/settings/sections/deliveries/status-info). Aqui encontrarás razones del sistema que puedes reutilizar y en caso de no encontrar la indicada, puedes crearla.&#x20;

#### Pasos

1. Ingresar a [este link](https://dash.shippify.co/settings/sections/deliveries/status-info).
2. Seleccionar un estado.
3. Revisar si no existe en el sistema un motivo similar al tuyo. Si existe, agrégalo a tu compañía, caso contrario crea uno.

<figure><img src="/files/zQqhfRPX49u4zoNVhlyY" alt=""><figcaption><p>Motivos de problemas de entrega</p></figcaption></figure>

## Enlace de estados con plataforma externa

Ya que conoces los estados y motivos dentro de nuestro sistema, puedes proceder a enlazarlos con tu sistema. Para tener una mejor visión de esto, puedes tomar [esta plantilla](https://docs.google.com/spreadsheets/d/1UIZlIxcRq-iOfRq9-VyE8jzF9FKl-oEJ04Yxwt3n4JI/edit?usp=sharing) y empezar a llenarla.

Aqui encontrarás una tabla donde deberás llenar la información de los estados en tu sistema y como sería el equivalente en shippify.&#x20;

<figure><img src="/files/ufw5tvO1VwbiuTjXyaM2" alt=""><figcaption><p>Plantilla</p></figcaption></figure>

### Pasos

1. Lista los estados de tu plataforma en la columna azul
2. Encuentra el estado equivalente en shippify. Puedes ayudarte realizando las siguientes preguntas:
   1. Es un estado que ocurre antes de la recolección de los paquetes en la bodega?
      * [Cuando recien se crea/agenda.](#estados-iniciales)
      * [Cuando esta buscando conductor.](#asignacion)
   2. [Es un estado que ocurre durante el proceso de recoleccion](#recoleccion)?
   3. [Es un estado que ocurre durante el proceso de entrega](#entrega)?
   4. Es un estado que indica que hubo un problema?
      * [En el proceso de recolección](#recoleccion-fallida)
      * [En el proceso de entrega](#entrega-fallida)
      * [General](#cancelacion)
   5. [Es un estado que indica la entrega satisfactoria?](#estados-finales)
3. Si necesitas más detalles para un estado o te salió el mismo estado en shippify para 2 o mas estados de tu plataforma, entonces [agrégale razones al estado](#motivos-de-problemas).

Cuando ya tengas tu tabla llena, podrás continuar a configurar la [sincronización de estados](/developers/guia-de-integracion/procesos-basicos/actualizacion-de-estados.md) en tu sistema.
