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.