HubSpot CRM Enrichment Schema for ABM
Overview
This document defines the complete HubSpot CRM property schema, calculated scoring logic, and workflow automation required to operationalize Wisedocs' ABM program across ~300 target accounts. It transforms HubSpot from a form capture tool into the central operating system for account-based sales and marketing.
The schema connects directly to every approved ABM output: - ICP scoring criteria become calculated company properties with weighted formulas - TAL tiers become a managed dropdown driving differentiated workflows - Persona definitions become contact-level properties that map buying committee roles - Intelligence framework signals become trigger-event fields that activate plays - Measurement framework scores become engagement scoring rules with MQA thresholds
Current state: Wisedocs uses HubSpot for form capture (Portal ID 7946138). No full hs-script tracking code was detected -- likely CRM Free/Starter or Forms-only. This schema requires HubSpot Marketing Hub Professional or higher for company scoring, workflow automation, and custom reporting. If Wisedocs is on a lower tier, the property creation and manual workflows can still be implemented; the automation layer requires the upgrade.
Implementation time: 2-3 days for property creation, 1 week for workflow configuration, 1 week for TAL data import and validation.
Company Properties
Property Group: ABM Program
Create a custom property group called "ABM Program" to keep all ABM-specific fields organized and separate from default HubSpot properties.
| Property Name | Internal Name | Field Type | Options / Format | Source | Purpose |
|---|---|---|---|---|---|
| ABM Tier | abm_tier |
Dropdown select | Tier 1 (1:1), Tier 2 (1:Few), Tier 3 (1:Many), Not in TAL |
Manual import from TAL; auto-updated by ICP Score workflow | Drives play assignment, resource allocation, and reporting segmentation. Tier 1 = 25 accounts (1:1 plays), Tier 2 = 75 accounts (1:Few vertical campaigns), Tier 3 = ~200 accounts (1:Many programmatic). |
| ABM Segment | abm_segment |
Dropdown select | Insurance Carrier - US, Insurance Carrier - Canada, TPA / Claims Management, Law Firm - Plaintiff PI/Mass Tort, Law Firm - Defense/Insurance, IME / QME Firm, Government / State Fund, Other |
Manual assignment during TAL import; updated during quarterly TAL refresh | Maps to ICP primary and secondary segments. Drives segment-specific play enrollment and content routing. |
| ABM Sub-Segment | abm_sub_segment |
Dropdown select | P&C Carrier, Workers Comp Specialist, Medical Malpractice Carrier, Regional TPA, National TPA, Personal Injury Firm, Mass Tort Firm, WC Defense Firm, Med Mal Defense Firm, IME Company, QME / Vocational Rehab, State WC Fund |
Manual assignment | Enables granular reporting and play targeting within segments. |
| ICP Score | icp_score |
Number | 0-100 | Calculated by workflow from component scores | Composite score determining account fit. Drives tier assignment recommendations. |
| ICP Score - Firmographic | icp_score_firmographic |
Number | 0-35 | Manual or enrichment-based | 35% weight. Based on industry vertical, company size, geography, and growth stage per ICP criteria. |
| ICP Score - Technographic | icp_score_technographic |
Number | 0-20 | Manual or enrichment-based (BuiltWith, HG Insights, job postings) | 20% weight. Based on claims platform, document management tools, and absence of competitor. |
| ICP Score - Behavioral | icp_score_behavioral |
Number | 0-30 | Auto-updated from intent signals and trigger events | 30% weight. Based on intent data, trigger events, and pain indicators. |
| ICP Score - Engagement | icp_score_engagement |
Number | 0-15 | Auto-updated from engagement scoring | 15% weight. Based on direct engagement with Wisedocs content, website, and sales team. |
| Account Progression Stage | abm_stage |
Dropdown select | Unaware, Aware, Engaged, MQA, Opportunity, Customer |
Auto-updated by progression workflow (Unaware through MQA); manual update by sales (MQA through Customer) | Tracks account lifecycle. Entry/exit criteria defined in measurement framework. |
| Account Progression Stage Date | abm_stage_date |
Date picker | YYYY-MM-DD | Auto-set when ABM Stage changes | Tracks when the account entered its current stage. Used for velocity calculations. |
| Active Play | abm_active_play |
Dropdown select | New Leader, Vendor Transition, Growth Infrastructure, Surge Response, WC Specialist, TPA Margin, Legal Volume, Programmatic Awareness, Evaluation Season, None |
Manual assignment or workflow-triggered | Tracks which play archetype the account is currently enrolled in. One play per account at a time. |
| Play Start Date | abm_play_start_date |
Date picker | YYYY-MM-DD | Auto-set when Active Play changes from "None" | Enables 30-day kill threshold tracking. |
| Engagement Score | abm_engagement_score |
Number | 0-999 | Calculated by HubSpot scoring rules | Composite engagement score. MQA threshold = 30 points in 30-day rolling window. Scoring weights defined below. |
| MQA Date | abm_mqa_date |
Date picker | YYYY-MM-DD | Auto-set when Engagement Score crosses 30 | Tracks when account became Marketing Qualified. Used for MQA-to-Opportunity conversion rate. |
Property Group: Account Intelligence
| Property Name | Internal Name | Field Type | Options / Format | Source | Purpose |
|---|---|---|---|---|---|
| Current Doc Review Vendor | current_doc_review_vendor |
Dropdown select | DigitalOwl / Datavant, InPractice.ai, EvenUp, InQuery, Internal Build, Manual / No Tool, Other, Unknown |
Sales intel, G2 reviews, event conversations, job postings | Identifies competitive displacement opportunities. DigitalOwl/Datavant accounts are highest priority for "Vendor Transition" play. |
| Claims Management Platform | claims_platform |
Dropdown select | Guidewire, Duck Creek, Majesco, Origami Risk, Custom / Legacy, None Detected, Unknown |
BuiltWith, HG Insights, job postings, Guidewire Marketplace | Technographic signal for ICP scoring. Integration-readiness indicator. |
| Document Management System | document_management_system |
Single-line text | Free text | BuiltWith, HG Insights, job postings | Tracks current DMS (SharePoint, Hyland OnBase, Laserfiche, FileNet, etc.). |
| Estimated Monthly Case Volume | estimated_case_volume |
Dropdown select | Under 50, 50-199, 200-499, 500-999, 1000-4999, 5000+, Unknown |
Sales conversations, industry data, company size proxies | Maps to ICP minimum threshold (50+ cases/month). Drives ROI modeling. |
| Annual Revenue Range | annual_revenue_range |
Dropdown select | Under $5M, $5M-$10M, $10M-$50M, $50M-$200M, $200M-$500M, $500M-$1B, $1B-$5B, $5B+, Unknown |
ZoomInfo, Apollo.io, AM Best, SEC filings | ICP firmographic criterion. Below $5M = exclusion. |
| Employee Count Range | employee_count_range |
Dropdown select | Under 10, 10-24, 25-49, 50-99, 100-499, 500-999, 1000-4999, 5000-9999, 10000+ |
Apollo.io, LinkedIn, ZoomInfo | ICP firmographic criterion. Thresholds vary by segment. |
| Primary Line of Business | primary_lob |
Multiple checkboxes | Workers Compensation, General Liability, Auto Liability, Medical Malpractice, Personal Injury, Property, Professional Liability, Disability, Mass Tort |
Manual research, AM Best, NAIC reports | Maps to ICP segments and enables LOB-specific messaging. |
| Geography - Primary | geo_primary |
Dropdown select | US - National, US - Northeast, US - Southeast, US - Midwest, US - Southwest, US - West, Canada - National, Canada - Ontario, Canada - Quebec, Canada - Western, UK, Australia |
Company HQ, operating footprint | ICP geography criterion. US and Canada = primary. |
| Litigation-Heavy State Presence | litigation_heavy_states |
Multiple checkboxes | California, Texas, Florida, New York, Illinois, Pennsylvania, Ohio |
Manual research, state regulatory filings | For law firm segment: presence in high-litigation states increases ICP score. |
| Uses Legacy OCR | uses_legacy_ocr |
Dropdown select | Yes - ABBYY, Yes - Kofax, Yes - Adobe Acrobat Pro, Yes - Other, No, Unknown |
BuiltWith, job postings, sales intel | Technographic signal. Legacy OCR = displacement opportunity. |
| Has BI Tools | has_bi_tools |
Checkbox | Boolean | BuiltWith, HG Insights | Data-driven culture signal. Positive ICP indicator. |
Property Group: Trigger Events
| Property Name | Internal Name | Field Type | Options / Format | Source | Purpose |
|---|---|---|---|---|---|
| Last Trigger Event | last_trigger_event |
Dropdown select | Leadership Change - Claims, Leadership Change - CTO/CIO, Funding Round, Geographic Expansion, Claims Volume Spike, RFP Posted, Competitor Contract Renewal, Workforce Reduction, Regulatory Deadline, Competitor Acquisition Disruption, CMS Migration, M&A Activity, None |
LinkedIn Sales Navigator, Google Alerts, Crunchbase, SAM.gov, press releases | Identifies the most recent trigger for play activation. |
| Last Trigger Event Date | last_trigger_event_date |
Date picker | YYYY-MM-DD | Manual entry when trigger detected | Tracks recency. Triggers older than 90 days lose activation priority. |
| Last Trigger Event Detail | last_trigger_event_detail |
Multi-line text | Free text | Manual entry | Context for the trigger (e.g., "New CCO Sarah Chen hired March 2026, previously at Liberty Mutual"). |
| G2 Intent Signal | g2_intent_signal |
Checkbox | Boolean | G2 free notifications (Phase 1-2); G2 Buyer Intent integration (Phase 3) | Account detected researching on G2. |
| G2 Research Activity | g2_research_activity |
Dropdown select | None, Profile View, Category Browse, Competitor Comparison, Review Read |
G2 free notifications, G2 Buyer Intent (paid) | Granularity on G2 activity type. "Competitor Comparison" = highest intent. |
| G2 Last Activity Date | g2_last_activity_date |
Date picker | YYYY-MM-DD | G2 notifications | Tracks recency of G2 signals for decay. |
| Contract Renewal Month (Competitor) | competitor_renewal_month |
Dropdown select | January, February, March, April, May, June, July, August, September, October, November, December, Unknown |
Sales intel, event conversations, industry contacts | For "Evaluation Season" play. Start content play 6 months before estimated renewal. |
| Contract Renewal Year (Competitor) | competitor_renewal_year |
Dropdown select | 2026, 2027, 2028, Unknown |
Sales intel | Combined with renewal month to calculate activation timing. |
| Hiring Signal Detected | hiring_signal |
Checkbox | Boolean | LinkedIn Jobs, Indeed | Account posting for medical record reviewers, claims analysts, or medical chronology specialists = scaling through hiring signal. |
| Hiring Signal Detail | hiring_signal_detail |
Single-line text | Free text | Job posting monitoring | e.g., "Posted 3x for Medical Record Reviewer in past 60 days" |
Property Group: ABM Ownership
| Property Name | Internal Name | Field Type | Options / Format | Source | Purpose |
|---|---|---|---|---|---|
| ABM Account Owner | abm_account_owner |
HubSpot user | User picker | Manual assignment | Rep responsible for this account's ABM engagement. Receives Slack alerts on triggers and MQA. |
| TAL Import Date | tal_import_date |
Date picker | YYYY-MM-DD | Bulk import | Tracks when account was added to TAL. Enables cohort analysis. |
| TAL Source | tal_source |
Dropdown select | Wisedocs Target List, ICP Match - Automated, Trigger Event Discovery, Referral, Event Attendee, Inbound Escalation |
Manual or automated | Tracks how the account entered the TAL. |
| Last TAL Review Date | tal_last_review_date |
Date picker | YYYY-MM-DD | Quarterly TAL refresh | Tracks when account was last evaluated for tier promotion/demotion. |
Contact Properties
Property Group: ABM Buying Committee
| Property Name | Internal Name | Field Type | Options / Format | Source | Purpose |
|---|---|---|---|---|---|
| ABM Persona | abm_persona |
Dropdown select | Claims Ops Manager (Champion), VP Claims / CCO (Decision Maker), IT Director / Claims Tech (Influencer), CISO / Compliance (Blocker), Claims Adjuster / Reviewer (End User), CFO / Finance (Approver), Legal / Procurement, Other |
Manual assignment based on title matching; auto-suggested by workflow | Maps to the 5-persona buying committee. Drives persona-specific content routing and messaging. |
| Buying Committee Role | buying_committee_role |
Dropdown select | Champion, Decision Maker, Influencer, Blocker, End User, Approver, Unknown |
Manual assignment by sales | Functional role in the purchase decision, independent of persona. A Claims Ops Manager is typically the Champion; a VP Claims is typically the Decision Maker. |
| Contact Engagement Level | contact_engagement_level |
Dropdown select | Cold, Warming, Active, Hot |
Auto-updated by engagement workflow | Individual contact engagement status within the buying committee. |
| Contact Engagement Score | contact_engagement_score |
Number | 0-999 | HubSpot lead scoring (contact-level) | Individual contact score contributing to the company-level Engagement Score. |
| Content Consumed | content_consumed |
Multi-line text | Free text, append-only | HubSpot tracking, manual logging | Running log of content interactions: "2026-03-15: KEMI Case Study; 2026-03-18: WC ROI Calculator". |
| Persona Match Confidence | persona_match_confidence |
Dropdown select | Confirmed, Inferred from Title, Unmatched |
Auto or manual | Tracks whether persona assignment is validated or based on title heuristics. |
| Last Engagement Date | contact_last_engagement_date |
Date picker | YYYY-MM-DD | HubSpot activity tracking | Tracks recency of individual contact engagement. |
| Preferred Content Format | preferred_content_format |
Dropdown select | Case Studies, ROI / Data, Technical Docs, Compliance / Security, Video / Demo, Unknown |
Inferred from content consumption patterns | Enables personalized content recommendations for this contact. |
Auto-Persona Assignment Rules
Map job titles to ABM Persona automatically using HubSpot workflows. These rules fire when a new contact is created or when a contact's job title is updated.
| Title Contains (case-insensitive) | Assigned Persona | Assigned Committee Role |
|---|---|---|
claims operations manager, claims team lead, claims supervisor, senior claims examiner, director of claims operations |
Claims Ops Manager (Champion) | Champion |
vp claims, vice president claims, chief claims officer, cco, svp claims, vp of claims administration |
VP Claims / CCO (Decision Maker) | Decision Maker |
director of it, claims technology, vp information technology, enterprise applications, director of digital transformation, cto, chief technology officer |
IT Director / Claims Tech (Influencer) | Influencer |
ciso, chief information security, information security manager, compliance officer, privacy officer, vp risk management, director of information security |
CISO / Compliance (Blocker) | Blocker |
claims adjuster, claims examiner, medical record reviewer, paralegal, legal nurse consultant, litigation support, vocational rehabilitation |
Claims Adjuster / Reviewer (End User) | End User |
cfo, chief financial officer, vp finance, controller |
CFO / Finance (Approver) | Approver |
managing partner, director of litigation support, legal operations manager |
Claims Ops Manager (Champion) | Champion |
Set persona_match_confidence to Inferred from Title for all auto-assignments. Sales reps should validate and update to Confirmed.
Engagement Scoring Rules
Configure in HubSpot company scoring (requires Marketing Hub Professional or higher). These weights come directly from the intelligence framework's engagement scoring model.
Positive Scoring Events
| Event | Points | Scope | Rationale |
|---|---|---|---|
| Demo request form submission | +20 | Per contact | Explicit hand-raise. Highest intent signal. |
| Pricing or contact page visit (identified account) | +15 | Per account per 7-day window | Late-stage evaluation signal. Cap at once per 7 days to prevent inflation from repeat visits. |
| 3+ page views from account in 14 days | +10 | Per account per 14-day window | Multiple stakeholders researching = organizational interest. |
| G2 category or competitor comparison activity | +10 | Per account per 30-day window | Third-party validation of active vendor evaluation. (Phase 3 with paid G2 Buyer Intent.) |
| Case study page visit (identified account) | +8 | Per account per 7-day window | Mid-funnel signal. Track which case study for vertical routing (KEMI = WC, AGS Rehab = TPA, Turner = IME). |
| Blog content consumption (2+ posts from account) | +5 | Per account per 14-day window | Early-stage research signal. |
| G2 profile view (free tier signal) | +5 | Per account per 30-day window | Lightweight third-party signal available on free G2 tier. |
| Newsletter signup | +3 | Per contact | Top-of-funnel awareness. Low intent but positive signal. |
| Email open (from SalesLoft sequence) | +2 | Per contact per sequence | Minimal signal, but indicates email deliverability and attention. |
| LinkedIn ad click (matched account) | +3 | Per account per 7-day window | Paid channel engagement. Tracked via LinkedIn Campaign Manager export. |
| Event meeting confirmed | +15 | Per account per event | High-intent in-person signal. Conferences: ITC Vegas, NAMIC, CLM, IAIME. |
| Gated content download | +8 | Per contact | Mid-funnel engagement. Requires implementing gated content. |
Negative Scoring (Decay)
| Condition | Points | Frequency | Rationale |
|---|---|---|---|
| 90 days of no engagement activity | -10 | Per 90-day period | Prevents stale scores from inflating account priority. Accounts must show ongoing interest. |
| Email hard bounce | -5 | Per contact | Data quality signal. Contact may have left the organization. |
| Unsubscribe from email | -3 | Per contact | Opt-out signal. Respect the preference. |
MQA Threshold
An account reaches Marketing Qualified Account (MQA) status when: - Engagement Score >= 30 points within a 30-day rolling window - At least 2 distinct contacts from the account have engaged (prevents single-person inflation)
When MQA threshold is crossed:
1. Set abm_stage to MQA
2. Set abm_mqa_date to today
3. Notify abm_account_owner via Slack (or email if Slack integration not configured)
4. For Tier 1 accounts: escalate to sales manager with context package
Calculated Properties
ICP Score Calculation
The ICP Score is a composite of four weighted dimensions. Total possible = 100.
Firmographic Score (0-35 points)
| Criterion | Points | Logic |
|---|---|---|
| Industry match - Primary segment (Carrier, TPA, Law Firm) | 15 | abm_segment IN (Insurance Carrier - US, Insurance Carrier - Canada, TPA / Claims Management, Law Firm - Plaintiff PI/Mass Tort, Law Firm - Defense/Insurance) |
| Industry match - Secondary segment (IME, Government) | 10 | abm_segment IN (IME / QME Firm, Government / State Fund) |
| Revenue above $50M (Carriers/TPAs) or $5M (Law Firms/IME) | 8 | annual_revenue_range >= segment-appropriate threshold |
| Revenue above $200M (Carriers) or $50M (TPAs) | 4 | Additional points for larger organizations |
| Employee count in sweet spot | 4 | 100-10,000 for carriers; 50-2,000 for TPAs; 10-500 for law firms |
| US or Canada geography | 4 | geo_primary starts with US or Canada |
Technographic Score (0-20 points)
| Criterion | Points | Logic |
|---|---|---|
| Claims platform detected (Guidewire, Duck Creek, Majesco, Origami Risk) | 8 | claims_platform NOT IN (None Detected, Unknown) |
| Legacy OCR detected | 5 | uses_legacy_ocr starts with Yes |
| No competitor installed | 5 | current_doc_review_vendor IN (Manual / No Tool, Unknown) |
| Competitor installed but displacement opportunity | 3 | current_doc_review_vendor = DigitalOwl / Datavant (post-acquisition uncertainty) |
| BI tools present | 2 | has_bi_tools = TRUE |
Behavioral Score (0-30 points)
| Criterion | Points | Logic |
|---|---|---|
| G2 intent signal detected | 8 | g2_intent_signal = TRUE AND g2_last_activity_date within 90 days |
| Active trigger event (within 90 days) | 10 | last_trigger_event != None AND last_trigger_event_date within 90 days |
| High-priority trigger (leadership change, RFP, competitor disruption) | 5 | Additional points for last_trigger_event IN (Leadership Change - Claims, RFP Posted, Competitor Acquisition Disruption) |
| Hiring signal detected | 4 | hiring_signal = TRUE |
| Case volume >= 500/month | 3 | estimated_case_volume IN (500-999, 1000-4999, 5000+) |
Engagement Score Component (0-15 points)
| Criterion | Points | Logic |
|---|---|---|
| MQA status reached | 10 | abm_stage = MQA |
| Engaged status | 5 | abm_stage = Engaged |
| Aware status | 2 | abm_stage = Aware |
| 3+ contacts identified in buying committee | 3 | Count of associated contacts with abm_persona != empty >= 3 |
| Champion identified | 2 | At least one contact with buying_committee_role = Champion |
ICP Score Formula (HubSpot calculated property):
icp_score = icp_score_firmographic + icp_score_technographic + icp_score_behavioral + icp_score_engagement
Tier Assignment from ICP Score: | ICP Score Range | Recommended Tier | |----------------|-----------------| | 80-100 | Tier 1 (1:1) | | 60-79 | Tier 2 (1:Few) | | 40-59 | Tier 3 (1:Many) | | Below 40 | Not in TAL (review for removal or re-scoring) |
Workflows
Workflow 1: ICP Score Auto-Calculator
Purpose: Automatically recalculate ICP Score when any component input changes.
- Trigger: Any of these company properties are updated:
abm_segment,annual_revenue_range,employee_count_range,geo_primary,claims_platform,uses_legacy_ocr,current_doc_review_vendor,has_bi_tools,g2_intent_signal,last_trigger_event,last_trigger_event_date,hiring_signal,estimated_case_volume,abm_stage - Actions:
- Calculate
icp_score_firmographicusing the firmographic scoring rules above (use HubSpot branching logic to assign points per criterion) - Calculate
icp_score_technographicusing the technographic scoring rules - Calculate
icp_score_behavioralusing the behavioral scoring rules - Calculate
icp_score_engagementusing the engagement scoring rules - Set
icp_score= sum of four component scores - Notes: HubSpot workflows cannot do complex conditional math natively. Two implementation options:
- Option A (recommended): Use HubSpot Operations Hub custom code actions (JavaScript) to calculate scores with full conditional logic
- Option B: Build a multi-branch workflow with if/then branches for each criterion, setting component scores via copy-property actions. More brittle but works without Operations Hub.
Workflow 2: Tier Assignment Recommendation
Purpose: Flag accounts whose ICP Score suggests a tier change.
- Trigger:
icp_scoreproperty is updated - Actions:
- If
icp_score>= 80 ANDabm_tier!=Tier 1 (1:1):- Create task for ABM Account Owner: "Review [Company] for Tier 1 promotion -- ICP Score: [score]"
- If
icp_scorebetween 60-79 ANDabm_tier=Tier 1 (1:1):- Create task for ABM Account Owner: "Review [Company] for potential Tier 1 demotion -- ICP Score: [score]"
- If
icp_score< 40 ANDabm_tier!=Not in TAL:- Create task for ABM Account Owner: "Review [Company] for TAL removal -- ICP Score: [score]"
- Notes: Tier changes are recommendations, not automatic. Human review prevents score fluctuations from causing tier churn.
Workflow 3: Account Progression - Unaware to Aware
Purpose: Advance accounts from Unaware when first touchpoint is detected.
- Trigger: Company meets ALL of these criteria:
abm_stage=Unawareabm_tierIN (Tier 1 (1:1),Tier 2 (1:Few),Tier 3 (1:Many))- Any of: associated contact opened an email, associated contact clicked a LinkedIn ad (tracked via UTM), LeadFeeder identifies a website visit from this company's domain, G2 profile view detected
- Actions:
- Set
abm_stagetoAware - Set
abm_stage_dateto today - Notes: First touchpoint can be passive (ad impression logged) or active (email open). The threshold is deliberately low -- Aware just means "they have seen us."
Workflow 4: Account Progression - Aware to Engaged
Purpose: Advance accounts from Aware when active interaction occurs.
- Trigger: Company meets ALL of these criteria:
abm_stage=Aware- Any of: website visit from identified account (via LeadFeeder/Apollo.io), content download or form submission by associated contact, case study page visit, G2 profile visit or category browse
- Actions:
- Set
abm_stagetoEngaged - Set
abm_stage_dateto today
Workflow 5: Account Progression - Engaged to MQA
Purpose: Advance accounts to MQA when engagement scoring threshold is crossed.
- Trigger: Company meets ALL of these criteria:
abm_stage=Engagedabm_engagement_score>= 30- Actions:
- Set
abm_stagetoMQA - Set
abm_stage_dateto today - Set
abm_mqa_dateto today - If
abm_tier=Tier 1 (1:1):- Send internal notification to
abm_account_owner: "TIER 1 MQA ALERT: [Company Name] has reached MQA. Engagement Score: [score]. Stage: [stage]. Act within 4 hours." - Create task for
abm_account_owner: "Follow up with [Company Name] -- MQA threshold crossed" (due in 1 business day)
- Send internal notification to
- If
abm_tier=Tier 2 (1:Few):- Send internal notification to
abm_account_owner: "[Company Name] reached MQA. Review for direct outreach." - Create task for
abm_account_owner: "Review MQA account [Company Name]" (due in 3 business days)
- Send internal notification to
- If
abm_tier=Tier 3 (1:Many):- Send internal notification: "[Company Name] reached MQA from Tier 3. Review for tier promotion."
Workflow 6: Engagement Decay
Purpose: Decay engagement scores for stale accounts and regress stage if warranted.
- Trigger: Scheduled workflow, runs weekly on all TAL accounts
- Actions:
- If no engagement activity in past 90 days (no email opens, no website visits, no form submissions, no G2 activity):
- Reduce
abm_engagement_scoreby 10
- Reduce
- If
abm_stage=EngagedANDabm_engagement_score< 10 AND no engagement in 60 days:- Set
abm_stagetoAware - Set
abm_stage_dateto today
- Set
- Notes: Decay prevents permanently inflated scores. Accounts can re-engage and re-qualify.
Workflow 7: Play Enrollment - Trigger-Based
Purpose: Recommend play enrollment when trigger events are detected.
- Trigger:
last_trigger_eventproperty is updated to a non-"None" value - Actions:
- If
last_trigger_event=Leadership Change - Claims:- Create task: "Activate 'New Leader' play for [Company Name]. New [title] hire detected. See trigger detail for context."
- Suggested play:
New Leader
- If
last_trigger_event=Competitor Acquisition Disruption:- Create task: "Activate 'Vendor Transition' play for [Company Name]. Competitor disruption detected."
- Suggested play:
Vendor Transition
- If
last_trigger_event=Funding Round:- Create task: "Activate 'Growth Infrastructure' play for [Company Name]. Recent funding detected."
- Suggested play:
Growth Infrastructure
- If
last_trigger_event=Claims Volume Spike:- Create task: "Activate 'Surge Response' play for [Company Name]. Volume spike detected."
- Suggested play:
Surge Response
- If
last_trigger_event=Competitor Contract Renewal:- Check
competitor_renewal_monthandcompetitor_renewal_year - If renewal within 6 months: Create task: "Activate 'Evaluation Season' play for [Company Name]. Competitor contract renewal approaching [month/year]."
- Suggested play:
Evaluation Season
- Check
- If
last_trigger_event=RFP Posted:- Create urgent task (due today): "RFP detected at [Company Name]. Evaluate eligibility immediately. See trigger detail."
- Notes: Play enrollment is a recommendation (task creation), not automatic. Sales and marketing confirm enrollment and set
abm_active_playmanually.
Workflow 8: Auto-Persona Assignment
Purpose: Automatically assign ABM Persona and Buying Committee Role based on job title.
- Trigger: Contact is created OR
jobtitleproperty is updated - Conditions: Contact's associated company has
abm_tierIN (Tier 1 (1:1),Tier 2 (1:Few),Tier 3 (1:Many)) - Actions:
- Run title-matching rules (see Auto-Persona Assignment Rules table above)
- Set
abm_personato matched persona - Set
buying_committee_roleto matched role - Set
persona_match_confidencetoInferred from Title - If no title match: set
persona_match_confidencetoUnmatched, leave other fields empty
Workflow 9: Contact Engagement Level Update
Purpose: Maintain contact-level engagement status.
- Trigger: Scheduled workflow, runs daily on all contacts at TAL companies
- Actions:
- If contact submitted a demo request form OR had a meeting in past 14 days:
- Set
contact_engagement_leveltoHot
- Set
- Else if contact opened 3+ emails OR visited 2+ pages in past 30 days:
- Set
contact_engagement_leveltoActive
- Set
- Else if contact opened 1+ email OR visited 1+ page in past 60 days:
- Set
contact_engagement_leveltoWarming
- Set
- Else:
- Set
contact_engagement_leveltoCold
- Set
Workflow 10: Buying Committee Coverage Alert
Purpose: Alert sales when a Tier 1 account lacks sufficient buying committee coverage.
- Trigger: Scheduled workflow, runs weekly on Tier 1 accounts
- Conditions:
abm_tier=Tier 1 (1:1)ANDabm_stageIN (Engaged,MQA) - Actions:
- Count associated contacts with
abm_personaset (not empty) - If fewer than 3 personas covered:
- Create task for
abm_account_owner: "Buying committee gap at [Company Name]. Only [X] personas identified. Target roles: [missing roles]. Use Apollo.io to identify contacts."
- Create task for
- If no
Decision Makerpersona identified:- Escalate task priority: "No Decision Maker identified at [Company Name]. Deals without VP/CCO engagement stall at Stage 2-3."
Implementation Checklist
Execute in this order. Each step depends on the ones before it.
Phase 1: Property Creation (Day 1-2)
- [ ] Create property group "ABM Program" in HubSpot Settings > Properties > Company
- [ ] Create property group "Account Intelligence" in Company properties
- [ ] Create property group "Trigger Events" in Company properties
- [ ] Create property group "ABM Ownership" in Company properties
- [ ] Create all company properties per the tables above (34 properties total)
- [ ] Create property group "ABM Buying Committee" in Contact properties
- [ ] Create all contact properties per the table above (8 properties total)
- [ ] Verify all dropdown options are entered exactly as specified (spelling, capitalization)
Phase 2: Scoring Configuration (Day 2-3)
- [ ] Configure company-level engagement scoring in HubSpot (Marketing Hub Professional required)
- [ ] Add all positive scoring events with specified point values
- [ ] Configure decay rules (-10 points per 90 days of no activity)
- [ ] Set MQA threshold to 30 points
- [ ] Configure contact-level lead scoring with matching criteria
- [ ] Test scoring by manually triggering events on a test company record
Phase 3: Workflow Creation (Day 3-7)
Build workflows in this order (later workflows reference earlier ones):
- [ ] Workflow 8: Auto-Persona Assignment (independent, can run immediately)
- [ ] Workflow 3: Account Progression - Unaware to Aware
- [ ] Workflow 4: Account Progression - Aware to Engaged
- [ ] Workflow 5: Account Progression - Engaged to MQA (depends on scoring)
- [ ] Workflow 6: Engagement Decay (depends on scoring)
- [ ] Workflow 9: Contact Engagement Level Update
- [ ] Workflow 1: ICP Score Auto-Calculator (complex -- allocate extra time)
- [ ] Workflow 2: Tier Assignment Recommendation (depends on Workflow 1)
- [ ] Workflow 7: Play Enrollment - Trigger-Based
- [ ] Workflow 10: Buying Committee Coverage Alert
Phase 4: TAL Data Import (Day 7-10)
- [ ] Prepare CSV with all ~300 TAL accounts including: Company Name, Domain, ABM Tier, ABM Segment, ABM Sub-Segment, ABM Stage (set all to "Unaware")
- [ ] Include any known values for: Annual Revenue Range, Employee Count Range, Geography, Claims Platform, Current Doc Review Vendor
- [ ] Import CSV via HubSpot bulk import, matching on domain (primary key)
- [ ] Verify import: spot-check 20 accounts across all three tiers
- [ ] Set
tal_import_dateto import date for all imported accounts - [ ] Run ICP Score calculator workflow manually on imported accounts
Phase 5: Integration Verification (Day 10-14)
- [ ] Verify LeadFeeder > HubSpot integration is active (website visitor identification)
- [ ] Verify Apollo.io > HubSpot integration is active (contact enrichment + visitor tracking)
- [ ] Verify SalesLoft > HubSpot integration is active (email/sequence activity)
- [ ] Configure G2 profile view notifications (free tier)
- [ ] Set up LinkedIn Campaign Manager CSV export process (weekly) for matched audience reporting
- [ ] Test end-to-end: simulate a website visit from a TAL account and verify scoring + stage progression fires correctly
Phase 6: Dashboard Build (Day 12-14)
- [ ] Build Executive Dashboard per specification (6 widgets)
- [ ] Build Operational Dashboard per specification (7 widgets)
- [ ] Create saved filters: "TAL Accounts", "Tier 1 Accounts", "MQA Accounts", "Accounts with Active Plays"
- [ ] Schedule weekly operational dashboard email to ABM team
- [ ] Schedule monthly executive dashboard email to leadership
Data Migration Notes
Backfilling Existing CRM Data
Wisedocs likely has existing company and contact records in HubSpot from form submissions and Apollo.io enrichment. Here is how to populate the new schema with existing data.
Step 1: Identify Existing TAL Matches - Export all HubSpot company records with domains - Cross-reference against the TAL domain list (from TAL document) - Any match = existing record that needs ABM property enrichment - Expected: 20-50 existing records may match TAL accounts (from form submissions, demo requests, or Apollo.io sync)
Step 2: Enrich Existing Records
- For matched records, update ABM Tier, ABM Segment, and ABM Stage based on current engagement level:
- If they have had a demo or meeting: set abm_stage = Engaged or MQA
- If they have form submissions: set abm_stage = Engaged
- If they have website visits only: set abm_stage = Aware
- If no activity: set abm_stage = Unaware
- Backfill abm_stage_date using the earliest known activity date
Step 3: Contact Enrichment - For contacts at TAL accounts already in HubSpot, run Auto-Persona Assignment workflow - Manually review and confirm persona assignments for Tier 1 contacts - Use Apollo.io to enrich missing buying committee contacts at Tier 1 accounts (target: 5+ contacts per Tier 1 account)
Step 4: Historical Deal Mapping - Pull any closed-won or open deals associated with TAL company records - Tag these deals with ABM properties for baseline measurement - This establishes the pre-ABM pipeline baseline required by the Month 1 benchmarking plan
Step 5: Technographic Backfill - For Tier 1 accounts: manually research and populate Claims Platform, Document Management System, Current Doc Review Vendor, Uses Legacy OCR - Sources: BuiltWith, HG Insights, Guidewire Marketplace, job postings, LinkedIn profiles - For Tier 2 and Tier 3: populate opportunistically from enrichment tools; do not invest manual research time
Step 6: Trigger Event Backfill
- Search LinkedIn Sales Navigator for recent leadership changes at Tier 1 accounts (past 90 days)
- Search Crunchbase for recent funding rounds at TAL accounts
- Search SAM.gov and state procurement portals for active RFPs
- Populate last_trigger_event, last_trigger_event_date, and last_trigger_event_detail for any findings
Deduplication Rules
- Primary key: Company domain. All contacts, activities, and signals roll up to the company using domain matching.
- Duplicate detection: Run HubSpot's built-in duplicate management tool after TAL import. Merge duplicates keeping the record with the most activity history.
- Cross-source dedup: Apollo.io, LeadFeeder, and SalesLoft all create company records independently. Set up a weekly dedup audit:
- Export companies with
abm_tierset - Check for duplicate domains
- Merge, preserving ABM properties and activity history
- Contact dedup: Match on email (primary) and LinkedIn URL (secondary). Apollo.io enrichment frequently creates duplicate contacts -- run weekly dedup.
HubSpot Tier Requirement
| Feature | Required HubSpot Tier | Alternative if Unavailable |
|---|---|---|
| Custom company properties | Free CRM | N/A -- available on all tiers |
| Custom contact properties | Free CRM | N/A -- available on all tiers |
| Company scoring | Marketing Hub Professional | Manual score entry or Operations Hub custom code |
| Contact scoring | Marketing Hub Professional | Manual score entry |
| Workflows (property-based) | Marketing Hub Professional | Manual process checklists |
| Workflows (scheduled/recurring) | Marketing Hub Professional | Weekly manual review process |
| Custom reports & dashboards | Reporting add-on or Professional | Export to Google Sheets |
| Operations Hub custom code | Operations Hub Professional | Multi-branch workflows (more brittle) |
If Wisedocs is on HubSpot Free or Starter, the recommended upgrade path is: 1. Immediate: Upgrade to Marketing Hub Professional ($800/month) -- unlocks scoring, workflows, and reporting 2. Month 3: Evaluate Operations Hub Professional ($800/month) -- unlocks custom code actions for ICP score calculation 3. Month 6: Evaluate G2 Buyer Intent paid tier -- unlocks native HubSpot integration for third-party intent signals
Property Count Summary
| Category | Count |
|---|---|
| Company properties (ABM Program group) | 14 |
| Company properties (Account Intelligence group) | 12 |
| Company properties (Trigger Events group) | 10 |
| Company properties (ABM Ownership group) | 4 |
| Contact properties (ABM Buying Committee group) | 8 |
| Total custom properties | 48 |
| Workflows | 10 |
| Dashboards | 2 |
HubSpot allows up to 1,000 custom properties per object on Professional tier. This schema uses 40 company properties and 8 contact properties -- well within limits.
How This Was Made
- Gemini Deep Research handled the initial broad research sweeps — competitive landscape, SERP analysis, market positioning. It synthesizes large amounts of web data quickly, which made it the right tool for the discovery phase.
- Claude (Anthropic) powered the specialized analysis agents. Each audit — technical SEO, content gaps, website messaging, social presence, paid ads, email nurture, pricing, review mining, keyword landscape, SERP competition — was run by a purpose-built agent with a specific evaluation framework.
- Every finding was human-reviewed. All agent outputs were presented through a custom review application where Jono reviewed each finding individually — starring high-value signals, keeping relevant ones, reworking those that needed refinement, and discarding those that missed the mark.
- The deliverable itself was drafted by a writing agent, then reviewed against the approved findings and brand standards by a reviewer agent. Jono made the final editorial decisions.
- The proposal site, design system, and all tooling were built by Claude Code.
AI-native workflows let one person do what agencies need teams for. The AI does the heavy lifting. The human makes every judgment call.