Avisar a tu cliente cuando llegue el auto que buscaba
Cómo funciona la Búsqueda, y el único endpoint que hoy la lee.
AutomotorasSolo en los workspaces de automotoras.
Un cliente pide «avísame cuando te llegue un Mazda CX-30 del 2021 en adelante, hasta 18 millones». Esa promesa se llama Búsqueda, un registro de lo que el cliente quiere. Queda abierto hasta que un auto lo cumple, se cancela o expira. Esta receta explica cómo se cumple sola, y qué puedes leer sobre ella desde tu integración hoy.
Trampa
Crear, cerrar o cancelar una Búsqueda no está en la API pública todavía
El ciclo de vida (crear, cumplir, cancelar, renovar) todavía no está en la
API pública. Tampoco existe un evento busqueda.* en el catálogo de webhooks,
así que tu integración no se entera sola de que una Búsqueda se cumplió. La
única operación publicada hoy es una lectura: GET /vehicles/{id}/busquedas.
Cómo se cumple, sin que llames a nada
Una Búsqueda se crea desde la conversación con el agente de IA, o a mano en la aplicación. Queda abierta hasta que un auto la cumple. Puede cumplirla del todo o con una diferencia dentro del margen del workspace. También se cierra si se cancela o expira.
Un auto la cumple por dos caminos, y los dos corren sin que nadie llame a nada:
- Al momento: crear un vehículo, que vuelva a estar disponible o que le bajen el precio dispara el mismo evento. Ese evento revisa cada Búsqueda abierta contra ese auto.
- Una vez al día: una revisión compara todas las Búsquedas abiertas contra el stock actual.
El cliente recibe el aviso automático por WhatsApp o por el canal que prefirió. Recibe como máximo un aviso por Búsqueda al día. El vendedor se entera después, nunca antes. Una campana y un WhatsApp propio le dicen qué auto, a qué cliente y si el calce fue exacto o parcial.
El único endpoint: quién espera este auto
Camila pidió un Toyota Yaris 2020 en adelante, hasta 11.500.000. El auto de esta receta vale 11.990.000: se pasa del tope, pero por poco.
curl "https://api.vitrinadev.com/api/v1/vehicles/26a00eb8-62ce-4a02-a9a7-72204ed8a392/busquedas" \
-H "Authorization: Bearer $VITRINA_KEY"{
"data": [
{
"subscription_id": "b4add9ff-95df-4a08-9c7c-b817bc4c2474",
"contact": { "name": "Camila Rojas", "phone": "+56945678123" },
"lead_id": "2fa9c593-1200-4e2d-88d6-0bf8e637261f",
"status": "open",
"trigger_key": "vehicle_in_stock",
"criteria": { "make": "Toyota", "model": "Yaris", "year_min": 2020, "max_price": 11500000 },
"sought_label": "Toyota Yaris · 2020 en adelante",
"days_left": 90,
"notice_count": 0,
"verdict": "calza_parcial",
"differences": [
{
"bound": "budget",
"stated": 11500000,
"actual": 11990000,
"over": 490000,
"text": "Está $490.000 sobre el presupuesto de $11.500.000"
}
],
"already_notified": false
}
],
"meta": { "total": 1 }
}El registro no trae un simple sí o no. Trae differences, con cuánto se pasó y una frase ya redactada en text, lista para tu pantalla. Ahora Rodrigo pide el mismo auto, con un tope más alto, y se suscribe:
{
"data": [
{
"subscription_id": "03a1ef74-8150-45b0-9059-54678dd25a65",
"contact": { "name": "Rodrigo Paredes", "phone": "+56978451236" },
"lead_id": "ce5fdcc1-ae78-468f-a7aa-5b9b587c38ca",
"status": "open",
"trigger_key": "vehicle_in_stock",
"criteria": { "make": "Toyota", "model": "Yaris", "year_min": 2020, "max_price": 13000000 },
"sought_label": "Toyota Yaris · 2020 en adelante",
"days_left": 90,
"notice_count": 0,
"verdict": "calza",
"differences": [],
"already_notified": false
},
{
"subscription_id": "b4add9ff-95df-4a08-9c7c-b817bc4c2474",
"contact": { "name": "Camila Rojas", "phone": "+56945678123" },
"status": "open",
"verdict": "calza_parcial",
"differences": [{ "bound": "budget", "over": 490000 }],
"already_notified": false
}
],
"meta": { "total": 2 }
}La misma llamada ahora responde con las dos: el tope de Rodrigo alcanza, y differences le sale vacío. El de Camila sigue igual. Cada llamada vuelve a calificar cada Búsqueda abierta contra el auto. Por eso aparece también una que se suscribió después.
Dos cosas de este endpoint que no son obvias:
- El scope es
followups:read, nomarketplace:read. Lo que devuelve es la demanda registrada en el CRM, no el stock. - El nombre y el teléfono, dentro de
contact, piden ademáscontacts:read. Sin ese scope, el registro llega igual pero sin esos dos campos.
Cuando falla
Un workspace de otra vertical recibe 403 en este endpoint, aunque sus scopes estén bien. Todo lo que cuelga de /vehicles es solo para workspaces automotores.
En la aplicación: esto se ve en el pipeline de vehículos, vista Solicitudes. Ahí queda el registro de un cliente que pidió un auto que no está en el patio. Guía completa en Manual de automotora → Pipelines y reacondicionamiento.
A veces el aviso automático no alcanza, o quieres cerrar tú a quien quedó con una diferencia. Para eso está Reabre una conversación fría con una plantilla, sin que Meta te bloquee.