Steve Docs

JA

How-To Guides

CRM Field Extraction into HubSpot

Configure playbook fields that Steve extracts from sales calls and writes into HubSpot deal properties, company properties, and call logs

Steve Documentation Team
hubspotcrm-fieldsplaybooksextractionaicall-logpmm

Overview

Steve can listen to a sales call, pull out the values your CRM cares about β€” budget, team size, contract expiry, decision criteria β€” and write them straight into HubSpot. You configure what to extract once, on a playbook, and it applies to every call run against that playbook.

Who it's for: πŸ“£ PMM / sales management configuring playbooks Β· 🎯 Sales Rep benefiting from a CRM that fills itself in.

Where: the Field Extraction and CRM Mapping step when creating or editing a playbook β€” "Configure custom fields to extract from conversations and map to your CRM."

HubSpot has to be connected first. Without it the field editor shows "Please connect your HubSpot account first." Start at Connecting HubSpot.

The four destinations

Each extraction field has a destination that decides where its value lands in HubSpot.

DestinationWhere the value goes
Deal PropertyA specific HubSpot deal property on the deal the call is annotated to.
Call LogCombined with the other call-log fields into a single Call engagement on the deal timeline.
Company PropertyA HubSpot company property on the company matched to the call's participants.
Company Call LogA Call engagement on the company timeline.

Deal destinations need the call annotated to a deal. Company destinations need Steve to resolve a company from the call's contacts β€” it looks up the participants' email addresses in HubSpot and follows them to a company.

Adding a field

The dialog is Add Extraction Field β€” Configure a field to extract from sales calls and map it to your CRM.

  1. CRM β€” pick HubSpot. The badge shows Connected or Not Connected.
  2. Entity Type β€” Deals or Companies. This decides whether Steve offers deal properties or company properties.
  3. Field Destination β€” Deal Property, Call Log, Company Property, or Company Call Log.
  4. HubSpot Field β€” a searchable list of every property in your portal. Select a CRM property to auto-fill field details.
  5. Name and Data Type auto-fill from the property you picked, marked Auto-filled from CRM property. You can still edit the name.
  6. Extract Instructions β€” required. Tell the model how to find this on a call, for example "The annual budget the buyer states for this project, in their own currency."
  7. Add Field.

Refresh Fields re-fetches the property list from HubSpot β€” use it after creating a property in HubSpot in another tab. A toast confirms "HubSpot fields refreshed successfully".

Property-first is deliberate. Choosing the HubSpot property before the name and type means the field can never be a type HubSpot will reject.

Data types

TypeUse for
Short AnswerNames, titles, company names
Long AnswerPain points, descriptions, detailed responses
Person CountEmployee count, team size
Person NameA named individual
Person RoleA job function
MoneyRevenue, budget amounts, deal values
DateContract expiration, decision deadlines
BooleanYes/no questions, feature needs
EnumA fixed list of values β€” industry, company type, tech stack

Enum properties and allowed values

When the HubSpot property you map to is a dropdown, Steve reads its options and shows them under Allowed Values: "These are the valid values accepted by your CRM. The AI will only extract values from this list."

Those options are stored with the mapping and passed to the model at extraction time, so it returns HubSpot's exact values β€” newbusiness, not New Business. This is what prevents the INVALID_OPTION errors you get when a value doesn't match the property's option list.

AI-assisted mapping

When a playbook's methodology already implies a set of fields, Steve can map them to your HubSpot properties for you β€” the editor shows "AI is mapping fields to your HubSpot properties…" while it works. Review the results; you can change any mapping by hand.

When extraction runs

  1. A call is recorded and processed against a playbook.
  2. Steve extracts a value and a confidence score for every configured field.
  3. The call is annotated to a CRM deal β€” automatically from participant matching, or by you in Sales Calls.
  4. The extracted values are synced to HubSpot by destination: deal properties get patched, call-log fields are combined into a Call engagement on the deal, company fields are patched on the matched company, and company call-log fields become an engagement on the company.

Manual annotation runs the same sync. Annotating a call to a deal in the dialog pushes the extracted values immediately.

Switching or removing an annotation clears up after itself. Values Steve wrote to the old deal or company are reset to type-appropriate defaults before the new ones are applied, so an old deal isn't left carrying another call's data.

A sync failure never blocks the annotation itself β€” the association is saved either way, and the failure is reported separately.

Reviewing what was extracted

Open a call's post-call analysis and go to the CRM Data tab. Each field shows its Extracted Value, its Type, a confidence score, and whether it's Mapped to CRM. Fields the model couldn't find show Not extracted.

With nothing configured, the tab reads No CRM fields configured for this playbook.

Across calls, the CRM Data dashboard aggregates extraction rate and coverage per field, so you can see which instructions are working and which need rewriting.

Troubleshooting

SymptomCauseFix
No HubSpot properties in the dropdownHubSpot isn't connected, or the list is staleConnect HubSpot, then click Refresh Fields.
Values extract but never reach HubSpotThe call isn't annotated to a dealAnnotate it in Sales Calls, or check participant matching.
Company fields stay emptySteve couldn't match a company from the call's contactsConfirm the participants exist as HubSpot contacts associated with a company.
HubSpot rejects an enum valueThe mapping was created before options were storedDelete and re-add the field so its allowed values are captured.
A field is always Not extractedThe extract instructions are too vagueRewrite them to describe exactly what's said on the call.

Next Steps