Skip to main content

Documentation Index

Fetch the complete documentation index at: https://hc.pillargtm.com/llms.txt

Use this file to discover all available pages before exploring further.

Field Mapping Reference

PILLAR’s field mapping layer connects your CRM schema to PILLAR’s canonical data model. When you connect Salesforce, HubSpot, or Microsoft Dynamics 365, PILLAR auto-discovers your CRM’s fields and maps them to the 126+ internal fields listed below across 6 data objects.

How Field Mapping Works

  1. Auto-Discovery — When you first connect your CRM, PILLAR reads your org’s actual field schema (including custom fields) and fuzzy-matches them against the known CRM field names listed in this reference.
  2. Auto-Mapping — Fields with high-confidence matches are mapped automatically. PILLAR shows you a mapping confidence score (0-100) based on how many required and optional fields were matched.
  3. Manual Review — You can review, override, or add custom mappings via Settings > Integrations > Field Mapping.
  4. Transform Layer — Each mapping includes a transform type that controls how the raw CRM value is converted to PILLAR’s internal format (see Field Transforms below).
  5. Continuous Sync — Mapped fields are synced every 15 minutes via incremental pull. PILLAR also pushes computed scores (Health, Risk, Priority) back to your CRM.
Dynamics 365 field names are listed in a dedicated section at the bottom of this page. All Salesforce and HubSpot mappings apply to Dynamics 365 via the same auto-discovery process — Dynamics-specific field names are documented in Dynamics 365 Field Mappings below.
Fields marked Required must be mapped for PILLAR to generate meaningful scores, signals, and next-best-actions. Optional fields improve scoring accuracy and unlock additional intelligence modules.

Accounts

Accounts are the core entity in PILLAR, representing organizations (school districts, companies, institutions) that are customers or prospects.

Core Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
nameAccount NamestringYesNamename, companyThe name of the school district, university, or organization
arrAnnual Recurring RevenuenumberYesAnnualRevenue, Annual_Recurring_Revenue__c, ARR__c, MRR__c, Total_Contract_Value__c, Annual_Contract_Value__cannualrevenue, arr, annual_recurring_revenue, mrr, total_contract_valueTotal ARR for this account in dollars. Critical for scoring and forecasting.
segmentAccount SegmentenumYesType, Account_Segment__c, Segment__c, AccountTier__c, Customer_Type__ctype, hs_company_size, company_size, segment, account_tierEnterprise, Mid-Market, or SMB classification
industryIndustrystringNoIndustry, Vertical__cindustry, hs_industryIndustry vertical (e.g., K-12, Higher Ed, Government)
domainWebsite DomainstringNoWebsite, Domain__cdomain, websitePrimary website domain (e.g., miamidade.k12.fl.us)
stateStatestringNoBillingState, ShippingState, State__cstate, hs_stateTwo-letter state code for territory assignment
territoryTerritorystringNoTerritory__c, Sales_Territory__c, Region__cterritory, region, sales_territorySales territory assignment (e.g., Southeast, West Coast)
owner_idAccount OwnerstringNoOwnerIdhubspot_owner_idCRM user ID of the account owner/rep
tierAccount TierenumNoTier__c, Account_Tier__c, Strategic_Tier__ctier, account_tier, strategic_tierStrategic tier for account prioritization (tier_1, tier_2, tier_3, tier_4)

