Saltar al contenido principal

¿Por qué usar webhooks?

Los webhooks permiten que los resultados lleguen a ti en lugar de tener que pedirlos una y otra vez. En vez de consultar un endpoint GET hasta que una búsqueda termine, Enrow envía cada resultado a tu servidor en el momento en que está listo, lo que ahorra solicitudes, reduce la latencia y mantiene tu código simple. Deja de desperdiciar solicitudes: que los resultados lleguen a ti. Como cada endpoint de Enrow es asíncrono, los webhooks son la forma recomendada de recibir resultados en Email Finder, Email Verifier y Phone Finder. Los webhooks también evitan por completo los límites de tasa, ya que es Enrow quien te llama y no al revés.

¿Cómo funciona un flujo de webhook?

Un flujo de webhook convierte una sola solicitud de búsqueda en una entrega automática. Le indicas a Enrow dónde enviar los resultados y Enrow hace el resto:
  1. Haces un POST con una solicitud de búsqueda que incluye una URL de webhook en los settings
  2. Enrow devuelve un ID de búsqueda de inmediato
  3. Enrow procesa la búsqueda en segundo plano
  4. Cuando termina, Enrow envía los resultados mediante POST a tu URL de webhook

¿Cómo configuro un webhook?

Puedes registrar un webhook de dos maneras, según si lo quieres para una búsqueda o para todas:
  1. Por solicitud: Incluye una URL de webhook en el objeto settings de cualquier llamada a la API
  2. Global: Configura un webhook predeterminado desde la página de integraciones del panel
{
  "fullname": "Dwight Schrute",
  "company_domain": "dundermifflin.com",
  "settings": {
    "webhook": "https://your-app.com/webhooks/enrow"
  }
}
Tu URL de webhook debe ser un endpoint HTTPS válido que devuelva un código de estado 200.

¿Qué eventos activan una llamada de webhook?

Seis tipos de eventos pueden activar una llamada de webhook, uno por endpoint y tipo de búsqueda:
EventoDescripción
single_search_finishedUna búsqueda de un solo email ha finalizado
bulk_search_finishedUna búsqueda masiva de emails ha finalizado
verification_finishedUna verificación de un solo email ha finalizado
bulk_verification_finishedUna verificación masiva de emails ha finalizado
single_phone_search_finishedUna búsqueda de un solo teléfono ha finalizado
bulk_phone_search_finishedUna búsqueda masiva de teléfonos ha finalizado

¿Qué aspecto tiene un payload de webhook?

El payload del webhook depende del endpoint y de si la búsqueda fue individual o masiva. Las búsquedas individuales entregan el resultado completo directamente, mientras que las búsquedas masivas entregan una notificación de finalización que debes complementar con una solicitud GET.

Email Finder — Individual

En las búsquedas individuales, recibes el resultado completo directamente en la notificación del webhook. Esto elimina la necesidad de realizar una solicitud GET.
{
  "event": "single_search_finished",
  "id": "910f3e13-b2bf-442d-ab0b-4cf44dfrij84fjrt",
  "credits": {
    "cost": 1
  },
  "result": {
    "email": "dwight.schrute@dundermifflin.com",
    "qualification": "valid",
    "custom": "your_custom_data",
    "info": {
      "company_domain": "dundermifflin.com",
      "fullname": "Dwight Schrute",
      "firstname": "Dwight",
      "lastname": "Schrute"
    }
  }
}

Email Finder — Masivo

En las búsquedas masivas, recibes una notificación de que el lote ha finalizado. Luego llama al endpoint GET /email/find/bulk con el id para recuperar los resultados.
{
  "event": "bulk_search_finished",
  "id": "910f3e13-b2bf-442d-ab0b-4cf44dfrij84fjrt",
  "credits": {
    "cost": 2284
  }
}

Email Verifier — Individual

El resultado completo se incluye directamente: no se necesita ninguna solicitud GET.
{
  "event": "verification_finished",
  "id": "910f3e13-b2bf-442d-ab0b-4cf44dfrij84fjrt",
  "email": "pam.beesly@dundermifflin.com",
  "qualification": "valid",
  "custom": "your_custom_data"
}

Email Verifier — Masivo

Esto es solo una notificación. Llama a GET /email/verify/bulk con el id para recuperar los resultados.
{
  "event": "bulk_verification_finished",
  "id": "910f3e13-b2bf-442d-ab0b-4cf44dfrij84fjrt",
  "credits": {
    "cost": 386.25
  }
}

