CRM data enrichment for RevOps: fields for what each account actually sends its customers
A field spec RevOps teams can copy: 6 fields for what each account sends its own customers, each with its type, values and update rule. Then the scores and routing that use them, and the data quality rules that keep them true.
Example: one account record in an SMS platform’s CRM after the week’s checks, 9 November 2026
- Email works and texts are off, so the router sends Larkfield to the rep who sells texts, with the opt-in screenshot attached.
- Larkfield is an invented company. Each value links to the email or screenshot behind it.
CRM data enrichment adds outside data to the accounts and contacts in a CRM, usually firmographics, contacts, technographics and intent, so routing and scoring run on facts nobody typed in. For B2B software vendors whose product touches their accounts’ customers, the next fields record what each account sends them: its welcome email, its texts and the platform that sends its email. Obsession keeps what any company shows only to its customers, dated with the email or screenshot, and lands each fact as a CRM field by API, MCP (the standard way AI agents call tools) or a table.
ComparedCRM data enrichment tools comparedGo straight to the comparisonOn this page
- What CRM data enrichment adds today
- What the usual fields leave out
- CRM enrichment fields for account behaviour
- An account scoring model with behaviour fields
- Lead scoring signals by kind of vendor
- Routing when a field changes
- Data quality rules for enrichment fields
- How to fill the fields by hand
- Filling the fields for every account
- CRM data enrichment tools comparedCompared
- Questions about CRM data enrichment
CRM data enrichment is adding outside data to the accounts and contacts in a CRM, so routing, scoring and reps work from facts nobody typed in. Most of it adds 4 kinds of field: firmographics, contacts, technographics and intent.
Some B2B software vendors sell a product that touches what their accounts’ customers see. That covers email and SMS, loyalty and reviews, checkout and payments, help desk and AI support, messaging, identity and onboarding. For their RevOps teams, a fifth set of fields belongs on every account: what the account sends its own customers. The welcome email a new customer gets, the texts after an opt-in and the email platform behind the account’s mail each describe the need the product meets, at that account, this week.
What CRM data enrichment adds today
ZoomInfo’s guide defines CRM data enrichment as “the automated process of merging external data with internal CRM records”, and names the 4 kinds of data it appends:
- Firmographics: industry, headcount, revenue and headquarters, the facts fit scores and territory rules run on.
- Contacts: job title, seniority, direct phone and verified email for the people at each account.
- Technographics: the software a company uses. BuiltWith’s plans page says it tracks more than 128,000 technologies.
- Intent: signs that an account is researching a category. Bombora says it monitors company research activity against 25,300+ topics and scores an account’s last 3 weeks against a 12-week baseline.
The providers describe their own strengths, as of 11 November 2026:
- ZoomInfo describes its data enrichment as “One always-fresh source of truth feeding every system you run on”, sold in custom packages.
- Apollo says it can push “30+ fresh data points” to a CRM automatically, on a schedule or by hand, from data it puts at 240M contacts and 30M companies.
- HubSpot’s own enrichment looks companies up by their domain. Its continuous setting updates enriched records monthly when new data becomes available, and enrichment uses no HubSpot credits.
- Clay includes multi-provider waterfalls on every plan, asking several providers in turn for the same field, and its pricing page says it can find and enrich data from 150+ providers.
- Exa calls itself “The world’s data for AI agents”. Its GTM page offers to “Enrich CRM records with cited sources” from 70M companies and 1B+ people profiles, writing each update to the CRM with a source address. Its Monitors run searches on a schedule, as often as hourly.
Most sales teams use similar data, from contact databases and intent tools to Exa’s search of the public web. So every competitor’s router sees the same headcount, the same installed tools and the same intent spike at the same accounts.
What the usual fields leave out
A technographic field says a tool is installed. It doesn’t say the tool works. An SMS platform’s target can show a text opt-in on its site and never send a text. An email platform’s target can load an email tool on every page while its welcome email has stopped.
Those facts reach a customer of the account: someone who signed up, opted in or left a basket. They sit behind a login wall, any step a site puts between a visitor and what it shows customers. They arrive in an inbox or on a phone, which a crawler has no address for. Exa’s pages don’t describe signing up to the companies it covers or keeping what they send their customers. Obsession vs Exa sets out how the two work side by side.
For a vendor whose product touches its accounts’ customers, those facts are the need itself. A welcome series stopped, a triggered flow never fires after a basket, or texts promised at sign-up never come.
CRM enrichment fields for account behaviour
Six fields cover what an account sends its customers. Create them on the company or account object, never on the contact, because they describe the business. One integration user writes them; routing and scoring read them.
| Field | Type | Values | Update rule | Used by |
|---|---|---|---|---|
| welcome_sent | HubSpot: dropdown selectSalesforce: picklist | YesNoNot checked | No only once the window closes | Fit scoreEmail platform routing |
| texts_live | HubSpot: dropdown selectSalesforce: picklist | YesNoNo opt-in offeredNot checked | Yes on the first text after opt-in | SMS routingFit score |
| sending_platform | HubSpot: single-line textSalesforce: text | Platform named in the email’s headers | Changed only by a newer email | Displacement routingRenewal alerts |
| cart_reminder_live | HubSpot: dropdown selectSalesforce: picklist | YesNoNo basket possibleNot checked | No only once the window closes | Recovery scoreCheckout and SMS routing |
| last_offer_date | HubSpot: date pickerSalesforce: date | Date of the latest code or discount | Moves forward only | Timing scoreLoyalty and offer plays |
| last_checked | HubSpot: date and time pickerSalesforce: date/time | Time of the latest check | Set on every check | Data qualityScore decay |
Give each behaviour field 2 companions. One is a date field for when the value was last confirmed (welcome_sent_seen_on). The other is a URL field linking the email or screenshot behind it (welcome_sent_evidence). The sending_platform field also gets platform_changed_on, the date a newer email first came from a different platform. That date is the one a displacement play or a renewal alert triggers on.
Use a picklist for the yes or no fields, never a checkbox. HubSpot’s single checkbox holds a yes or no value, and Salesforce’s checkbox records a true or false attribute, with reports filtering unchecked boxes as False. An account nobody has checked then reads as No, and the router sends a rep to a gap that may not exist. Not checked is a value of its own.
What each value means
- welcome_sent: Yes when the first email after a sign-up arrives inside the window your team sets, often an hour. No when the window closes with nothing in the inbox or the spam folder. A sign-up form that fails is a finding too, kept with its screenshot.
- texts_live: Yes when a text arrives after the opt-in. No opt-in offered when the site asks for no phone number, which is a different sale from an opt-in that never sends.
- sending_platform: the email platform named in the email’s own headers. DKIM is a signature checked on arrival to prove which company sent an email. Its d= tag names the signing domain, which RFC 6376 defines as the one “claiming responsibility for an introduction of a message into the mail stream”. Under RFC 5321, the receiving server adds a return-path line holding the address from the sender’s MAIL command, where bounces go. When a company sends through an email platform, one of the 2 domains often belongs to the platform.
- cart_reminder_live: Yes when a reminder arrives after a basket is left and checkout stops before payment. No basket possible for accounts that sell by quote or through a sales call.
- last_offer_date: the date of the latest email or text carrying a code, a discount or a free delivery offer. It moves forward only, so an older email that arrives late never rolls it back.
- last_checked: when the account was last read, whatever the result. It tells a score whether the other 5 values are current.
An account scoring model with behaviour fields
HubSpot’s lead scoring tool separates 2 scores. A fit score qualifies records “based on their demographic information through property values”, and an engagement score is built from actions such as form submissions and email opens. Companies can carry either or both. Behaviour fields are property values on the company, so they sit on the fit side. They add what fit criteria rarely hold: the gap the product fills at that account, seen this week.
A workable account scoring model keeps 3 parts apart, so a rep can see why an account scored:
- Fit: firmographics and technographics, from enrichment.
- Need: behaviour fields, from what the account sends its customers.
- Timing: intent, hiring and news, plus platform_changed_on and last_offer_date.
| Rule | Points | What it means |
|---|---|---|
| texts_live is No and welcome_sent is Yes | +30 | Email works, texts are off |
| platform_changed_on in the last 30 days | +20 | A new email platform, so the stack is open |
| texts_live is No opt-in offered | +15 | No phone capture yet, a longer sale |
| last_offer_date in the last 14 days | +10 | Running promotions now |
| last_checked older than 14 days | Need points count 0 | Stale values never route |
Lead scoring signals by kind of vendor
The same 6 fields score differently for an email platform, a loyalty vendor or a help desk, and each can add a field for its own product. Buying signals examples for SDR managers lists the wider set of signals these fields sit beside.
| Kind of vendor | Fields that score | Example routing rule |
|---|---|---|
| Email platform | welcome_sent: Nocart_reminder_live: No | Both No: to an account executive that day |
| SMS and messaging | texts_live: Nowelcome_sent: Yes | Email on, texts off: SMS specialist |
| Loyalty and reviews | last_offer_datesending_platform | Offers every week: loyalty pitch |
| Checkout and payments | cart_reminder_liveAdded: checkout_loads | Checkout fails twice: owner alert |
| Help desk and AI support | Added: support_reply_hourslast_checked | Slower than promised: support pitch |
| Identity and onboarding | welcome_sentAdded: signup_form_works | Form fails on a phone: onboarding pitch |
- An SMS platform and larkfield.example: the welcome email arrived 4 minutes after sign-up on 2 November. Texts were opted in the same day and none had come by 9 November. The texts_live field turns No, the need score rises 30 points, and the account routes to the SMS specialist with the opt-in screenshot.
- An email platform and fennick.example: on 6 November its emails start coming from a different platform, with the sender checked, and platform_changed_on is set. For a prospect that is a window while the new setup beds in. For a current customer it is the week its emails start coming from a new platform, which belongs with the renewal owner that day.
- A help desk vendor and tidewell.example: the vendor adds support_reply_hours. A delivery question took 31 hours to answer against the 24 its help page promises, so the account reaches its account executive with the thread attached.
Routing when a field changes
A behaviour field earns its place when its change moves an account. HubSpot workflows can enrol a record when a property value changes, and Salesforce’s record-triggered flows run when a record is updated, so set the triggers on the companion dates and the values together:
- welcome_sent turns No at an open opportunity: attach the screenshot to the opportunity, so the account executive opens the next call on it.
- platform_changed_on is set: for a prospect, a sequence about the move; for a customer, a call before the renewal. Churn risk indicators for customer success covers the customer side.
- texts_live moves from Yes to No at a customer: a task for the account manager, with the evidence link.
- last_checked goes stale: take the account out of behaviour-based routing until it is read again.
Sales trigger events examples sets out the plays for each change, and Clay signals for GTM engineers shows the same facts as a column in Clay, with routing on change.
Data quality rules for enrichment fields
- One writer. The integration user writes behaviour fields. Reps read them, and a rep’s view goes in a note, never in the value.
- Not checked is never No. An empty value means nobody looked, and routing ignores it.
- No waits for the window. A welcome email that hasn’t arrived 10 minutes after sign-up counts as late until the window your team set closes.
- Every value carries its date and its evidence. The seen-on date and the evidence link travel with the value, so a rep opens the email before quoting it to a buyer.
- Newer evidence wins. The last_offer_date field moves forward only, and sending_platform changes only on a newer email.
- Keep the history. Write each change as a dated entry on the account’s timeline or in a history table, so a score can be rebuilt as it stood on any date. That is point-in-time data, and it can’t be collected later, because last month’s email sits only in the inbox that received it.
- Stale values decay. After 14 days without a check, need points fall to 0.
- Match on the domain. Key every account on its root domain, the input HubSpot’s own enrichment uses for companies, so behaviour fields land on the same record as firmographics.
How to fill the fields by hand
A RevOps analyst can set up 10 top accounts in an afternoon, then read the results 2 days later. Each step ends on what a pass looks like.
- Pick the accounts. Start with open opportunities and renewals in the next 90 days. Pass: a list of domains, each with an owner.
- Give each account its own inbox and phone number. Never a rep’s own address, so nothing from one account mixes with another. Pass: one inbox and one number per account.
- Sign up as any customer can. Join the email list, opt in to texts where offered, and leave a basket where the account sells online, stopping before payment. Pass: a timed screenshot of each step.
- Wait out each window. For example 1 hour for the welcome email and 48 hours for texts and the basket reminder. Pass: every inbox, spam folder and phone read at the deadline.
- Read the first email’s headers. Open the original message and note the DKIM d= domain and the return-path domain. Pass: the platform named, with the date.
- Write the values. The 6 fields, each with its date and a link to the screenshot or saved email. Pass: no checked field left empty.
- Repeat every week. Read the inboxes again, record new offers and any change of platform. Pass: last_checked never older than 7 days.
| Accounts | To set up | Each week after |
|---|---|---|
| 5,000 | About 1,670 hours | About 420 hours, 10 people full time |
| 1,000 | About 330 hours | About 83 hours, 2 people full time |
| 300 | About 100 hours | About 25 hours |
By hand also breaks in ways a sheet never shows. Inboxes stop receiving, numbers lapse and sign-up forms change, and a screenshot is the sole record of when an email arrived. It suits a short list of top accounts. A router that scores every account needs the fields kept current every day.
Filling the fields for every account
Obsession collects what companies show only to customers, step by step: their screens, emails and texts, member prices, trial limits, quotes and cancel offers, each dated with a screenshot. Teams and AI agents look up any company through the API or MCP, and a company not yet covered is added on request.
For RevOps, a domain goes in and the behaviour fields come back on the same account record, each value dated with its email or screenshot. They arrive through the API, MCP, a webhook (an address in your app that receives each fact as it lands) or a table such as Clay. Obsession shows the platform behind each email, with its sender checked, and the week that changes. A router can then act the week an account’s emails start coming from a new platform. Account watch puts each change on the account’s record in the CRM every morning. Prospect intelligence does the same for a list of target accounts, and prospect intelligence with Clay shows the facts landing as columns.
Obsession’s agents have run 1,500 sign-ups, baskets and checkouts at real companies, and counting. The sample data is one real store’s record, in every format it comes in.
Start with the accounts in open opportunities, route on texts_live and platform_changed_on for a quarter, and compare them with the rest. That way you can see it in conversion rates from the fields your reps actually use, and in data quality, with every value carrying its date and its proof. Sales intelligence from behind the login shows the same view for every role on a revenue team, with an example for each.
CRM data enrichment tools compared
We make Obsession, so every other option is described from its provider’s own pages as of 11 November 2026.
| Option | What it does well | Price | Where it stops | Best for |
|---|---|---|---|---|
| Doing nothingthe fields already in the CRM | No new setup | No new spend | Routes on size and industry alone | Products that never touch accounts’ customers |
| By handan inbox, a number and a sheet per account | Exact, with an analyst’s judgement | Your team’s hours | About 5 minutes per account a week | A short list of top accounts |
| Contact and company dataZoomInfo, Apollo, HubSpot | Contacts and firmographics on every record | ZoomInfo: custom packagesApollo: Free to Custom plansHubSpot: no credits used | Company and contact facts, as their pages describe | Contacts and fit on every account |
| Waterfall enrichmentClay | Several providers in turn, 150+ in all | Launch from $185 a month, Growth from $495, per its FAQPlan cards show $167 and $446, with a Save 10% toggle | CRM sync on Growth and Enterprise | Teams building their own enrichment logic |
| TechnographicsBuiltWith | Technologies a site runs, more than 128,000 tracked | Basic: $295 a monthPro: $495Team: $995 | What a site has installed | Lists by installed tool |
| IntentBombora | Research activity against 25,300+ topics | Not listed: speak to an expert | Research on B2B sites, as its pages describe | Accounts researching a category now |
| Company data for agentsExa | Firmographics, hiring and tech stack, cited, into the CRM | Lite search: $4 per 1,000$10 free credit a month | Pages don’t describe signed-up accounts | Company research and monitors at agent speed |
| ObsessionOursAccount watch, Prospect intelligence; lookup, facts, notify | What each account shows only to its customers, dated | Early access, onboarding teams now. Priced per call or per company watched | Every step short of paying, at any company you name | Behaviour fields that route and score |
Exa’s Lite price and monthly credit are from its pricing page. Use Obsession for what each account sends and shows its own customers, dated, for every account on the book. For contacts and firmographics, a contact database or HubSpot’s own enrichment. For several sources behind one field, Clay. For installed tools, BuiltWith. For research activity, Bombora. For company research inside an agent, Exa, and an agent that needs both halves calls both.
Questions about CRM data enrichment
CRM data enrichment is adding outside data to the accounts and contacts in a CRM, so routing, scoring and reps work from facts nobody typed in. The usual fields are firmographics, contacts, technographics and intent. For vendors whose product touches their accounts’ customers, a fifth set records what each account sends those customers, such as whether its welcome email arrives and whether its texts are live.
Firmographics and contacts for fit, intent and news for timing, and behaviour fields for need: welcome_sent, texts_live, sending_platform, cart_reminder_live, last_offer_date and last_checked. Make the yes or no fields picklists with a Not checked value, and give each value the date it was seen and a link to its evidence.
It depends on the field. ZoomInfo, Apollo and HubSpot’s own enrichment fill contacts and firmographics, and Clay asks several providers in turn for the same field. BuiltWith fills installed technologies, Bombora fills research intent, and Exa enriches records with cited sources from its company and people data. For what each account shows only to its customers, Obsession fills behaviour fields, each value dated with the email or screenshot.
Keep 3 parts apart so reps can see why an account scored. Fit comes from firmographics and technographics, need from behaviour fields, and timing from intent, news and the dates a behaviour field changed. Set the points from closed-won accounts, and let need points fall to 0 once an account goes 14 days without a check.
Lead scoring signals are the facts a score adds points for. Most are fit facts, such as job title and company size, or engagement, such as form fills and email opens. Behaviour fields add a signal from the account’s own business: a welcome email that stopped, texts never sent after an opt-in, or a new email platform this week.
Let one integration user write the fields, and treat an empty value as not checked. Record No only once the window closes, and give every value its date and evidence link. Let newer evidence win, keep every change as a dated entry, and stop counting values older than 14 days.
An email’s own headers name it. The DKIM signature’s d= tag names the domain that took responsibility for the message, and the return-path holds the bounce address. When a company sends through an email platform, one of the 2 often belongs to it. Obsession shows the platform behind each email, with its sender checked, and the week that changes.
See sample dataSources
In the order the article cites them. Every link was checked on 11 Nov 2026.
- CRM data enrichment: the complete 2026 guide
- Plans
- Intent data
- Pricing
- Data enrichment
- Get started with data enrichment
- Pricing
- Exa home page
- Company data API and CRM enrichment for GTM teams
- Property field types in HubSpot
- Custom field types
- RFC 6376: DomainKeys Identified Mail (DKIM) Signatures
- RFC 5321: Simple Mail Transfer Protocol
- Understand the lead scoring tool
- Pricing