Scoring Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
student_countStudent CountnumberNoStudent_Count__c, Enrollment__c, Students__c, NumberOfStudents__c, Total_Enrollment__cstudent_count, enrollment, number_of_studentsTotal students enrolled. Used for expansion scoring and ARR-per-student.
annual_budgetAnnual BudgetnumberNoAnnual_Budget__c, Budget__c, Tech_Budget__cannual_budget, budgetOrganization’s annual operating or tech budget
health_scoreHealth ScorenumberNoHealth_Score__c, Customer_Health__c, Account_Health__c, HealthScore__chealth_score, customer_health_score0-100 account health score. If your CRM tracks this, map it; otherwise PILLAR computes it.
ai_adoption_scoreAI Adoption ScorenumberNoAI_Adoption_Score__c, AI_Readiness__cai_adoption_score, ai_readiness_score0-100 score indicating the account’s propensity to adopt AI-powered tools
budget_trend_yoyBudget Trend YoYnumberNoBudget_Trend_YoY__c, YoY_Budget_Change__cbudget_trend_yoy, yoy_budget_changeYear-over-year budget change as a percentage (e.g., 5.2 means +5.2%)
expansion_propensityExpansion PropensitynumberNoExpansion_Propensity__c, Expansion_Score__cexpansion_propensity, expansion_score0-100 score indicating likelihood the account will expand usage or spend
historical_spendHistorical SpendnumberNoHistorical_Spend__c, Lifetime_Value__c, Total_Spend__chistorical_spend, lifetime_value, total_spendTotal historical spend with your company in dollars
priority_scorePriority ScorenumberNoPriority_Score__c, Account_Priority__cpriority_score, account_priorityComposite priority score (0-100) used for account ranking and territory planning
renewal_risk_scoreRisk ScorenumberNoRisk_Score__c, Churn_Risk__c, Account_Risk__crenewal_risk_score, churn_risk_score0-100 churn/risk score. Higher = more at risk.
startup_friendlinessStartup FriendlinessnumberNoStartup_Friendliness__c, Vendor_Openness__cstartup_friendliness, vendor_openness0-100 score indicating how open the account is to working with newer vendors
tech_budgetTechnology BudgetnumberNoTech_Budget__c, Technology_Budget__c, IT_Budget__ctech_budget, technology_budget, it_budgetAnnual technology budget in dollars
tech_spend_propensityTech Spend PropensitynumberNoTech_Spend_Propensity__c, Tech_Propensity__ctech_spend_propensity, tech_propensity0-100 score indicating likelihood to invest in new technology
total_budgetTotal BudgetnumberNoTotal_Budget__c, Operating_Budget__ctotal_budget, operating_budgetTotal organizational budget in dollars (broader than tech budget)
whitespace_pctWhitespace PercentagenumberNoWhitespace_Pct__c, Whitespace__c, Expansion_Opportunity__cwhitespace_pct, whitespace_percentagePercentage of potential product footprint not yet sold (0-100). Higher = more expansion room.

Enrichment Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
coop_agreementsCooperative AgreementsstringNoCoop_Agreements__c, Cooperative_Contracts__ccoop_agreements, cooperative_contractsActive cooperative purchasing agreements (e.g., TIPS, NASPO, E&I)
district_typeDistrict TypeenumNoDistrict_Type__c, Institution_Type__cdistrict_type, institution_typeType of school district or institution (traditional, charter, independent, regional, consolidated)
grade_rangeGrade RangestringNoGrade_Range__c, Grades_Served__cgrade_range, grades_servedGrade levels served (e.g., K-5, 6-8, 9-12, K-12)
nces_idNCES IDstringNoNCES_ID__c, NCES_District_ID__cnces_id, nces_district_idNational Center for Education Statistics identifier for the district
procurement_complexityProcurement ComplexityenumNoProcurement_Complexity__c, Buying_Complexity__cprocurement_complexity, buying_complexityHow complex the procurement process is for this account (low, medium, high, very_high)
school_countSchool CountnumberNoSchool_Count__c, Number_of_Schools__cschool_count, number_of_schoolsNumber of schools in the district
staff_countStaff CountnumberNoNumberOfEmployees, Staff_Count__cnumberofemployees, staff_countTotal number of staff/employees at the organization
starbridge_buyer_idStarbridge Buyer IDstringNoStarbridge_Buyer_ID__cstarbridge_buyer_idExternal buyer ID from Starbridge data enrichment
starbridge_last_syncedStarbridge Last SynceddateNoStarbridge_Last_Synced__cstarbridge_last_syncedTimestamp of last data sync from Starbridge
strategic_themesStrategic ThemesstringNoStrategic_Themes__c, Key_Initiatives__cstrategic_themes, key_initiativesKey strategic initiatives or themes relevant to this account (comma-separated)

Lifecycle Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
fiscal_year_endFiscal Year EndstringNoFiscal_Year_End__c, FYE__c, Budget_Cycle_End__cfiscal_year_endMM-DD format. Drives budget cycle alerts and renewal timing.
statusAccount StatusenumNoAccount_Status__c, Status__c, Customer_Status__chs_lead_status, account_status, customer_statusCurrent lifecycle status of the account (prospect, active, churned, paused, onboarding)

Contacts

Contacts represent individual people at accounts — buyers, champions, evaluators, and end users.

Core Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
nameContact NamestringYesNamefirstname,lastname (formula concat)Full name of the contact
account_idParent Account (CRM ID)stringYesAccountIdassociatedcompanyidCRM ID of the associated account — resolved to PILLAR UUID automatically via the lookup transform
emailEmailstringNoEmailemailPrimary email address
phonePhonestringNoPhone, MobilePhonephone, mobilephonePrimary phone number
departmentDepartmentstringNoDepartmentdepartmentDepartment within the organization

