Intempt Docs
Developer Docs

Data Enrichment

How a profile in Intempt gets filled in: what you send, what we derive, and what we buy from third-party providers on your behalf.

Data Enrichment

A profile in Intempt starts as whatever you sent us. Enrichment is everything that happens after that: the fields we derive, the fields we fetch from third-party data providers on your behalf, and the schema that keeps all of it in the same shape no matter which source it came from.

The result is that sarah@acme.com arriving from a web form and the same person arriving from a HubSpot sync land on one profile, in one schema, with company size, funding, tech stack and hiring signals filled in from providers you never had to contract with separately.

First-party and third-party enrichment

Every attribute value in Intempt arrives by one of two families of enrichment service. The distinction is not cosmetic: they differ in cost, in freshness, and in whether your data leaves the project.

First-partyThird-party
Source of the valueData you already ownAn outside data vendor
CostNoneMetered lookups
Data leaves your projectNoYes, for the lookup
AnswersWhat your customers didWho your customers are

First-party enrichment services

ServiceFills in
Out-of-box source schemaA connected platform's objects, on a shape we already defined. Shopify, Stripe, HubSpot, and the SDKs
Derived attributesRFM scores, predictive attributes, calculated attributes you define, identity resolution

Plus anything you send yourself, through an SDK or the Track API. That is not a service so much as the baseline, but it is first-party data and it merges into the same keys.

Third-party enrichment services

ServiceProvider
Person and company enrichmentPeople Data Labs
Phone lookupPeople Data Labs
Key contacts at an accountPeople Data Labs
Email validationZeroBounce
Domain reputationEmailGuard
Company logoLogo.dev, Google favicon
IP geolocationipapi.co, or MaxMind as an enterprise add-on

Intempt holds these contracts, so you get all of them through one integration and one bill. Details, including how lookups are metered, in Third-party enrichment.

The schema layers

Enrichment writes into a fixed set of layers. Each layer has its own set of reserved keys, so a value means the same thing whichever source wrote it.

LayerReserved keysWritten by
Event envelope6Every source, identically
User attributes37You, sources, providers, derivation
Account attributes49You, sources, providers, derivation
Catalog attributes12Product feed or catalog source
Brand attributes34Brand kit

86 reserved user and account attributes, which is the number that matters when you are comparing us to a CDP that gives you a free-text trait bag.

The event envelope

Identical on every event from every source. This is what makes cross-source identity work.

KeyTypeNotes
eventIdstring
profileIdstringThe identity spine
sessionIdstring, nullable
timestamplongUNIX milliseconds, the primary time field
userIdstring, nullableYour own identifier, once known
datarecordThe per-event payload

Only data differs between event types. A PageView from the web SDK carries url, domain, query, path, windowWidth, hash, title and previousPage; a Stripe invoices row carries 112 fields. The envelope around them is the same.

Merging

Every reserved attribute uses a last-write-wins merge strategy. A newer value replaces an older one for that key, whichever path produced it. Enrichment does not silently lose a value you sent yourself, but it will overwrite it if it runs later, so treat provider data and your own data as writing to the same field.

Two timestamps let you see when a provider last touched a profile:

KeyMeaning
last_user_enrichment_timeLast time person enrichment ran
last_account_enrichment_timeLast time company enrichment ran

Where to go next

First-party enrichmentWhat Intempt fills in from data you already own, free
Third-party enrichmentThe external providers, what each fills in, and how lookups are billed
User and account attributesAll 86 reserved keys with types and examples
Source taxonomyEvery source, its collections, and its field counts
Catalog attributesThe 12 product fields, and the 6 that are required

On this page