Overview
Since all Enrow endpoints are asynchronous, webhooks are the recommended way to receive results. Instead of polling the GET endpoint, Enrow sends the results directly to your server the second a search completes.How It Works
- You POST a search request with a
webhookURL in thesettings - Enrow returns a search ID immediately
- Enrow processes the search in the background
- When complete, Enrow POSTs results to your webhook URL
Setup
You can set up webhooks in two ways:- Per-request: Include a
webhookURL in thesettingsobject of any API call - Global: Configure a default webhook from the integrations page on the dashboard
Webhook Events
Six types of events can trigger a webhook call:| Event | Description |
|---|---|
single_search_finished | A single email search has finished |
bulk_search_finished | A bulk email search has finished |
verification_finished | A single email verification has finished |
bulk_verification_finished | A bulk email verification has finished |
single_phone_search_finished | A single phone search has finished |
bulk_phone_search_finished | A bulk phone search has finished |
Webhook Payloads
Email Finder — Single
For single searches, you receive the full result directly in the webhook notification. This removes the need to perform a GET request.Email Finder — Bulk
For bulk searches, you receive a notification that the batch is finished. Then call the GET /email/find/bulk endpoint with theid to retrieve results.
Email Verifier — Single
Full result included directly — no GET request needed.Email Verifier — Bulk
Notification only. Call GET /email/verify/bulk with theid to retrieve results.
Phone Finder — Single
Full result included directly — no GET request needed.Phone Finder — Bulk
Notification only. Call GET /phone/bulk with theid to retrieve results.
Single vs Bulk Behavior
| Type | Single searches | Bulk searches |
|---|---|---|
| Payload | Full result included | Notification only (ID + credits) |
| GET needed? | No | Yes — use the GET endpoint with the id |
For single searches, the webhook contains everything you need. For bulk searches, the webhook tells you the batch is done — then you fetch the results.
Best Practices
Return 200 Quickly
Return 200 Quickly
Process webhook payloads asynchronously. Return a
200 immediately, then handle the data in a background job.Use HTTPS
Use HTTPS
Always use HTTPS endpoints. HTTP webhooks will be rejected.
Handle Duplicates
Handle Duplicates
In rare cases, webhooks may be delivered more than once. Use the
id field to deduplicate.Use Custom Fields
Use Custom Fields
Pass The
custom data in your requests to identify which record a webhook result belongs to:custom field is returned as-is in the webhook payload.Webhooks vs Polling
| Webhooks | Polling (GET) | |
|---|---|---|
| Latency | Real-time | Depends on poll interval |
| API calls | 0 (Enrow calls you) | Multiple calls per search |
| Rate limit impact | None | Consumes quota |
| Complexity | Requires endpoint setup | Simpler to implement |
We recommend webhooks for production use. Use polling only for quick prototyping or debugging.