Engagement Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
titleJob TitlestringNoTitlejobtitleJob title — used to infer buying role (Champion, Economic Buyer, etc.)
buying_roleBuying RoleenumNoBuying_Role__c, Contact_Role__c, Role__cbuying_role, contact_roleRole in the buying process (champion, economic_buyer, technical_evaluator, end_user, influencer, blocker)
engagement_scoreEngagement ScorenumberNoEngagement_Score__c, Activity_Score__cengagement_score, hs_email_engagement, hs_analytics_num_visits0-100 score reflecting how engaged this contact is with your outreach and content
is_championIs ChampionbooleanNoIs_Champion__c, Champion__cis_championWhether this contact is identified as an internal champion for your product
is_exec_sponsorIs Executive SponsorbooleanNoIs_Exec_Sponsor__c, Executive_Sponsor__cis_exec_sponsor, executive_sponsorWhether this contact serves as the executive sponsor for the relationship
last_activity_dateLast Activity DatedateNoLastActivityDate, Last_Activity_Date__cnotes_last_updated, hs_last_sales_activity_dateDate of the most recent activity (email, meeting, call) with this contact

Lifecycle Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
statusContact StatusenumNoContact_Status__c, Status__chs_lead_status, contact_statusCurrent status of the contact (active, inactive, churned, do_not_contact)

Opportunities

Opportunities represent active deals in the pipeline — new business, renewals, expansions, and cross-sells.

Core Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
nameOpportunity NamestringYesNamedealnameName of the deal/opportunity
amountDeal AmountnumberYesAmount, Total_Contract_Value__c, ACV__camount, hs_tcv, hs_acvTotal deal value in dollars
stageDeal StageenumYesStageNamedealstageCurrent pipeline stage (Discovery, Evaluation, Proposal, Negotiation, Closed Won, Closed Lost)
close_dateExpected Close DatedateYesCloseDateclosedateForecasted close date — critical for pipeline hygiene scoring
account_idParent Account (CRM ID)stringYesAccountIdassociations.companiesCRM ID of the associated account — resolved to PILLAR UUID automatically via the lookup transform
owner_idOpportunity OwnerstringNoOwnerIdhubspot_owner_idCRM user ID of the opportunity owner/rep

Scoring Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
probabilityWin Probability %numberNoProbabilityhs_deal_stage_probability, deal_probability0-100 win probability. Used for forecast confidence scoring.
forecast_categoryForecast CategoryenumNoForecastCategory, ForecastCategoryNamehs_forecast_categoryCommit, Best Case, Upside, Pipeline, or Omitted
next_stepNext StepstringNoNextStep, Next_Steps__chs_next_step, next_stepDocumented next step — pipeline hygiene scoring checks for this
budget_statusBudget StatusenumNoBudget_Status__c, Budget_Confirmed__cbudget_status, budget_confirmedWhether budget has been identified, approved, or is pending (unknown, identified, approved, allocated, no_budget)
competitorCompetitorstringNoCompetitor__c, Primary_Competitor__c, Competition__ccompetitor, primary_competitorPrimary competitor in this deal
confidence_scoreConfidence ScorenumberNoConfidence_Score__c, Deal_Confidence__cconfidence_score, deal_confidence0-100 AI-generated or rep-assessed deal confidence score
days_in_stageDays in StagenumberNoDays_in_Stage__c, Stage_Duration__cdays_in_stage, hs_time_in_current_deal_stageNumber of days the opportunity has been in its current stage — used for pipeline hygiene
has_economic_buyerHas Economic BuyerbooleanNoHas_Economic_Buyer__c, Economic_Buyer_Identified__chas_economic_buyer, economic_buyer_identifiedWhether an economic buyer has been identified and engaged
has_next_stepHas Next StepbooleanNoHas_Next_Step__chas_next_stepWhether a concrete next step is documented — critical for pipeline hygiene
hygiene_scoreHygiene ScorenumberNoHygiene_Score__c, Pipeline_Hygiene__chygiene_score, pipeline_hygiene_score0-100 pipeline hygiene score based on data completeness and deal progression
push_countPush CountnumberNoPush_Count__c, Close_Date_Pushes__cpush_count, close_date_pushesNumber of times close date has been pushed — used for pipeline hygiene scoring
strategic_fitStrategic FitnumberNoStrategic_Fit__c, Strategic_Alignment__cstrategic_fit, strategic_alignment0-100 score indicating how well this opportunity aligns with strategic goals

Engagement Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
contact_countContact CountnumberNoContact_Count__c, Number_of_Contacts__cnum_associated_contactsNumber of contacts associated with this opportunity
last_meeting_dateLast Meeting DatedateNoLast_Meeting_Date__c, LastActivityDatehs_last_meeting_booked_date, last_meeting_dateDate of the most recent meeting or call on this opportunity