Phone Finder — Individual

El resultado completo se incluye directamente: no se necesita ninguna solicitud GET.
{
  "event": "single_phone_search_finished",
  "id": "910f3e13-b2bf-442d-ab0b-4cf44dfrij84fjrt",
  "credits": {
    "cost": 50
  },
  "result": {
    "number": "+15705551234",
    "params": {
      "linkedin_url": "https://www.linkedin.com/in/michael-scott"
    },
    "qualification": "found"
  }
}

Phone Finder — Masivo

Esto es solo una notificación. Llama a GET /phone/bulk con el id para recuperar los resultados.
{
  "event": "bulk_phone_search_finished",
  "id": "910f3e13-b2bf-442d-ab0b-4cf44dfrij84fjrt"
}

¿En qué se diferencian los webhooks individuales y masivos?

Los webhooks de búsqueda individual contienen el resultado completo, por lo que no se necesita ninguna llamada adicional. Los webhooks de búsqueda masiva solo indican que el lote ha terminado: luego recuperas los resultados con el endpoint GET correspondiente.
TipoBúsquedas individualesBúsquedas masivas
PayloadResultado completo incluidoSolo notificación (ID + créditos)
¿Se necesita GET?NoSí, usa el endpoint GET con el id
En las búsquedas individuales, el webhook contiene todo lo que necesitas. En las búsquedas masivas, el webhook te indica que el lote ha terminado y luego recuperas los resultados.

¿Cuáles son las mejores prácticas para los endpoints de webhook?

Un endpoint de webhook fiable responde rápido, acepta solo HTTPS y tolera algún duplicado ocasional. Sigue estas prácticas para que las entregas sean confiables:
Procesa los payloads de los webhooks de forma asíncrona. Devuelve un 200 de inmediato y luego maneja los datos en una tarea en segundo plano.
Usa siempre endpoints HTTPS. Los webhooks HTTP serán rechazados.
En casos poco frecuentes, los webhooks pueden entregarse más de una vez. Usa el campo id para eliminar duplicados.
Pasa datos en custom en tus solicitudes para identificar a qué registro pertenece el resultado de un webhook:
{
  "fullname": "Dwight Schrute",
  "company_domain": "dundermifflin.com",
  "custom": { "crm_id": "lead_001" }
}
El campo custom se devuelve tal cual en el payload del webhook.

¿Debo usar webhooks o polling?

Usa webhooks en producción y polling solo para prototipado rápido o depuración. Los webhooks entregan resultados en tiempo real sin consumir tu cuota de solicitudes, mientras que el polling realiza llamadas GET repetidas que cuentan para tus límites de tasa.
WebhooksPolling (GET)
LatenciaEn tiempo realDepende del intervalo de consulta
Llamadas a la API0 (Enrow te llama)Varias llamadas por búsqueda
Impacto en el límite de tasaNingunoConsume cuota
ComplejidadRequiere configurar un endpointMás simple de implementar
Recomendamos los webhooks para uso en producción. Usa polling solo para prototipado rápido o depuración.

FAQ

No. Los webhooks no consumen créditos adicionales: solo pagas por la búsqueda en sí. El costo en créditos se informa en el campo credits.cost del payload. Consulta Créditos y facturación para ver los costos por endpoint.
Tu URL de webhook debe ser un endpoint HTTPS válido que devuelva un código de estado 200. Si tu servidor es inaccesible o responde con otro estado, la entrega se considera fallida. Como alternativa, siempre puedes recuperar los resultados consultando el endpoint GET correspondiente con el id de la búsqueda.
Usa el id de la respuesta de búsqueda, o pasa un objeto custom en tu solicitud: se devuelve tal cual en el payload del webhook para que puedas mapear los resultados con tus propios registros, como el ID de un lead de tu CRM.
Las causas más comunes son una URL que no es HTTPS, un endpoint que no devuelve 200 o un servidor que agota el tiempo de espera. Confirma que tu endpoint sea accesible públicamente a través de HTTPS. Para una resolución de problemas más amplia, consulta Manejo de errores y Códigos de estado.

Próximos pasos

Buscar un email

Pasa una URL de webhook en settings para recibir el resultado de forma automática.

Obtener resultados masivos

Recupera los resultados del lote después de que se dispare un webhook bulk_search_finished.

Autenticación

Cómo pasar tu clave de API en la cabecera x-api-key.

Límites de tasa

Descubre por qué los webhooks evitan la cuota de solicitudes que consume el polling.