# Integraciones con tiendas online

Conectá la tienda de un comercio y sus pedidos pagos se convierten solos en entregas de Ruta: sin copiar direcciones, sin planillas, sin duplicados. No hace falta programar nada; si tenés un sistema propio, usá la [API](inicio-rapido.html). ¿Primera vez? La guía [Conectá tu tienda](conecta-tu-tienda.html) lo explica paso a paso, con capturas.

<div class="cards">

**[WooCommerce](woocommerce.html)**
Disponible. Conexión con una clave de lectura de la API REST y avisos al instante por webhook.

**[Tiendanube](tiendanube.html)**
Disponible. Autorizás la app de Ruta en tu tienda (sin claves que copiar) y los pedidos llegan al instante.

**[Shopify](shopify.html)**
Disponible. Autorizás la app de Ruta en tu tienda (sin claves que copiar), los pedidos llegan al instante y Shopify muestra el link de seguimiento cuando el pedido sale.

**[Wix](wix.html)**
Disponible. Conectás con un clic (app de Ruta), elegís las opciones de reparto local de tus últimos pedidos y Ruta le avisa a Wix cuando la entrega sale y se entrega. La API key sigue como opción avanzada.

**VTEX, Fenicio y Mercado Libre Flex**
En preparación: las activamos con cada comercio cuando la tienda lo autoriza.

</div>

## Cómo funciona

<div class="steps">

1. **Conectás la tienda una vez.** En **Integraciones (en la barra de arriba del panel)** elegís tu plataforma y tocás **Conectar**: autorizás la app de Ruta desde la propia tienda (Shopify, Tiendanube y Wix) o cargás la dirección de la tienda y una clave de **Lectura/Escritura** que generás en ella (WooCommerce; con **Lectura** también funciona, sin avisar a la tienda).
2. **Ruta revisa la tienda cada 15 minutos** y trae los pedidos pagos que todavía no son entregas. Con el webhook de la tienda configurado, los pedidos llegan al instante.
3. **Cada pedido crea una entrega** con el nombre, la dirección y el teléfono de envío, y la nota del cliente como instrucciones.
4. **Nunca se duplica.** Un pedido que ya se importó no vuelve a crear otra entrega, aunque la tienda lo mande de nuevo o lo modifique.
5. **La tienda se entera.** Con **Avisar a la tienda** encendido, cuando la entrega sale el pedido queda enviado con el link de seguimiento de Ruta, y cuando se entrega pasa a entregado. El aviso sale en menos de un minuto; lo que pasó mientras estaba apagado no se avisa después.

</div>

> [!TIP]
> Las integraciones son parte del plan **Pro**. Si tu plan no las incluye, el panel te muestra cómo pasar de plan.

## Qué pedidos se importan

Los pedidos **confirmados y listos para preparar** (en WooCommerce, «Procesando»; en Shopify, pagados y sin preparar, con envío o envío local; en Tiendanube, pagados con envío a domicilio a cargo de la tienda). Con pago contra entrega (Shopify, WooCommerce y los medios que elegís en Tiendanube), la entrega lleva el monto a cobrar **en pesos o en dólares**, según la moneda del pedido; Ruta no convierte, y un pedido contra entrega en otra moneda no se importa (motivo `COD_CURRENCY`). Un pedido sin envío (por ejemplo, sólo productos digitales) tampoco crea una entrega. Un pedido pendiente de pago, cancelado, reembolsado o de retiro en el local no crea una entrega. **Cada pedido es independiente:** si uno no se puede importar, los demás entran igual. Un pedido se importa una sola vez: si cambia en la tienda después (por ejemplo, el cliente corrige la dirección), corregí la entrega en el panel. Si la tienda **cancela** un pedido ya importado (en WooCommerce: cancelado, reembolsado o fallido; en Shopify: cancelado, reembolsado o anulado; en Tiendanube: cancelado, o con el pago anulado o reembolsado), Ruta cancela la entrega si todavía no salió; si ya está en camino o cerrada, no la toca y te deja un aviso.

## Ajustes de cada conexión

En **Integraciones**, abrí la plataforma (por ejemplo **Shopify**) y, en tu tienda, **Ajustes de la conexión**. Se aplican a los pedidos que entren desde que guardás; las entregas que ya existen no cambian.