Lifecycle Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
opportunity_typeOpportunity TypeenumNoType, Opportunity_Type__c, RecordType.Namedeal_type, hs_deal_typeNew business, renewal, expansion, or cross-sell (net_new_business, renewal, expansion, cross_sell)
created_dateCreated DatedateNoCreatedDatecreatedateDate the opportunity was created in CRM
rfp_statusRFP StatusenumNoRFP_Status__c, RFP__crfp_statusStatus of the RFP/RFI process (none, anticipated, released, submitted, awarded, lost)

Enrichment Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
cooperative_pathwayCooperative PathwaystringNoCooperative_Pathway__c, Coop_Vehicle__ccooperative_pathway, coop_vehicleCooperative purchasing vehicle being used (e.g., TIPS, NASPO, sole source)
grant_matchGrant MatchbooleanNoGrant_Match__c, Has_Grant_Funding__cgrant_match, has_grant_fundingWhether this opportunity has a matching grant or funding source identified
procurement_complexityProcurement ComplexityenumNoProcurement_Complexity__c, Deal_Complexity__cprocurement_complexity, deal_complexityHow complex the procurement process is for this specific deal (low, medium, high, very_high)

Leads

Leads represent pre-opportunity contacts — people who have shown interest but have not yet been qualified into the pipeline.

Core Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
nameLead NamestringYesNamefirstname,lastname (formula concat)Full name of the lead
emailLead EmailstringYesEmailemailEmail address
company_nameCompany/OrganizationstringNoCompanycompanyOrganization name for the lead
assigned_toAssigned TostringNoOwnerIdhubspot_owner_idCRM user ID of the rep assigned to this lead
segmentLead SegmentenumNoSegment__c, Lead_Segment__csegment, lead_segmentMarket segment classification (Enterprise, Mid-Market, SMB)
stateLead StatestringNoState, StateCodestate, hs_stateTwo-letter state code for the lead’s location

Association Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
account_idLinked AccountstringNoAccountId__c, Account__c, Linked_Account__cassociatedcompanyidFK to a PILLAR account row when known. Resolved automatically by the lead upsert pipeline either via the CRM’s company-id reference or by fuzzy-matching company_name against accounts.name for the same org.

Engagement Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
titleLead Job TitlestringNoTitlejobtitleJob title of the lead — used to infer buying role and seniority
content_downloadsContent DownloadsnumberNoContent_Downloads__c, Downloads__ccontent_downloads, num_content_downloadsNumber of content assets downloaded by this lead
demo_requestedDemo RequestedbooleanNoDemo_Requested__c, Requested_Demo__cdemo_requestedWhether this lead has requested a product demo
email_clicksEmail ClicksnumberNoEmail_Clicks__chs_email_click, email_clicksTotal number of email link clicks by this lead
email_opensEmail OpensnumberNoEmail_Opens__chs_email_open, email_opensTotal number of email opens by this lead
website_visitsWebsite VisitsnumberNoWebsite_Visits__c, Web_Visits__chs_analytics_num_visits, website_visitsTotal number of website visits tracked for this lead

Scoring Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
lead_scoreLead ScorenumberNoLead_Score__c, Score__c, Ratinghubspotscore, hs_predictive_scoring_tier, lead_scoreComposite lead score (0-100) based on fit and engagement signals

Lifecycle Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
statusLead StatusenumNoStatus, Lead_Status__chs_lead_status, lifecyclestageCurrent lead status in the funnel (new, engaged, mql, sql, opportunity, disqualified, recycled)
mql_dateMQL DatedateNoMQL_Date__c, Marketing_Qualified_Date__chs_lifecyclestage_marketingqualifiedlead_date, mql_dateDate the lead became a Marketing Qualified Lead
sql_dateSQL DatedateNoSQL_Date__c, Sales_Qualified_Date__chs_lifecyclestage_salesqualifiedlead_date, sql_dateDate the lead became a Sales Qualified Lead
opportunity_dateOpportunity DatedateNoConvertedDate, Opportunity_Date__chs_lifecyclestage_opportunity_date, opportunity_dateDate the lead converted to an opportunity
opportunity_idConverted Opportunity IDstringNoConvertedOpportunityIdhs_converted_deal_id, opportunity_idCRM ID of the opportunity created when this lead converted

Enrichment Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
enrollmentEnrollmentnumberNoEnrollment__c, Student_Enrollment__cenrollment, student_enrollmentStudent enrollment count at the lead’s organization
source_detailLead Source DetailstringNoLeadSource, Lead_Source_Detail__c, Source_Detail__chs_analytics_source_data_1, source_detailDetailed lead source information (e.g., specific campaign, webinar name)
source_idLead Source IDstringNoCampaign_ID__c, Source_ID__chs_analytics_source, source_idUnique identifier for the lead source or campaign

