This workflow enriches the company associated with an email. It does not verify the person’s identity, role, seniority, or employment. Use the People API when you need person-level data.
How it works
Run enrichment in a queue or background worker. CRM webhooks are commonly retried, and a synchronous handler can time out while the Brand lookup is still running.Choose CRM fields
Do not create required CRM fields from optional API fields. Decide which data is informational and which data your team must confirm.
Look up the company
Choose your client for the API request. The PHP tab uses the SDK’s low-level Brand method.Normalize the lookup result
This TypeScript adapter keeps the rest of your CRM integration independent of upstream error shapes:422; treat those as unmatched. Retry 408, 429, server errors, and network failures with a bounded policy. Authentication and input errors need correction before retrying. The worker should also catch fetch failures and record them as retryable.
Patch blank fields only
Make the mapping explicit and preserve anything a rep or another trusted system already entered:undefined fields before sending the patch if your CRM interprets them as clears.
Handle duplicate events
Use the CRM event ID as an idempotency key. If the CRM does not provide one, derive a stable key from the object ID and event timestamp.- Acknowledge the webhook quickly after validating its signature.
- Enqueue the CRM object ID, email, and event ID.
- Skip event IDs already processed.
- Cache matched profiles by normalized
brand.domain, not by the full email address. - Retry transient failures with a bounded exponential backoff and jitter.
- Send permanent misses to a completed state so the webhook is not retried forever.
Add person context when the workflow needs it
Use the People API for a person’s identity and profile, separately from the company Brand lookup. Send additive clues you actually have, such as a work email and a confirmed company domain:People enrichment request body
POST /people/enrich. Handle match.status as candidate or not_found, and review the returned identity match before writing person fields. The People identity match score is distinct from the Brand response, which has no public numeric match score. Neither a company email domain nor a marketing description establishes someone’s current role or employment.
For a candidate, inspect match.person.current_role_status before using current_role. present means a role is populated, none means the available work history shows ended roles, and unknown means the current role could not be confirmed. Do not convert an unknown role into an unemployment claim.
Keep your CRM contact ID and account ID as the durable identities. Domains can help deduplicate company candidates, but subsidiaries, rebrands, and shared domains may need separate account records.
Attach sourced account research
Use selected website pages or structured extraction for public product descriptions, announced updates, or hiring signals. With Extract, use nullable fields andfactCheck: true; preserve the analyzed URLs and verify the supporting page before treating a signal as established.
Keep the research layer separate from the fields your team maintains:
A careers page can support a statement that a role was listed at an observation time. It does not establish a prospect’s budget, buying intent, or current headcount. Label inferences separately and keep failed checks distinct from a signal disappearing.
The resulting account brief can power a personalized sales demo. Context.dev supplies source data; your application joins CRM history, computes an ICP score, and decides when to send outreach.
Keep records useful
- Keep the API key in the worker’s server environment.
- Verify the CRM webhook signature before accepting an event.
- Minimize the email and company data written to logs.
- Record the lookup time and source for fields that may become stale.
- Give reps a way to correct enriched fields.
- Re-enrich on an intentional schedule, not every time a lead record is read.
Retrieve a brand by email
Map work email addresses to company profiles.
Rate limits
Plan throughput and handle rate-limited requests.
API stability
Handle response changes and schema upgrades.
Personalized sales demos
Use reviewed account facts and branding in a prospect-specific preview.