> ## Documentation Index
> Fetch the complete documentation index at: https://docs.impulsodigital.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Tienda a la medida

> El estándar para conectar una tienda propia: precio y existencias en vivo y enlace de pago.

Si tu tienda no es WordPress ni Shopify, puedes conectarla a Impulso implementando dos acciones en una dirección
`https` de tu servidor, protegidas con una llave en una cabecera (por ejemplo `X-Mi-Tienda-Key`). El dueño la conecta
en **Integraciones → Tienda online → Tienda a la medida** con la dirección, el nombre de la cabecera y la llave.

Cuando un cliente pregunta por un producto, el agente de Impulso consulta tu tienda y responde con el precio y las
existencias de ese momento. Si el dueño enciende **Enviar enlace de pago**, al confirmar el pedido el cliente recibe
el enlace de tu tienda para pagar.

## 1. Buscar productos

`GET https://tu-tienda.com/whatsapp.php?action=productos&q=<nombre o SKU>`

Hasta 10 productos publicados; un SKU exacto tiene prioridad.

```json theme={null}
{
  "products": [
    { "sku": "NB02359", "name": "Guardabarros Tesla Model Y", "description": "", "brand": "", "category": "Accesorios",
      "subcategory": "", "unit_price_cop": 145000, "available_quantity": 1, "photos": ["https://tu-tienda.com/f/1.jpg"] }
  ]
}
```

* `unit_price_cop` con el descuento vigente; `null` = por confirmar.
* `available_quantity`: `0` = agotado; `null` = por confirmar.
* `photos`: URLs `https` (JPG o PNG se envían como imagen por WhatsApp).

## 2. Preparar el carrito

`POST https://tu-tienda.com/whatsapp.php?action=carrito`

```json theme={null}
{ "items": [ { "sku": "NB02359", "quantity": 1 } ] }
```

Respuesta:

```json theme={null}
{ "checkout_url": "https://tu-tienda.com/checkout?c=abc123", "subtotal_cop": 145000, "expires_at": "2026-11-15T23:30:00-05:00" }
```

* Entre 1 y 25 SKU distintos, cantidades enteras positivas.
* `checkout_url` debe ser `https` y del **mismo dominio** de la tienda (o un subdominio).
* Preparar el carrito no reserva ni registra un pedido; Impulso nunca da la compra por pagada al enviar el enlace.

## Errores

| HTTP | Significado para Impulso |
| - | - |
| 401 | Llave inválida (el panel lo dice al conectar) |
| 409 | Producto o cantidad no disponible: el cliente pasa a una persona |
| 422 | Datos inválidos |
| 429 | Espera antes de reintentar |

> [!NOTE]
>
> La llave de tu tienda se guarda cifrada en la cuenta y nunca aparece en el panel, en los mensajes ni en lo que lee el agente.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.