Contracts

Contracts represent formal agreements between your company and an account. Contract data is the canonical source for renewal dates, replacing heuristic derivations from opportunity stages.
Contract ingestion is currently in rollout. The Drizzle schema and catalog entries exist but the CRM object enumeration has not yet been activated. Contact your PILLAR representative to enable contract sync for your org.

Core Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
account_idParent Account (CRM ID)stringYesAccountIdassociated_company_id, hs_associated_companyThe CRM ID of the account this contract belongs to. Resolved to a PILLAR account UUID by the upsert layer.
contract_numberContract NumberstringNoContractNumberhs_contract_number, contract_numberThe human-readable contract identifier (e.g. CON-2024-0042)
start_dateContract Start DatedateYesStartDate, ContractStartDatehs_contract_start_date, start_dateWhen the contract becomes effective
end_dateContract End DatedateYesEndDate, ContractEndDatehs_contract_end_date, end_dateWhen the contract expires. This is the canonical renewal anchor.
contract_valueTotal Contract ValuenumberYesTotalAmount, Total_Contract_Value__chs_contract_value, contract_valueTotal value of the contract in dollars. For multi-year contracts this is TCV; ARR can be derived as contract_value / (term_months / 12).
term_monthsTerm (months)numberNoContractTermhs_term_length_months, term_monthsLength of the contract in months. Used to derive auto-renewal cadence.
currencyCurrencystringNoCurrencyIsoCodehs_contract_currency, currencyISO 4217 currency code (USD, EUR, GBP, etc.)
billing_frequencyBilling FrequencyenumNoBillingFrequency__chs_billing_frequency, billing_frequencyHow often the customer is billed (monthly, quarterly, annual, one_time)
statusContract StatusenumYesStatushs_contract_status, statusThe lifecycle state of the contract (draft, in_approval, active, expired, terminated, renewed)
auto_renewAuto-Renew EnabledbooleanNoAuto_Renew__chs_auto_renewal_enabled, auto_renewWhether the contract auto-renews at end_date unless cancelled
opt_out_notice_daysOpt-Out Notice (days)numberNoOpt_Out_Notice_Days__chs_opt_out_notice_days, opt_out_notice_daysDays of notice the customer must give to opt out of auto-renewal. PILLAR uses this to compute the latest safe save-play window.

Lifecycle Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
signed_dateSigned DatedateNoLastApprovedDatehs_signed_date, signed_dateWhen all parties signed the contract
activated_dateActivated DatedateNoActivatedDatehs_activated_dateWhen the contract transitioned from Draft/InApproval to Activated

Association Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
parent_quote_idSource Quote IDstringNoSBQQ__Quote__c, QuoteId__chs_quote_id, associated_quote_idThe CRM ID of the quote this contract was generated from (Salesforce CPQ Quote, HubSpot Quote)

Support Tickets

Support ticket snapshots capture per-ticket data from HubSpot Service Hub and Salesforce Service Cloud. These feed the support burden component of renewal risk scoring.
Support ticket ingestion is currently in rollout. Contact your PILLAR representative to enable support ticket sync for your org.

Core Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
account_idParent Account (CRM ID)stringYesAccountIdassociated_company_id, hs_associated_company_idThe CRM ID of the account this ticket belongs to. Resolved to a PILLAR account UUID by the upsert layer.
ticket_numberTicket NumberstringNoCaseNumberhs_ticket_id, ticket_numberThe human-readable ticket identifier (e.g. CASE-00042 or HS-12345)
subjectSubjectstringNoSubjectsubject, hs_ticket_subjectShort human-readable description of the ticket
typeTicket TypestringNoTypehs_ticket_categoryThe category of issue: question, problem, incident, feature_request
statusStatusstringYesStatushs_pipeline_stage, statusTicket lifecycle state (new, open, pending, on_hold, solved, closed, archived). Anything other than solved/closed/archived counts as “open” for support_burden.
priorityPrioritystringNoPriorityhs_ticket_priorityCustomer-facing urgency label (low, normal, high, urgent)
severitySeverity (1-4)numberNoSeverity__chs_severityNumeric severity (1 = highest/business-down, 4 = cosmetic). Drives support_burden more than priority.

Association Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
contact_idReporter Contact (CRM ID)stringNoContactIdassociated_contact_id, hs_associated_contact_idThe CRM ID of the contact who reported the ticket. Used to surface “the same person filed 5 tickets in a week” patterns.

