Skip to Content
CoursesSyncGTM 10111 Enriching people

Enriching People

Outcome: verified work emails on your person table, a measured hit rate, and a written policy for catch-alls and misses.

Surface
Sync GTM app and MCP server
Level
Beginner
Uses
enrich_person · find_work_email · verify_email · find_mobile_number
Credits
~15 for 25 people, verified
Prerequisite
Lesson 07's person table

The identifier decides the hit rate

What you send in matters more than which provider answers.

You haveSendExpected hit rate
LinkedIn profile URLThe URLHighest — it is an exact match
Full name + company domainBoth, exactly as spelledGood
Full name + company nameResolve the domain firstPoor until you do
First name only, or a nicknameFix the inputVery poor

Two cheap fixes that lift hit rate more than any provider change:

  • Split combined names. “Dr. Sarah Chen-Williams” should arrive as first Sarah, last Chen-Williams.
  • Use the operating domain, not the parent. Enriching against a holding company’s domain misses nearly everyone.

Find, then verify — two steps

Find the address

A waterfall queries providers in turn and stops at the first usable result. You are billed for the result, not for each attempt. See Find work email.

Verify the address

A separate, cheap check that says whether the mailbox exists. Statuses: valid, invalid, catch-all, unknown. See Verify email.

Only valid counts as found

An unverified address is a guess. Counting guesses as hits inflates your numbers and shows up later as a bounce rate that damages your sending domain.

Never send to an unverified list to “test deliverability”. A bounce rate above about 5% is enough to get a sending domain filtered, and the recovery takes weeks during which every campaign underperforms for reasons that look like copy.


Reading your hit rate

After the run, compute: rows with a valid email ÷ rows attempted.

Hit rateWhat it meansWhat to do
75–90%Healthy corporate B2B listNothing
55–75%Normal for a mixed listAcceptable; check the misses for input errors
30–55%Hard segment — SMB, local, non-English marketsAdd mobile or LinkedIn as the contact path
Under 30%Input problem, not coverageCheck domains and name splitting before anything else

Always read ten misses by hand. On a first run, most of them are input errors — wrong domain, parent company, a person who left — and each one is a fix that lifts every future run.


Catch-alls

A catch-all domain accepts mail to any address, so verification cannot confirm the specific mailbox. Pick a policy and write it down:

  1. Drop them — safest, loses real people.
  2. Separate, low-volume sequence on a secondary sending domain — the sensible default.
  3. Send normally — only with a small catch-all share and a healthy sender reputation.

Titles, and when they are wrong

Enriching the current role matters as much as the email. An imported list’s job titles are as old as the file.

  • Re-check the title on any imported row before using it in copy.
  • If the person has moved on, that is not a dead row — it is a job change signal, and the warmest one you can get.
  • Titles from enrichment are the company’s language. Use them verbatim in copy rather than your internal category name.

Mobile numbers

find_mobile_number costs more than email and has lower coverage. Worth it in three cases:

  • High-value accounts where a call is the intended motion
  • Segments with poor email coverage — local business, SMB, some regions
  • A late-stage follow-up on someone who engaged and went quiet

Not worth it as a default column on every row. Gate it on a score or on deal value, and check the calling rules in your target market before you use it.


Do this now

Check your inputs

Names split, domains normalized, LinkedIn URLs present where available.

Run on five rows

Find email, then verify. Read every result and status.

Check the five by hand

Do the addresses match the domain pattern the company actually uses?

Widen to the person table

Run across all rows, then verify all results.

Compute hit rate

Valid ÷ attempted. Write it down; it is your baseline.

Read ten misses

Fix input errors, re-run just those rows.

Set the catch-all policy

And apply it as a filter before export.


Check your work

  • Every email has a verification status
  • Only valid rows are counted as contactable
  • You have a hit rate figure computed against rows attempted
  • Ten misses were inspected for input errors
  • Catch-all policy is written and applied

Where this breaks

The costly mistake is enriching the entire table before qualifying it. Person-level enrichment is the most expensive column in the course, and on an ungated table most of that spend lands on companies you would have dropped. If you skipped the qualification filter in lesson 06 to get to contacts faster, go back — the filter is free and this column is not.


Further automation

Verification decays. An address valid today can be dead in six months, and re-verifying an entire list quarterly is expensive. The cheaper pattern is to re-verify only on bounce, plus a scheduled job-change check that tells you which people moved — then re-enrich only those. CRM Enrichment builds exactly that loop.


Next lesson

12 — Enriching companies, the cheaper half of the enrich stage and the one that should run first.

Reference for this lesson: Find work email, Verify email, find_mobile_number, Waterfall Enrichment.