Enrich · AsyncAPI Specification

Enrich So Webhooks

Version

View Spec View on GitHub Data EnrichmentContact DiscoveryWeb IntelligenceB2B DataLead EnrichmentEmail FinderEmail VerificationPhone NumbersPeople SearchIP IntelligenceLinkedInReference DataMCPAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-14'
method: searched
source: >-
  https://doc.enrich.so/email-validation-per-result-callback-27483213e0 and the nine
  sibling webhook pages listed in https://doc.enrich.so/llms.txt — each page embeds an
  OpenAPI 3.1 `webhooks` fragment, collected into
  openapi/_original/enrich-so-v3-harvested-openapi.yml
provider: Enrich
providerId: enrich-so
description: >-
  Enrich publishes a real, typed webhook surface: ten callbacks covering five batch
  products, each with a per-result callback that fires once per item and a completion
  callback that fires exactly once when the job finishes. Enrich does NOT publish an
  AsyncAPI document, so this is the webhook catalogue rather than an AsyncAPI spec. The
  callbacks ARE, however, declared as OpenAPI 3.1 `webhooks` with full JSON Schemas on
  Enrich's own documentation pages, which is a stronger position than most webhook
  providers — the payload shapes are machine-readable even though the event catalogue is
  not.
asyncapi_published: false
asyncapi_note: >-
  No AsyncAPI document is served anywhere on enrich.so (probed /asyncapi.yaml,
  /asyncapi.json on dev.enrich.so and doc.enrich.so — 404). Not fabricated here.
delivery:
  transport: https-post
  registration: >-
    Per-job, not per-account. There is no webhook management API and no dashboard
    subscription model — you pass an optional `webhookUrl` string in the body of each
    batch submit, and Enrich POSTs to it for that job only.
  registration_field: webhookUrl
  acknowledgement: Return any 2xx to acknowledge receipt.
  retries: not documented
  ordering: not guaranteed (per-result callbacks fire as each item completes)
  signing:
    supported: false
    header: null
    note: >-
      NO payload signature. Enrich documents no signing secret, no HMAC header and no
      timestamp-tolerance rule for any of the ten callbacks, and none of the published
      webhook fragments declares a security scheme on the callback itself. A receiver
      cannot cryptographically verify that a POST came from Enrich, and the payloads
      carry personal data (names, work emails, phone numbers, LinkedIn profiles). Mitigate
      with an unguessable webhookUrl per job plus source-IP allowlisting, and treat the
      body as untrusted until re-fetched from the results endpoint. This is the single
      most consequential gap in the Enrich event surface.
envelope:
  fields:
  - name: event
    description: Event type string.
  - name: timestamp
    description: ISO 8601 UTC timestamp.
  - name: data
    description: Event payload; shape depends on the event.
  - name: batchId
    description: Present on the Company Followers callbacks only.
  inconsistency: >-
    Event naming is not uniform. Eight of the ten events use a "webhook:<thing>.completed"
    prefix, but the two Email Finder / Email Validation COMPLETION events use bare
    "finder.completed" and "validation.completed". A consumer matching on a prefix will
    silently drop the two completion events that matter most.
events:
- name: emailValidationResult
  event: webhook:email_lookup.completed
  operationId: webhookEmailValidationResult
  product: Email Validation
  cardinality: once per email in a batch validation job
  schema: WebhookEmailValidationResult
  docs: https://doc.enrich.so/email-validation-per-result-callback-27483213e0
- name: emailValidationCompletion
  event: validation.completed
  operationId: webhookEmailValidationCompletion
  product: Email Validation
  cardinality: exactly once per batch
  schema: WebhookEmailValidationCompletion
  payload_fields:
  - job_id
  - status
  - total_items
  - successful
  - failed
  - completed_at
  docs: https://doc.enrich.so/email-validation-batch-completion-callback-27483214e0
- name: emailFinderResult
  event: webhook:finder_lookup.completed
  operationId: webhookEmailFinderResult
  product: Email Finder
  cardinality: once per lead in a batch finder job
  schema: WebhookEmailFinderResult
  docs: https://doc.enrich.so/email-finder-per-result-callback-27483215e0
- name: emailFinderCompletion
  event: finder.completed
  operationId: webhookEmailFinderCompletion
  product: Email Finder
  cardinality: exactly once per batch
  schema: WebhookEmailFinderCompletion
  docs: https://doc.enrich.so/email-finder-batch-completion-callback-27483216e0
- name: phoneResult
  event: webhook:phone_result.completed
  operationId: webhookPhoneResult
  product: Phone Finder
  cardinality: once per item (email or profile URL) in a bulk phone job
  schema: WebhookPhoneResult
  docs: https://doc.enrich.so/phone-finder-per-result-callback-27483217e0
- name: phoneCompletion
  event: webhook:phone_completion.completed
  operationId: webhookPhoneCompletion
  product: Phone Finder
  cardinality: exactly once per bulk job
  schema: WebhookPhoneCompletion
  docs: https://doc.enrich.so/phone-finder-batch-completion-callback-27483218e0
- name: reverseLookupResult
  event: webhook:email_result.completed
  operationId: webhookReverseLookupResult
  product: Reverse Email Lookup
  cardinality: once per email in a bulk reverse lookup
  schema: WebhookReverseLookupResult
  docs: https://doc.enrich.so/reverse-lookup-per-result-callback-27483219e0
- name: reverseLookupCompletion
  event: webhook:email_completion.completed
  operationId: webhookReverseLookupCompletion
  product: Reverse Email Lookup
  cardinality: exactly once per bulk job
  schema: WebhookReverseLookupCompletion
  docs: https://doc.enrich.so/reverse-lookup-batch-completion-callback-27483220e0
- name: companyFollowerResult
  event: webhook:company_follower_result.completed
  operationId: webhookCompanyFollowerResult
  product: Company Followers
  cardinality: once per follower profile scraped (100 followers = 100 callbacks)
  schema: WebhookCompanyFollowerResult
  envelope_extra: batchId
  docs: https://doc.enrich.so/company-followers-per-result-callback-27730399e0
  access: approved accounts only
- name: companyFollowerCompletion
  event: webhook:company_follower_completion.completed
  operationId: webhookCompanyFollowerCompletion
  product: Company Followers
  cardinality: exactly once when the scrape finishes (success or failure)
  schema: WebhookCompanyFollowerCompletion
  envelope_extra: batchId
  docs: https://doc.enrich.so/company-followers-completion-callback-27730400e0
  access: approved accounts only
volume_warning: >-
  Per-result callbacks are 1:1 with items. A 500,000-email batch validation job with a
  webhookUrl set will POST your endpoint 500,000 times plus one completion. Size the
  receiver accordingly, or omit webhookUrl and poll the results endpoint instead
  (polling is free).
schemas_source: openapi/_original/enrich-so-v3-harvested-openapi.yml#/webhooks
maintainers:
- FN: Kin Lane
  email: kin@apievangelist.com