Lifecycle Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
opened_atOpened AtdateYesCreatedDatecreatedate, hs_createdateWhen the ticket was created. Used as the time anchor for all aggregation windows.
first_response_atFirst Response AtdateNoFirstResponseDateTime__c, First_Response_DateTime__chs_first_response_timeWhen the customer first received a response. Used to compute time-to-first-response.
resolved_atResolved AtdateNoClosedDateclosed_date, hs_resolution_dateWhen the ticket transitioned to a resolved state. Drives the time-to-resolution sub-signal.
last_activity_atLast Activity AtdateNoLastModifiedDate, LastActivityDatehs_lastmodifieddate, notes_last_updatedWhen the ticket was last touched. Used to detect stagnant tickets.

Engagement Fields

PILLAR FieldLabelTypeRequiredSalesforce DefaultHubSpot DefaultDescription
interaction_countInteraction CountnumberNoInteraction_Count__chs_num_associated_emails, hs_num_notesNumber of public replies on the ticket. High counts indicate a complex problem or a frustrated customer.
reopen_countReopen CountnumberNoNumber_Of_Reopens__chs_reopen_countNumber of times the ticket was closed and re-opened. Reopens are a strong signal of incomplete resolution.
is_escalatedIs EscalatedbooleanNoIsEscalatedhs_escalatedWhether the ticket has been escalated to a higher tier or manager.
has_exec_attentionHas Exec AttentionbooleanNoExec_Sponsor_Engaged__chs_executive_sponsor_engagedTrue if a customer or PILLAR user with exec/CRO/CEO role has touched the ticket. The classic “CEO is involved” risk signal.
csat_scoreCSAT ScorenumberNoCSAT__c, Customer_Satisfaction__chs_csat, customer_satisfactionCustomer satisfaction score on a 1-5 scale, collected at ticket close. Low CSAT (1-2) is a leading indicator of churn.

Dynamics 365 Field Mappings

PILLAR connects to Dynamics 365 via OAuth 2.0 (Azure AD). The field discovery and auto-mapping process works identically to Salesforce and HubSpot — PILLAR reads your Dynamics schema on first connect and fuzzy-matches against the field names below. Custom fields in Dynamics follow the cr_xxx_fieldname or new_fieldname naming convention depending on your publisher prefix.
Custom fields in Dynamics 365 are prefixed with your organization’s publisher prefix (e.g., cr_abc_, new_, or a custom prefix). PILLAR’s auto-discovery reads both standard and custom fields. If a required field lives in a custom field, map it manually via Settings → Integrations → Field Mapping.

Accounts (account entity)

PILLAR FieldDynamics 365 Standard FieldNotes
namenameAccount name
arrrevenueStandard Annual Revenue field. Map to a custom field (e.g., cr_xxx_arr) if your org tracks ARR separately from total revenue
segmentcustomertypecodeCustomer Type picklist. Map values to PILLAR segments via Picklist Mapping
industryindustrycodeIndustry picklist
domainwebsiteurlPrimary website URL
stateaddress1_stateorprovinceBilling address state
territoryterritoryidTerritory lookup. Requires territory management to be enabled in Dynamics
owner_idowneridSystemUser lookup — resolves to the assigned rep
tierCustom fieldNo standard equivalent. Map from a custom option set field
student_countCustom fieldMap from cr_xxx_studentcount or equivalent custom field
annual_budgetCustom fieldMap from cr_xxx_annualbudget or equivalent
health_scoreCustom fieldMap from cr_xxx_healthscore if tracked in Dynamics; otherwise PILLAR computes it
priority_scoreCustom fieldMap from cr_xxx_priorityscore if tracked in Dynamics
renewal_risk_scoreCustom fieldMap from cr_xxx_renewalrisk if tracked in Dynamics
fiscal_year_endCustom fieldNo standard equivalent
statusstatecode / statuscodeActive = 0, Inactive = 1
staff_countnumberofemployeesStandard field
nces_idCustom fieldEdTech-specific — map from custom field

Contacts (contact entity)

PILLAR FieldDynamics 365 Standard FieldNotes
namefullnameComputed from firstname + lastname automatically
account_idparentcustomeridAccount lookup — resolved to PILLAR UUID via lookup transform
emailemailaddress1Primary email. emailaddress2 and emailaddress3 available as fallbacks
phonetelephone1, mobilephoneBusiness phone and mobile
departmentdepartmentDepartment
titlejobtitleJob title — used to infer buying role (Champion, Economic Buyer, etc.)
buying_roleCustom fieldNo standard equivalent. Map from a custom option set
is_championCustom fieldMap from cr_xxx_ischampion (boolean)
is_exec_sponsorCustom fieldMap from cr_xxx_isexecsponsor (boolean)
last_activity_datelastusedincampaign, modifiedonNo exact equivalent. Use modifiedon as a proxy or a custom field updated by workflow
engagement_scoreCustom fieldMap from custom field if tracked
statusstatecodeActive = 0, Inactive = 1

