Spring til hovedindhold

Hvorfor bruge webhooks?

Webhooks lader resultaterne komme til dig, i stedet for at du gentagne gange spørger efter dem. I stedet for at polle et GET-endpoint, indtil en søgning er færdig, sender Enrow hvert resultat til din server i det øjeblik, det er klar — hvilket sparer requests, reducerer latens og holder din kode enkel. Stop med at spilde requests — lad resultaterne komme til dig. Fordi hvert Enrow-endpoint er asynkront, er webhooks den anbefalede måde at modtage resultater på på tværs af Email Finder, Email Verifier og Phone Finder. Webhooks omgår også rate limits helt, eftersom Enrow ringer til dig i stedet for omvendt.

Hvordan fungerer et webhook-flow?

Et webhook-flow forvandler en enkelt søgeforespørgsel til en automatisk levering. Du fortæller Enrow, hvor resultaterne skal sendes hen, og Enrow klarer resten:
  1. Du sender en POST med en søgeforespørgsel med en webhook-URL i settings
  2. Enrow returnerer et søge-ID med det samme
  3. Enrow behandler søgningen i baggrunden
  4. Når den er færdig, sender Enrow resultaterne med POST til din webhook-URL

Hvordan opsætter jeg en webhook?

Du kan registrere en webhook på to måder, afhængigt af om du vil bruge den til én søgning eller hver søgning:
  1. Per request: Inkluder en webhook-URL i settings-objektet i ethvert API-kald
  2. Globalt: Konfigurer en standard-webhook fra integrationssiden på dashboardet
{
  "fullname": "Dwight Schrute",
  "company_domain": "dundermifflin.com",
  "settings": {
    "webhook": "https://your-app.com/webhooks/enrow"
  }
}
Din webhook-URL skal være et gyldigt HTTPS-endpoint, der returnerer en 200-statuskode.

Hvilke events udløser et webhook-kald?

Seks typer events kan udløse et webhook-kald, én per endpoint og søgetype:
EventDescription
single_search_finishedEn enkelt e-mailsøgning er afsluttet
bulk_search_finishedEn bulk-e-mailsøgning er afsluttet
verification_finishedEn enkelt e-mailverifikation er afsluttet
bulk_verification_finishedEn bulk-e-mailverifikation er afsluttet
single_phone_search_finishedEn enkelt telefonsøgning er afsluttet
bulk_phone_search_finishedEn bulk-telefonsøgning er afsluttet

Hvordan ser en webhook-payload ud?

Webhook-payloaden afhænger af endpointet, og om søgningen var enkelt eller bulk. Enkelte søgninger leverer det fulde resultat direkte, mens bulk-søgninger leverer en færdigmeldings-notifikation, som du følger op på med en GET-forespørgsel.

Email Finder — Single