| Ajuste | Qué hace | Dónde está |
| --- | --- | --- |
| **Tipos de envío** | Traer sólo los pedidos con **entrega local**, sólo los de **envío a domicilio**, o los dos. | Shopify |
| **Sólo pedidos ya pagos** | No traer los pedidos de pago contra entrega. Sin esta opción entran con el total como monto a cobrar. | Shopify y WooCommerce |
| **Se retiran en** | El comercio cuya dirección de retiro usan las entregas de esta tienda (o la base de tu empresa). | Con el plan de comercios |
| **Zona** | La zona de reparto de las entregas de esta tienda. | Si tenés zonas |
| **Asignar automáticamente al entrar** | Cada pedido de esta tienda se asigna a un repartidor con tus reglas de **Asignación automática**, aunque no asignes todo al crear. | Plan Pro |

Un pedido que un ajuste deja afuera no es un error: no se importa, y entra si después cambiás el ajuste y la tienda lo sigue mostrando. En Wix, las opciones de reparto local se eligen en los mismos ajustes, con **Buscar las opciones en mis pedidos**.

## Estado de una conexión

| Estado en el panel | Qué significa | Qué hacer |
| --- | --- | --- |
| **Conectada** | Las claves funcionan y Ruta está trayendo pedidos. | Nada. |
| **Faltan las claves de la tienda** | La conexión existe pero todavía no tiene claves. | Abrí **Cargar las claves de la tienda**. |
| **Requiere revisión** | El último intento falló (claves rechazadas, tienda caída…). | Leé el aviso de la conexión: dice el motivo y qué hacer. |
| **Pausada** | La pausaste vos. No se traen pedidos. | **Reanudar conexión** cuando quieras seguir. |

Cada conexión muestra su **último pedido importado** (con el enlace a la entrega), sus **últimas búsquedas de pedidos** (cuándo se consultó la tienda y con qué resultado) y, en Shopify, **Pedidos que no se importaron**: los pedidos de la última semana que no crearon una entrega, cada uno con su motivo («no tiene envío a domicilio», «se retira en la tienda», «se cobra contra entrega en una moneda que no es pesos ni dólares»…). Las demás plataformas todavía no los listan. **Buscar pedidos ahora** pide una consulta ahora mismo, sin esperar los 15 minutos.

## Cuando algo falla

Ruta reintenta solo los errores pasajeros (la tienda no responde, demasiadas consultas) y, si una tienda falla muchas veces seguidas, espera unos minutos antes de volver a intentar para no sobrecargarla. Los errores que necesitan una persona quedan en **Requiere revisión** con su código:

| Código | Motivo | Qué hacer |
| --- | --- | --- |
| `INTEGRATION_CREDENTIALS_REJECTED` | La tienda rechazó las claves: se borraron, se cambiaron o no tienen permiso de lectura (en Tiendanube: se desinstaló la app de Ruta). | Generá una clave nueva de **Lectura** y cargala en **Cambiar las claves de la tienda**. En Tiendanube, tocá **Volver a conectar**. |
| `INTEGRATION_DESTINATION_BLOCKED` | La dirección no es una tienda pública con `https`. | Revisá la dirección: tiene que abrirse desde internet con candado. |
| `SERVICE_UNAVAILABLE` | La tienda no respondió a tiempo o devolvió un error. | Ruta reintenta solo. Si sigue, revisá que la tienda esté en línea. |
| `RATE_LIMITED` | La tienda (o su hosting) limitó las consultas. | Ruta espera y reintenta solo. |
| `INTEGRATION_PAYLOAD_INVALID` | Un pedido llegó sin un dato obligatorio (por ejemplo, sin dirección de envío). | Completá el pedido en la tienda o creá la entrega a mano. |

## Seguridad

- **Permisos mínimos.** Ruta lee pedidos y sólo escribe para **avisar a la tienda** cuándo sale y cuándo se entrega cada pedido que reparte (con el link de seguimiento). Esa opción se apaga en los ajustes de la conexión.
- **Cifradas.** Las claves se guardan cifradas y no se vuelven a mostrar: ni en el panel ni en la API.
- **Sólo tiendas públicas.** Ruta se conecta únicamente por `https` a direcciones públicas de internet y verifica el certificado de la tienda.
- **Webhooks firmados.** Un aviso de la tienda sin la firma correcta se descarta.
- **Desconectar es inmediato.** Pausá la fuente en Ruta o borrá la clave en la tienda.