Opportunities (opportunity entity)

PILLAR FieldDynamics 365 Standard FieldNotes
namenameOpportunity name
amountestimatedvalueEstimated Revenue. Map to a custom ACV/ARR field if your org tracks those separately
stagesalesstage, stepnamesalesstage is the picklist stage; stepname is the free-text process step. Use salesstage for stage mapping
close_dateestimatedclosedateEstimated close date
account_idcustomeridCustomer lookup (Account or Contact) — PILLAR resolves to account UUID
owner_idowneridSystemUser lookup
probabilitycloseprobability0-100 close probability
forecast_categorymsdyn_forecastcategoryRequires Dynamics 365 Sales Forecasting module. Values: Best Case, Committed, Omitted, Pipeline, Won
next_stepdescription, custom fieldNo dedicated Next Step field. Map from description or a custom field
opportunity_typeopportunityratingcode, custom fieldRating Code (Hot/Warm/Cold) is not equivalent. Use a custom option set for New Business / Renewal / Expansion
created_datecreatedonSystem-generated creation timestamp
competitorcompetitoridCompetitor lookup. Requires Competitors to be configured in Dynamics
has_economic_buyerCustom fieldMap from cr_xxx_haseconomicbuyer (boolean)
has_next_stepCustom fieldMap from cr_xxx_hasnextstep (boolean) or derive from whether description is populated
push_countCustom fieldNo standard equivalent — requires a custom counter field updated by workflow
contact_countComputedCount of contacts associated via opportunity contact roles

Leads (lead entity)

PILLAR FieldDynamics 365 Standard FieldNotes
namefullnameComputed from firstname + lastname
emailemailaddress1Primary email
company_namecompanynameCompany name on the lead
assigned_toowneridSystemUser lookup
stateaddress1_stateorprovinceAddress state
titlejobtitleJob title
statusstatuscodeLead status picklist (New, Contacted, Qualified, Disqualified, etc.)
segmentCustom fieldNo standard equivalent — map from custom option set
lead_scoreCustom fieldMap from cr_xxx_leadscore if scored externally, or PILLAR computes it
mql_dateCustom fieldNo standard equivalent. Use a workflow to stamp a custom date field on MQL qualification
sql_dateCustom fieldSame approach as mql_date
opportunity_idqualifyingopportunityidSet when a lead is qualified/converted to an opportunity

Contracts (contract entity)

PILLAR FieldDynamics 365 Standard FieldNotes
account_idcustomeridCustomer (Account) lookup — resolved to PILLAR UUID
contract_numbercontractnumber, titlecontractnumber is system-generated; title is the human-readable name
start_dateactiveonContract activation date
end_dateexpiresonContract expiration date — canonical renewal anchor
contract_valuetotalvalueTotal contract value. Custom field if tracking ACV separately
term_monthsCustom fieldNo standard equivalent — map from custom field
currencytransactioncurrencyidCurrency lookup
billing_frequencyCustom fieldNo standard equivalent
statusstatecodeDraft = 0, Invoiced = 1, Active = 2, On Hold = 3, Cancelled = 4, Expired = 5
auto_renewCustom fieldMap from cr_xxx_autorenew (boolean)
opt_out_notice_daysCustom fieldMap from cr_xxx_optoutnoticedays
signed_dateCustom fieldNo standard equivalent

Support Tickets (incident / Case entity)

PILLAR FieldDynamics 365 Standard FieldNotes
account_idcustomeridCustomer (Account) lookup — resolved to PILLAR UUID
ticket_numberticketnumberSystem-generated case number (e.g., CAS-01234-ABCDE)
subjecttitleCase title
typecasetypecodeQuestion, Problem, or Request
statusstatecode / statuscodeActive = 0, Resolved = 1, Cancelled = 2
priorityprioritycodeHigh = 1, Normal = 2, Low = 3
severityCustom fieldNo standard equivalent — map from cr_xxx_severity if tracked
opened_atcreatedonTicket creation timestamp
resolved_atresolvedonSet when the incident is resolved via the Resolve Case action
last_activity_atmodifiedonLast modified timestamp
is_escalatedisescalatedStandard boolean field
csat_scoreCustom fieldNo standard equivalent — map from cr_xxx_csatscore if collected
contact_idprimarycontactidPrimary contact on the case
first_response_atCustom fieldNo standard equivalent — requires a workflow to stamp a custom datetime field on first response

Field Transforms

