Saltar al contenido principal
Version: v1.0.0

Webhook de retroalimentación

Le notificamos vía webhook cuando Spot2 Ingestion acepta una propiedad para procesamiento o la rechaza por errores bloqueantes. El webhook es opcional: sus propiedades se procesan igual sin él, pero no recibe retroalimentación automática de aceptación o rechazo.


Endpoint que nos da

Exponga un endpoint HTTP POST que reciba JSON:

POST /api/webhooks/spot2/feedback HTTP/1.1
Host: su-crm.com
Content-Type: application/json
Authorization: Bearer <feedback-token>

Debe responder con cualquier status 2xx cuando procese el webhook correctamente.


Autenticación del webhook

Cada request incluye un token bearer compartido:

Authorization: Bearer <feedback-token>

Para verificarlo:

  1. Extraiga el token del header Authorization.
  2. Compare el token recibido contra el valor acordado.
  3. Si coincide, procese el webhook.
  4. Si no coincide, responda 401 y descarte el request.

Si necesita rotar el token, coordínelo con Spot2 para evitar rechazos durante la transición.


Estados emitidos por Ingestion

Spot2 Ingestion emite solo estados de etapa de ingestión:

EstadoCuándo ocurreCampos
PROCESSINGLa propiedad fue aceptada por Ingestion y enviada al flujo downstream de publicación.external_id, status
REJECTEDLa propiedad no puede continuar por un error bloqueante de mapeo, enriquecimiento, QA, preparación o publicación.external_id, status, messages

Los estados finales del marketplace, como publicado, despublicado o archivado, pertenecen a servicios downstream y no forman parte de este webhook estándar de Ingestion.


Payload PROCESSING

La propiedad fue aceptada para procesamiento. Este estado no significa que ya esté publicada en el marketplace.

{
"external_id": "PROP-001",
"status": "PROCESSING"
}
CampoTipoDescripción
external_idstringIdentificador de la propiedad en su sistema.
statusstringSiempre PROCESSING.

Payload REJECTED

La propiedad no puede continuar por errores bloqueantes. Corrija los datos en su CRM para que se reprocese en un ciclo posterior.

{
"external_id": "PROP-002",
"status": "REJECTED",
"messages": [
"Al menos un precio (renta o venta) debe ser mayor a cero",
"location.latitude y location.longitude son obligatorios",
"contact.name, contact.email y contact.phone son obligatorios",
"No se pudo resolver zip_code_id para el código postal: 00000"
]
}
CampoTipoDescripción
external_idstringIdentificador de la propiedad en su sistema.
statusstringSiempre REJECTED.
messagesstring[]Mensajes legibles con los errores bloqueantes.

messages solo incluye problemas BLOCK. Hallazgos DRAFT y la regla WARN de amenidades no se envían como rechazo en este webhook.


Idioma de los mensajes

Por defecto enviamos mensajes en español. Si necesita mensajes en inglés, podemos configurarlo por integración.


Reintentos

La entrega del webhook es asíncrona. Si su endpoint no responde con 2xx, hacemos hasta 3 intentos totales con backoff:

IntentoEspera aproximada
1Inmediato
210 segundos
330 segundos

Si los reintentos se agotan, abandonamos la entrega y registramos el fallo. Esto no detiene el ciclo de ingestión ni afecta la publicación de la propiedad.


Respuestas esperadas

CódigoCuándo usarlo
2xxWebhook recibido correctamente.
401Token bearer inválido.
429Rate limit temporal. Se reintentará.
5xxError temporal del servidor. Se reintentará.

Seguridad

  • Use HTTPS siempre.
  • Valide el token bearer en cada request.
  • No exponga el feedback_token en logs, código fuente o URLs.
  • Procese el webhook de forma idempotente por external_id y status.