# Lead enrichment and contact information

URL: https://useembers.com/help/outreach/lead-enrichment-and-contact-info/
Category: Outreach
Plan: Solo and above
Updated: 2026-09-12
Last verified: 2026-09-12

> When Embers already has an email or phone for a lead, where those fields appear, and what the source and confidence values on them mean.

Some leads carry an email or a phone number. Embers does not guess them and does not attach them to every lead: contact information appears only after that lead has been enriched, and only on a paid plan.

> **Warning: Solo and above**
>
> Contact information is a Solo and above capability. On Free the lookup returns a plan error rather than silently empty fields, and webhook payloads leave the `contact` key out entirely.

## When Embers has contact information

Two conditions have to hold at once:

1. The account is on **Solo or above**.
2. The lead has already been **enriched**, meaning a lookup ran against that person and stored a result.

Enrichment happens when you open a lead and Embers fetches their extended profile, and when you ask for contact information on the lead detail. Results are cached for **30 days**. Inside that window the stored values are reused; after it, the next request runs a fresh lookup.

> **Note: Deliveries never start a lookup**
>
> Slack messages, HubSpot writes, CSV exports, and webhooks all copy the same stored fields. None of them triggers an enrichment call, so a lead that has never been enriched leaves those fields empty everywhere.

## The fields

Every surface uses the same object, so the values line up wherever you read them.

| Field | What it is |
| --- | --- |
| `email` | The stored email, or empty when there is none |
| `phone` | The stored phone number, or empty |
| `enriched_at` | When the contact lookup last ran |
| `last_verified_at` | Same timestamp, kept for consumers that expect the name |
| `included` | True only when an email or a phone is actually stored |
| `source` | Which provider returned the result: `harvest` or `apify` |
| `confidence` | The provider's email status when it gave one: `safe`, `verified`, or `risky` |
| `status` | `ready`, `pending`, `failed`, or `unavailable` |

`source` tells you which lookup path produced the record. `confidence` is passed through from the provider rather than computed by Embers, so treat `risky` as a reason to verify before you use the address, and treat a blank value as "the provider did not say".

## Where the fields appear

**Lead detail**

The contact card on the lead detail shows the email and the phone with a copy button on each, and prints the source underneath. While a lookup is running it shows a waiting state. When nothing came back it says so plainly instead of showing blanks.

**CSV export**

The [CSV export](/help/integrations/csv-export/) adds six columns at the end of each row: **Email**, **Phone**, **Contact Enriched At**, **Contact Source**, **Contact Confidence**, and **Contact Included**.

**HubSpot**

[HubSpot](/help/integrations/hubspot/) contacts are created or updated with `email` and `phone` taken from the stored values, alongside first name, last name, job title, company, and the LinkedIn URL.

**Slack**

The [Slack](/help/integrations/slack/) lead card carries a contact row, but only when a stored email or phone exists. Otherwise the row is left out.

**Webhooks**

Signed [webhook payloads](/help/integrations/webhook-payload-reference/) carry `lead.contact` with all eight fields above. Missing values are `null` and are never invented. On Free the `contact` key is absent rather than empty.

One exception worth knowing: the public branded client feed used by agency workspaces omits contact fields completely, whatever the plan.

## Troubleshooting

- **"No contact info found".** The lookup ran and the provider returned nothing for that profile. Not every person has a discoverable email.
- **"Contact lookup isn't available".** No contact provider is configured for the environment. Nothing you can change from the app.
- **A lookup stays pending.** Requests are locked while in flight so two clicks do not run two lookups. Give it a moment and reopen the lead.
- **The CSV columns are empty for most rows.** Expected. Only enriched leads have values, so a freshly exported list of new leads will be mostly blank.

## Related

- [CSV export](/help/integrations/csv-export/): Every column in the export, including the contact ones.

- [Webhook payload reference](/help/integrations/webhook-payload-reference/): Where `lead.contact` sits in the envelope.

- [Plans and limits](/help/account-and-billing/plans-and-limits/): What each plan includes.

## Frequently asked questions

**Does a webhook or a Slack message trigger a contact lookup?**

No. Deliveries copy values that are already stored on the lead. Only the lead detail screen starts a lookup.

**Why is the contact row missing from a Slack card?**

Nothing is stored for that lead yet. Embers leaves the row out rather than showing an empty placeholder.
