Guía técnica de Widgets Embebibles: chatbot, formulario de contacto, catálogo de propiedades, webhook de leads y sincronización de propiedades.
Desde Configuración → Widgets Embebibles podés llevar la tecnología de Nexogar a tu propia página web: un chatbot con la misma configuración que tu Asistente Virtual, un formulario de contacto para una propiedad puntual, un catálogo de propiedades en formato grilla, un webhook que reenvía cada lead nuevo a tu CRM, y una sincronización de propiedades para que tu propio sistema empuje inventario hacia Nexogar.
Todo funciona con un único snippet de script (embed.js) identificado por tu clave pública, más una lista de dominios permitidos que controla desde dónde se puede usar. Ambos datos están en el panel.
Activalo en el panel y pegá este snippet donde quieras que aparezca el bot en tu sitio:
<script src="https://api.nexogar.com/embed.js" data-nexogar-id="TU_CLAVE_PUBLICA" async></script>
Pensado para capturar leads de una propiedad específica. Configurá el ID de la propiedad en el panel y pegá:
<div id="nexogar-contact-form"></div> <script src="https://api.nexogar.com/embed.js" data-nexogar-id="TU_CLAVE_PUBLICA" async></script>
Muestra tu inventario activo como una grilla. Definí cuántas propiedades mostrar (máx. 24) en el panel:
<div id="nexogar-property-catalog"></div> <script src="https://api.nexogar.com/embed.js" data-nexogar-id="TU_CLAVE_PUBLICA" async></script>
Cada lead nuevo que se genere por tus widgets (o por Nexogar en general) puede reenviarse automáticamente a tu CRM o sistema propio. Configurá la URL de destino en el panel — ahí también vas a ver tu secreto de firma.
Cada envío llega firmado con HMAC-SHA256 en el header X-Nexogar-Signature:
X-Nexogar-Signature: sha256=<hmac_hex>
Para verificarlo en tu servidor (Node.js de ejemplo):
const crypto = require('crypto');
function esFirmaValida(secreto, cuerpoCrudo, header) {
const [, recibida] = header.split('=');
const esperada = crypto.createHmac('sha256', secreto).update(cuerpoCrudo).digest('hex');
return crypto.timingSafeEqual(Buffer.from(esperada, 'hex'), Buffer.from(recibida, 'hex'));
}Importante: la firma se calcula sobre el string JSON crudo que se envía en el body — verificala antes de parsear el JSON, no sobre una versión re-serializada.
Hay dos formas de meter propiedades a Nexogar sin usar el asistente completo de publicación:
En Configuración → Widgets Embebibles, el botón "Subir propiedad" abre un formulario liviano (tipo, operación, título, descripción, ubicación con mapa, precio, medidas, imágenes) que publica la propiedad directamente en tu cuenta, igual que si la hubieras cargado desde el asistente normal.
Si tu web o CRM ya tiene su propio inventario, podés empujarlo hacia Nexogar llamando a este endpoint por cada propiedad nueva o actualizada:
POST https://api.nexogar.com/api/public/widget/TU_CLAVE_PUBLICA/properties
Se autentica exactamente igual que el webhook de leads: firmá el string JSON crudo del body con tu secreto de firma (el mismo que ves arriba, en la sección del webhook) y mandalo en el header:
X-Nexogar-Signature: sha256=<hmac_hex>
Cuerpo de ejemplo (JSON):
{
"externalRef": "mi-crm-12345",
"operacion": "comprar",
"tipo": "departamento",
"titulo": "Departamento moderno de 3 dormitorios en Miraflores",
"descripcion_corta": "Amplio departamento con vista al mar, acabados premium, cocina integrada y balcón...",
"ubicacion": "Av. Malecón de la Reserva 123, Miraflores, Lima",
"latitude": -12.1211,
"longitude": -77.0339,
"precio_soles": 850000,
"precio_dolares": 230000,
"area_total": 120,
"area_ocupada": 110,
"habitaciones": 3,
"banos": 2,
"estacionamiento": true,
"amoblado": false,
"imagenes": [
"https://tusitio.com/fotos/depa-1.jpg",
"https://tusitio.com/fotos/depa-2.jpg"
],
"videoUrl": "https://youtube.com/watch?v=xxxxxxx"
}Ejemplo completo con curl (firmando el body en bash):
BODY='{"externalRef":"mi-crm-12345","operacion":"comprar","tipo":"departamento", ... }'
SECRETO="tu_webhook_secret"
FIRMA=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$SECRETO" | sed 's/^.* //')
curl -X POST "https://api.nexogar.com/api/public/widget/TU_CLAVE_PUBLICA/properties" \
-H "Content-Type: application/json" \
-H "X-Nexogar-Signature: sha256=$FIRMA" \
-d "$BODY"Campos del body:
externalRef (opcional, recomendado) — el ID de la propiedad en tu propio sistema. Si volvés a mandar el mismo externalRef, Nexogar actualiza esa propiedad en vez de crear un duplicado.operacion — "comprar" o "alquiler".tipo — casa, departamento, terreno, local, edificio, oficina, casaplaya, aires, habitacion, deposito o cochera.titulo, descripcion_corta (mínimo 50 caracteres), ubicacion, latitude, longitude — obligatorios.precio_soles/precio_dolares (venta) o precio_mensual/mantenimiento/precio_dolares (alquiler) según operacion.area_total — obligatorio. area_ocupada, habitaciones, banos — obligatorios salvo para terreno, habitacion, aires y cochera.imagenes — array de URLs públicas (no archivos). Se descargan del lado de Nexogar; al menos una tiene que poder descargarse.videoUrl (opcional) — link de YouTube o TikTok.Respuestas:
201 — propiedad creada.200 — propiedad actualizada (cuando el externalRef ya existía).400 — datos inválidos o ninguna imagen pudo descargarse (el mensaje de error indica cuál).401 — firma inválida o ausente.403 — tu plan actual no incluye Widgets Embebibles.Podés ver el historial de sincronizaciones (éxitos y errores) en la misma sección del panel, debajo del endpoint.
El chatbot, formulario y catálogo solo se cargan en los dominios permitidos que agregues en el panel — cualquier otro origen recibe un error de CORS. El webhook de leads y la sincronización de propiedades no dependen del dominio (los llama tu servidor, no un navegador): su seguridad está en la firma HMAC, así que tratá tu secreto de firma como una contraseña y regeneralo desde el panel si sospechás que se filtró.