For enkelte søgninger modtager du det fulde resultat direkte i webhook-notifikationen. Dette fjerner behovet for at udføre en GET-forespørgsel.
{
  "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 — Bulk

For bulk-søgninger modtager du en notifikation om, at batchen er færdig. Kald derefter endpointet GET /email/find/bulk med id for at hente resultaterne.
{
  "event": "bulk_search_finished",
  "id": "910f3e13-b2bf-442d-ab0b-4cf44dfrij84fjrt",
  "credits": {
    "cost": 2284
  }
}

Email Verifier — Single

Det fulde resultat er inkluderet direkte — ingen GET-forespørgsel nødvendig.
{
  "event": "verification_finished",
  "id": "910f3e13-b2bf-442d-ab0b-4cf44dfrij84fjrt",
  "email": "pam.beesly@dundermifflin.com",
  "qualification": "valid",
  "custom": "your_custom_data"
}

Email Verifier — Bulk

Dette er kun en notifikation. Kald GET /email/verify/bulk med id for at hente resultaterne.
{
  "event": "bulk_verification_finished",
  "id": "910f3e13-b2bf-442d-ab0b-4cf44dfrij84fjrt",
  "credits": {
    "cost": 386.25
  }
}

Phone Finder — Single

Det fulde resultat er inkluderet direkte — ingen GET-forespørgsel nødvendig.
{
  "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 — Bulk

Dette er kun en notifikation. Kald GET /phone/bulk med id for at hente resultaterne.
{
  "event": "bulk_phone_search_finished",
  "id": "910f3e13-b2bf-442d-ab0b-4cf44dfrij84fjrt"
}

Hvordan adskiller enkelte og bulk-webhooks sig?

Webhooks for enkelte søgninger indeholder det komplette resultat, så der er ikke behov for ekstra kald. Webhooks for bulk-søgninger signalerer kun, at batchen er færdig — derefter henter du resultaterne med det tilsvarende GET-endpoint.
TypeSingle searchesBulk searches
PayloadFuldt resultat inkluderetKun notifikation (ID + credits)
GET nødvendig?NejJa — brug GET-endpointet med id
For enkelte søgninger indeholder webhooken alt, hvad du har brug for. For bulk-søgninger fortæller webhooken dig, at batchen er færdig — derefter henter du resultaterne.

Hvad er best practices for webhook-endpoints?

Et pålideligt webhook-endpoint svarer hurtigt, accepterer kun HTTPS og tolererer en lejlighedsvis dublet. Følg disse praksisser for at holde leveringer pålidelige:
Behandl webhook-payloads asynkront. Returnér en 200 med det samme, og håndtér derefter dataene i et baggrundsjob.
Brug altid HTTPS-endpoints. HTTP-webhooks vil blive afvist.
I sjældne tilfælde kan webhooks blive leveret mere end én gang. Brug id-feltet til at deduplikere.
Send custom-data med i dine requests for at identificere, hvilken record et webhook-resultat hører til:
{
  "fullname": "Dwight Schrute",
  "company_domain": "dundermifflin.com",
  "custom": { "crm_id": "lead_001" }
}
custom-feltet returneres uændret i webhook-payloaden.

Skal jeg bruge webhooks eller polling?

Brug webhooks til produktion og polling kun til hurtig prototyping eller fejlfinding. Webhooks leverer resultater i realtid uden at forbruge din request-kvote, mens polling foretager gentagne GET-kald, der tæller mod dine rate limits.
WebhooksPolling (GET)
LatensRealtidAfhænger af poll-interval
API-kald0 (Enrow ringer til dig)Flere kald per søgning
Påvirkning af rate limitIngenForbruger kvote
KompleksitetKræver opsætning af endpointEnklere at implementere
Vi anbefaler webhooks til produktionsbrug. Brug kun polling til hurtig prototyping eller fejlfinding.

FAQ

Nej. Webhooks forbruger ikke yderligere credits — du betaler kun for selve søgningen. Credit-omkostningen rapporteres i credits.cost-feltet i payloaden. Se Credits og fakturering for omkostninger per endpoint.
Din webhook-URL skal være et gyldigt HTTPS-endpoint, der returnerer en 200-statuskode. Hvis din server ikke kan nås eller svarer med en anden status, behandles leveringen som mislykket. Som reserveløsning kan du altid hente resultater ved at polle det relevante GET-endpoint med søgningens id.
Brug id fra søgesvaret, eller send et custom-objekt med i din request — det returneres uændret i webhook-payloaden, så du kan mappe resultater tilbage til dine egne records, såsom et CRM-lead-ID.
De mest almindelige årsager er en URL, der ikke er HTTPS, et endpoint, der ikke returnerer 200, eller en server, der timer ud. Bekræft, at dit endpoint er offentligt tilgængeligt over HTTPS. For bredere fejlfinding, se Fejlhåndtering og Statuskoder.

Næste skridt

Find en e-mail

Send en webhook-URL med i settings for at få resultatet leveret automatisk.

Hent bulk-resultater

Hent batch-resultater, efter at en bulk_search_finished-webhook er udløst.

Autentificering

Sådan sender du din API-nøgle i x-api-key-headeren.

Rate limits

Se hvorfor webhooks undgår den request-kvote, som polling forbruger.