CRM enrichment is a lookup, not a migration

Enrichment gets sold as a one-time project: buy data, append it, done. But an appended field is a copy, and a copy starts ageing the moment it lands in the record. Most enrichment damage is not missing data - it is data that used to be true.

The two shapes

Enrichment at request timeBulk backfill
When the value is producedThe moment you need itOnce, at project time
Age of the value at useSecondsUnknown - nobody stamps it
Cost modelPer contact requestedPer seat, whether you use it or not
Failure modeA request that returns nothingA full field that is wrong
What you end up owningA callA second database to maintain

Where enrichment actually goes wrong

What to write back - and what to leave out

Write back only what you act on, and stamp it:

  1. The verified state - valid, invalid or unknown. Not "has email", which is not a state anyone can act on.
  2. The moment it was verified. A state without a timestamp is a rumour.
  3. Where the address came from - the page or profile it was found on. This is what lets a human sanity-check a row that looks odd.

Leave out the rest. A job title you never target, a phone number nobody calls and a company size that only the sales deck uses are payload, not data - and every one of them is another stale field to defend in a review.

One call, three outputs

TAPAC is built for the lookup shape. A search returns the contact, the source it was found in, and its SMTP state as of that call, verified inside the same request - so the value you paste into the record already carries its own provenance. There is no stored mailbox on our side and no bulk file to keep in sync.

npx -y @tapacapi/mcp        # or hosted https://tapacapi.com/mcp
# tapac_find_contacts -> contact + source + SMTP state, in one response
# REST: POST https://tapacapi.com/v1/contacts/search
Practically: enrich when the sequence is about to run, not when the record is created. The send is the only moment the value has to be true.

The three states, applied to a CRM

StateWhat to do in the CRM
validContactable now. Store the timestamp next to it.
invalidSuppress, do not delete. The address may belong to a successor with a similar name - the record still tells you something.
unknownRoute to a human-review bucket. Catch-all domains accept everything, so this is not a yes and not a no.
← Back to TAPAC