⟨ BLOGPLAYBOOKSCRM OPS

Enrich CRM contacts missing emails → summary

Find verified work emails for every contact your CRM is missing, write them back with a reason on each record, and get a hit-rate summary in your inbox.

PlaybookHubSpotEmail FinderEmail VerificationGmailRUN BY THE PIPELINE AGENT →

The problem this solves

A contact without an email is a row that cannot do anything. Sequences skip it, routing rules pass over it, and every list you build quietly shrinks before it ships. Most teams know roughly how many of these rows they have and still leave them alone, because filling them means export, lookup, paste, and re-import work that nobody owns. It is the classic maintenance job that never makes a sprint: important in aggregate, trivial in any single case, and invisible until a campaign underperforms.

The decay never stops, either. People change roles, companies change domains, and an address that was good last quarter bounces this one. So even a heroic one-time cleanup starts losing value the day it finishes. The economics only work if the find-and-verify loop is cheap enough to run continuously, and manual effort is never that cheap. What teams actually need is a standing process that finds the gap, closes what it can, and is honest about what it could not close.

There is also a trust problem. When someone bulk-patches a CRM by hand, six months later nobody can say which emails were sourced, which were guessed, and which came from the original signup. That ambiguity is how good databases go bad: the next person stops trusting the field and starts working around it. Any fix worth running has to verify before it writes and leave a reason on every record it touches.

How the mission runs

  1. Pull the gap list from HubSpot. The mission starts by querying HubSpot for contacts with an empty or invalid email field, scoped however you set it: lifecycle stage, list membership, owner, or the whole database. It records the starting count so the final summary can state coverage before and after, and it changes nothing during this pass.
  2. Find candidate work addresses. For each contact, Email Finder searches for a work address using the person's name and their company's domain. Where the tool returns multiple candidates, the agent keeps them all at this stage rather than picking one on a hunch; ranking happens after verification, when there is evidence to rank on.
  3. Verify before anything writes. Every candidate passes through Email Verification before it is allowed near your CRM. Addresses that verify cleanly are queued for writing; catch-alls and unverifiable guesses are held out and reported separately. This is the gate that keeps the enrichment from trading one data-quality problem for another.
  4. Write back idempotently, with reasons. Verified addresses are written to HubSpot in a single idempotent pass: re-running the mission never duplicates a write or flips a value back and forth, and every changed record carries a note explaining what was set and on what evidence. Existing emails stay untouched unless you explicitly ask for a re-check.
  5. Send the summary through Gmail. You get an email via Gmail with the hit rate, the count of contacts filled, the addresses that verified as catch-all, and the residue the mission could not resolve. The unresolved list is explicit, so deciding what to do with it - retry next month or archive - takes one glance.

The prompt

This is the exact objective the agent receives. Swap the obvious placeholders for your own domain, segment or channel and run it as-is from the console, Slack, or the API.

⟨ THE MISSION PROMPT · PASTE AND RUN ⟩

Enrich the contacts in my CRM that are missing emails - find and verify work addresses for each - write them back, and send me an email summarizing hit rate and what could not be found.

What comes back

A CRM where the email gap has measurably closed: verified work addresses written back to HubSpot, each changed record annotated with what was added and why, and untouched fields left exactly as they were. In your inbox, a Gmail summary with before-and-after coverage numbers, the verified hit rate, and a plain list of the contacts that stayed unresolved so nothing silently disappears from view.

Make it yours

  • Scope it to a single segment first, such as open-deal contacts or last quarter's signups, to see the hit rate on your own data before committing the whole database.
  • Schedule it monthly so the gap never re-accumulates, with the summary email doubling as a recurring data-quality pulse for the RevOps channel.
  • Flip the write mode to draft: the mission delivers the found-and-verified list for review first, and only writes to HubSpot after you approve it in the thread.

Frequently asked questions

Can this overwrite emails that are already in my CRM?

No. By default the mission only fills empty fields. Records that already hold an email are skipped and counted in the summary, and writes are idempotent, so re-running the playbook never flips values back and forth. If you want existing addresses re-verified or replaced, you say so explicitly in the prompt.

How do I review what changed?

Every changed record in HubSpot carries a note stating what was written and the evidence behind it, and the Gmail summary lists every touched contact. If you prefer a gate before the write, ask for the candidate list first; the mission holds the write until you approve it.

How often should this run?

Monthly is a sensible default for most databases, because new contacts arrive and old addresses decay continuously. Teams with heavy inbound volume often run it weekly on new signups only, keeping the full-database pass as a quarterly sweep. Either way the summary email gives you the trend line over time.

Go deeper

⟨ RUN IT INSTEAD OF READING IT ⟩

This mission runs minutes after signup.

Open a workspace, paste the prompt, and the Pipeline Agent carries it end to end on your plan's monthly credits - evidence attached.

⟨ RELATED PLAYBOOKS ⟩