# 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="https://4161681308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5jRdo0cXdFHp6c7ZKdof%2Fuploads%2Fose2IjB64CcsxFY6FIDa%2Fimage.png?alt=media&#x26;token=d3708cd8-669d-498b-9af6-289030bf378d" 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="https://4161681308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5jRdo0cXdFHp6c7ZKdof%2Fuploads%2FCjooFpjM7rstNB1h9RWp%2Fimage.png?alt=media&#x26;token=4dcf5e0c-a402-493c-896b-378e33c4e913" 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="https://4161681308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5jRdo0cXdFHp6c7ZKdof%2Fuploads%2FaayLpgv7KYzCOuMvTnJE%2Fimage.png?alt=media&#x26;token=c5c70877-9e3b-4dbb-9dfc-4b767f48c37e" 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](https://docs.shippify.co/developers/guia-de-integracion/procesos-basicos/actualizacion-de-estados) en tu sistema.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.shippify.co/developers/guia-de-integracion/procesos-basicos/actualizacion-de-estados/estados.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
