Lead enrichment looks up a person and writes the missing fields back onto the contact. Those fields can change the score. It is included with Sales Intelligence, and it does not run until you configure it.

Open Sales → Settings → Enrichment. The delivery method starts at Disabled. Auto-enrich and Run enrichment do nothing in that state. A revenue ops or full-workspace member saves the configuration. A workspace or project admin or member can run a lookup after that. Viewers cannot.

Save one of these, then Save enrichment:

  • Provider API key — Apollo or QuickEnrich. Paste the key. Leave the field blank later to keep the key already saved.
  • Customer HTTP endpoint — SyncGTM, FullEnrich, Clay, or your own stack. The URL must be HTTPS. An auth token is optional. Convertmax sends it as a Bearer token. SyncGTM and FullEnrich do not use a direct API key.

Until that save, the contact score page tells you to configure an endpoint or API key, and the Run enrichment button stays hidden.

What a completed lookup fills in

Convertmax fills a field only when that field is still empty:

  • Name
  • Company
  • Title
  • LinkedIn URL
  • Phone
  • Company domain

The contact score page shows the last run: provider, status, and time. A failure shows the error. Refresh the page after a run. The result is not on the page until the lookup finishes.

A finished lookup sends enrichment.completed and queues a rescore. These signals are then available to scoring rules and the ideal customer profile:

  • LinkedIn profile found
  • Phone number found
  • Company domain found
  • Senior title — the title matches founder, owner, CEO, CMO, VP, director, or the words growth, marketing, or revenue

When it runs

Lookups start only after enrichment is configured. Auto-enrich warm/hot leads is on by default. When a contact enters warm or hot, Convertmax queues a lookup with the workspace’s saved provider.

A lookup is skipped when:

  • The contact has no email, no LinkedIn URL, and no name plus company.
  • The same provider already enriched that contact in the last 30 days.
  • The contact already has a LinkedIn URL, a bio, and either a phone number or a company domain.

You can also open a contact score and choose Run enrichment. Pick the provider in the list. The page says the lookup was queued. Refresh to see the result.

HTTP callback

SyncGTM, FullEnrich, Clay, and a custom endpoint all use this exchange. Apollo and QuickEnrich do not. They return in the same request.

What Convertmax sends

POST to the HTTPS URL you saved. If you set an auth token, it is sent as Authorization: Bearer <token>.

{
  "tenant_id": 123,
  "profile_id": 456,
  "run_id": 789,
  "provider": "fullenrich",
  "contact": {
    "email": "ada@example.com",
    "name": "Ada Lovelace",
    "company": "Example",
    "title": "",
    "website": "",
    "linkedin_url": "",
    "phone": ""
  },
  "callback_url": "https://app.convertmax.io/api/v1/lead-scoring/enrichment/callback/",
  "callback_token": "<token>"
}

provider is the value chosen for that run, such as fullenrich or clay.

What your endpoint sends back

POST the callback_url from that request. Send the callback_token in the X-Lead-Enrichment-Token header.

{
  "tenant_id": 123,
  "profile_id": 456,
  "run_id": 789,
  "provider": "fullenrich",
  "result": {
    "enrichment_status": "completed",
    "name": "Ada Lovelace",
    "company": "Example",
    "title": "VP Sales",
    "linkedin_url": "https://www.linkedin.com/in/example",
    "phone": "+1-555-0100",
    "company_domain": "example.com",
    "website": "https://example.com"
  }
}

result.enrichment_status decides what Convertmax does next:

Status What Convertmax does
completed Writes any empty fields from result, then rescores the contact.
submitted Leaves the lookup running. Fields stay unchanged until a later callback.
failed Stores result.error on the run. Does not rescore.
skipped Stores result.reason or result.error on the run. Does not rescore.

On completed, every person field is optional. Send only the ones the provider returned.