Every field mapping includes a transform type that controls how the raw CRM value is converted before storage in PILLAR.
TransformDescriptionExample
directCopy the value as-is. Used for strings, numbers, dates, and booleans that need no conversion.Salesforce Name to PILLAR name
lookupResolve a CRM ID to a PILLAR UUID by matching crm_external_id on the target table. Used for foreign-key fields.Salesforce AccountId on an Opportunity resolves to the PILLAR accounts.id UUID
formulaCompute a value from one or more CRM fields. Used when the PILLAR field is a composite.HubSpot firstname + lastname concatenated into PILLAR name
picklist_mapTranslate CRM picklist values to PILLAR’s canonical enum values. Configured via the Picklist Mapping UI.Salesforce stage “Closed Won - Paid” mapped to PILLAR Closed Won

When to Use Each Transform

The vast majority of fields use direct transforms. The raw CRM value is copied into PILLAR with only type coercion (e.g., string to number) applied automatically.
Fields like account_id on Contacts, Opportunities, Leads, Contracts, and Support Tickets use lookup transforms. When PILLAR sees a raw CRM ID (e.g., 001xxxxxxxxxxxx for a Salesforce Account), it looks up the corresponding PILLAR UUID from the target table’s crm_external_id column. This happens automatically — you do not need to configure lookup mappings manually.
Currently used for HubSpot contact and lead name fields, where PILLAR concatenates firstname and lastname into a single name string. Additional formula transforms can be configured by your PILLAR admin.
Used when your CRM’s picklist values don’t match PILLAR’s canonical enums. For example, if your Salesforce org uses deal stages like “Verbal Commitment”, “Contract Sent”, and “Closed Won - Paid”, you create picklist mappings to translate these to PILLAR’s standard stages: Negotiation, Negotiation, and Closed Won.

Picklist Mapping

Many CRM implementations use custom picklist values that differ from PILLAR’s standard enum values. The Picklist Mapping feature lets you create translation rules so PILLAR can correctly interpret your CRM’s terminology.

Common Picklist Mappings

Opportunity Stages — PILLAR uses: Discovery, Evaluation, Proposal, Negotiation, Closed Won, Closed Lost
Your CRM Stage                    →  PILLAR Stage
─────────────────────────────────────────────────
"Qualification"                   →  Discovery
"Needs Analysis"                  →  Discovery
"Value Proposition"               →  Evaluation
"Perception Analysis"             →  Evaluation
"Proposal/Price Quote"            →  Proposal
"Negotiation/Review"              →  Negotiation
"Verbal Commitment"               →  Negotiation
"Contract Sent"                   →  Negotiation
"Closed Won"                      →  Closed Won
"Closed Won - Paid"               →  Closed Won
"Closed Won - Renewal"            →  Closed Won
"Closed Lost"                     →  Closed Lost
"Closed Lost - Competitor"        →  Closed Lost
Account Status — PILLAR uses: prospect, active, churned, paused, onboarding Lead Status — PILLAR uses: new, engaged, mql, sql, opportunity, disqualified, recycled Contract Status — PILLAR uses: draft, in_approval, active, expired, terminated, renewed

How to Configure Picklist Mappings

  1. Navigate to Settings > Integrations and click your CRM connector card.
  2. Click Picklist Mappings (or access via the Field Mapping screen).
  3. Select the PILLAR field with enum values (e.g., stage on Opportunities).
  4. For each of your CRM’s picklist values, select the corresponding PILLAR value from the dropdown.
  5. Click Save. Mappings take effect on the next sync cycle (within 15 minutes).
Unmapped picklist values are stored as-is, which may cause scoring rules to skip the record. Always map all active picklist values to ensure accurate scoring.

Custom Field Mapping

If your CRM uses non-standard field names or you have custom fields that don’t match PILLAR’s auto-discovery heuristics, you can create manual mappings.

How to Create a Custom Mapping

  1. Navigate to Settings > Integrations and click Field Mapping on your CRM connector card.
  2. Find the PILLAR field you want to map (use the search bar or browse by object).
  3. Click the CRM Field dropdown and select your CRM field from the discovered schema.
  4. Choose the appropriate Transform type (direct, lookup, formula, or picklist_map).
  5. Click Save. The mapping takes effect on the next sync cycle.

Tips for Custom Mappings

  • PILLAR discovers all fields in your CRM objects, including custom fields. If your field isn’t showing in the dropdown, verify it exists on the correct CRM object (e.g., Account vs. Contact).
  • For fields that contain CRM IDs referencing another object (like a custom account lookup on Leads), use the lookup transform and specify the target PILLAR table.
  • For numeric fields stored as strings in your CRM, use the direct transform — PILLAR applies automatic type coercion.
  • For formula fields that depend on multiple CRM fields (beyond simple concatenation), contact PILLAR support to configure a custom formula transform.