Citrus America Contact-Company Data Sync Pattern
Overview
When qualifying data (e.g., "Are you juicing?") is captured during a sales conversation, there is a tension between two valid needs:
- Data durability — if a contact leaves, qualifying information about the business should not be lost
- Sales workflow efficiency — reps work primarily in contact records and should not have to navigate between contact and company views to see or enter key data
The solution adopted for [1] resolves this tension by storing qualifying data at the company level as the source of truth, then using an automation to sync that data to the associated contact record.
The Problem
Qualifying fields (e.g., "Are you juicing?", volume estimates, application types) were initially placed on the contact record. This created two risks:
- If a contact leaves or is archived, the qualifying data about the business is lost with them
- Storing data only at the company level forces reps to jump between contact and company views, reducing adoption
Neither pure-contact nor pure-company storage alone satisfies both requirements.
The Pattern
1. Capture via a Unified Form
Create a single lead intake form that collects both contact-level fields (name, email, phone, state, category) and company-level qualifying fields (juicing status, volume, application type) in one pass. The rep fills out one form; HubSpot routes each field to the correct object.
This eliminates the navigation burden that discourages reps from entering company-level data directly.
2. Store Qualifying Data at the Company Level
Fields like "Are you juicing?" are written to the company record. This ensures the data persists even if the associated contact is deactivated or reassigned.
3. Sync to Contact via Automation
A workflow monitors the company-level qualifying fields and copies their values to the corresponding fields on all associated contact records. This means:
- The contact record shows the qualifying data without the rep having to enter it twice
- Lifecycle stage workflows (MQL, SQL) can still trigger on contact-level field values
- Manual overrides on the contact record remain possible; the sync is one-directional and not a hard lock
Note: The contact and company fields are not continuously synchronized — the automation fires on change, so a manual edit to the contact field will not be overwritten unless the company field changes again.
4. Lifecycle Automation Reads Both Objects
The MQL workflow evaluates a combination of contact fields and company fields:
| Field | Object |
|---|---|
| First Name, Last Name, Email, Phone, State, Category | Contact |
| Associated Company exists | Contact → Company association |
| "Are you juicing?" = Yes or "No, but interested" | Contact (synced from Company) |
The SQL workflow reads four BANT fields on the contact record. When all four are set to a qualifying value, a deal is automatically created and assigned to the contact owner.
Why Not Just Use Company Fields in the Workflow Directly?
HubSpot workflows can evaluate both contact and company fields in a single enrollment trigger. However, keeping a synced copy on the contact record provides two practical benefits:
- Sales visibility — reps see all relevant data in one place without switching objects
- Workflow simplicity — existing contact-based lifecycle workflows do not need to be restructured to cross-reference company fields
Implementation Checklist
- [ ] Create unified lead intake form (contact + company fields in one form)
- [ ] Add qualifying fields (juicing status, volume, application type) to the Company object
- [ ] Build sync workflow: on Company qualifying field change → update associated Contact field(s)
- [ ] Verify MQL workflow enrollment criteria include the synced contact field
- [ ] Add BANT fields to the Deal record for post-conversion visibility
- [ ] Confirm SQL workflow creates deal and assigns deal owner = contact owner
Related Context
- This pattern was defined during a [2] with Miriam Framson (Citrus America) and the Asymmetric team
- A data cleanup of ~6,260 contacts (3,260 assigned to deactivated user Jay; ~3,000 unassigned) is planned after the new workflow and form are live, to avoid re-triggering automations against incorrectly owned records
- See [3] for the deal creation workflow details
Applicability
This pattern applies broadly to any HubSpot implementation where:
- A business sells to companies (B2B), not individuals
- Qualifying data describes the business rather than a specific person
- Sales rep adoption is a concern and navigation friction must be minimized
- Contact turnover at customer accounts is expected