Skip to main content

Connect HubSpot with Statisfy

The HubSpot integration syncs your CRM data into Statisfy, including companies (accounts), contacts, deals (opportunities), and custom fields. This enables unified customer intelligence across your sales and customer success workflows. Prerequisites:
  • Admin access to both HubSpot and Statisfy
  • HubSpot account with API access enabled

What Data Gets Synced

An account’s domain comes from the company’s Website. When a company has no website, Statisfy uses its Company domain name instead. The domain is how emails and meetings are matched to the account. Your own company’s domains and personal email domains, such as gmail.com, are never used as an account’s domain.

Steps to Connect

  1. Log in to Statisfy.
  2. Navigate to: Integrations → Admin Apps → HubSpot → Connect
  3. Click Connect to initiate the OAuth flow.
  4. You’ll be redirected to HubSpot. Sign in and authorize Statisfy to access your HubSpot data.
  5. After successful authentication, the HubSpot app will appear as Connected in Statisfy.
  6. Open Integrations → HubSpot → Settings to configure what syncs — no support ticket needed. The settings page has three sections:
    • Account Filtering (required) — which companies to sync, and whether they come in as Customers, Prospects, or Partners
    • Owner Mapping — which HubSpot owner properties identify each owner (CSM, Account Owner, and so on). Only owner (user lookup) properties are listed
    • ARR & Renewal — where annual recurring revenue and renewal dates come from: a company property, a calculation across associated records (deals, line items, products, or tickets), or skip
    Property pickers are loaded from your live HubSpot account, conditions are validated as you build them, and every save is versioned (see Integration Concepts).

Configuration Options

Configure which HubSpot companies sync to Statisfy using filters:Single Account Type: Sync all companies matching specific criteria as “Customers”:
  • Filter by lifecycle stage (e.g., lifecyclestage = customer)
  • Filter by custom status field (e.g., customer_status = Active)
Multiple Account Types: Sync different company types with separate filters:
  • Customers: Companies with type = Customer
  • Prospects: Companies with type = Prospect and lifecyclestage = opportunity
  • Partners: Companies with type = Partner
  • Churned: Companies with type = Former Customer
  • Custom: Companies with type = Location, synced under a label you choose (see below)
Each account type can have its own filter criteria, and companies are classified based on which filter they match first. Custom filters always match last.Churned filter: Companies matching a Churned filter sync with the type Churned. A Churned filter can’t be your only filter. Add at least one Customer, Prospect, or Partner filter with a condition, or Statisfy won’t save the configuration.
Adding a Churned filter changes how Statisfy handles churn:
  • Statisfy stops marking companies as churned automatically. Your Churned filter becomes the only source of churn.
  • Every company that matches none of your filters (Customer, Prospect, Partner, or Churned) is marked deleted and removed from Statisfy, and its opportunities are archived.
If you don’t add a Churned filter, churn works as it did before.
Custom filter: Add a Custom filter to bring in companies that aren’t customers, prospects, or partners but that your team still wants to see, such as locations or subsidiaries.
  • A Custom filter needs a Label, for example Location. The label becomes the company’s type in Statisfy: the Type column shows it, and the Accounts page lists these companies on their own tab named after it.
  • Custom companies show in the product, but no health, workflow, or report runs on them.
  • Custom filters match last. A company that a Customer, Prospect, Partner, or Churned filter also returns gets that filter’s type.
  • A Custom filter can’t be your only filter, and it doesn’t count toward the Customer, Prospect, or Partner filter you need to save.
  • Custom companies sync in their own run once a month, without their contacts or deals.
  • When a Custom company no longer matches any Custom filter, Statisfy marks it Churned. It isn’t deleted.
Map HubSpot owner properties to Statisfy owner types:Owner information is automatically resolved from HubSpot user records.The property picker only lists owner properties. HubSpot marks a property as an owner lookup when its values are HubSpot user records — hubspot_owner_id and any custom “owner” property you created on the company object. Those are the only properties that appear in the dropdown, because they are the only ones Statisfy can resolve to a real user (name, email, and a link to the Statisfy user).Properties that merely contain an owner’s name as text are deliberately excluded, even when they look like owner fields:
  • Rollup or calculated properties such as ae_owner__most_recent_closed_deal_, which copy a display name off an associated deal
  • Plain text or dropdown properties holding a name or an email address
These hold a name, not a user record, so Statisfy cannot look the person up in HubSpot. If you need one of them mapped to an owner type, contact support@statisfy.com — it needs a name-to-user mapping configured on our side.
If a mapping was configured before this restriction existed, the settings page still shows the saved property name and keeps syncing it — you just can’t re-select it from the dropdown. Choosing a different property replaces it permanently.
Map your HubSpot fields to Statisfy’s standard fields:
  • ARR Field: The HubSpot property containing the account’s revenue. It holds whichever metric you choose in the account revenue metric setting: ARR (the default) or MRR. Statisfy stores the value as-is, without converting between the two. With MRR selected, the field is labeled MRR Property.
  • Renewal Date Field: The HubSpot property containing the next renewal date
These mappings ensure accurate revenue tracking and renewal forecasting.
Choose extra HubSpot contact properties to sync to people. Each property you add syncs to people as a custom field.
  1. In the HubSpot configuration, open Contact Properties.
  2. Under HubSpot Contact Properties, search for a property and select it. Repeat for each property you want.
  3. Save the configuration.
  • The picker lists only properties that Statisfy can sync as plain custom fields. Owner lookups are not listed.
  • Statisfy does not create properties in HubSpot. You can only pick properties that already exist.
  • If you add no properties, no contact custom fields sync.

Filtering on enum (dropdown) fields

Filters must use the property’s internal value, not the display label. HubSpot enum/dropdown options have a label (what users see in the UI) and an internal value (what the API matches on) — these are often different. If a filter uses the label, the HubSpot Search API silently returns zero records, and any field that depends on it (ARR, renewal date, etc.) will appear empty on accounts.
The same rule applies to propertyName: it must be the property’s internal name (e.g., deal_lifecycle_stage), not its display name (e.g., “Contract Status”). Common gotcha: Legacy properties that were converted from boolean to enum often retain option values like "true" / "false" even when their labels read as something readable like “Active Contract” / “Inactive Contract”. How to find the internal value:
  • In HubSpot, go to Settings → Properties → [object] properties, click into the property, and inspect each option — the internal value is shown alongside the label (sometimes only visible when editing the option).
  • Or call the HubSpot API: GET /crm/v3/properties/{object}/{propertyName} returns each option’s value and label.
Symptom of getting it wrong: the filter matches zero records, and any field that depends on it (e.g., ARR, renewal date) shows up empty on accounts — with no error. Example:
The "true" value above looks unusual because the property was originally a boolean before being converted to an enum — a common HubSpot pattern.

Custom Fields

Custom fields from HubSpot are automatically synced to Statisfy:
  • Text fields → Text custom fields
  • Number fields → Numeric or currency fields (based on configuration)
  • Date fields → Date custom fields
  • Dropdown/Select fields → Text or multi-select fields
  • Owner lookup fields → User lookup fields
Field validation rules (max length, decimal places) are also imported to maintain data consistency.

Sync Behavior

Initial sync may take some time depending on the volume of data in your HubSpot account.
  • Incremental sync: After initial sync, only changed records are updated
  • Bi-directional sync: Edits in Statisfy can go back to HubSpot. See Sync changes back to HubSpot
  • Churn detection: Unless you add a Churned filter, customers that no longer match your filters are automatically marked as churned. With a Churned filter, only companies it matches are churned, and customers that match no filter are marked deleted instead.
  • Soft deletion: Non-customer accounts (prospects, partners) are marked deleted when they no longer match your filters

Sync changes back to HubSpot

Statisfy can send your edits back to HubSpot. This is off until you turn it on. Turn it on:
  1. Go to Settings → Object Manager.
  2. Open the CRM Fields section for the object you want, for example Opportunity or People.
  3. Turn on the Enable upstream sync checkbox in the header of that section.
Each object has its own setting. Turn on People to send contacts. Turn on Opportunity to send deals. When you turn on People or Opportunity, a confirm dialog shows how many records the first sync will update, create or link, and skip. Select Turn on to confirm or Cancel to keep it off. Accounts use the same checkbox in the Account section. For Meetings, open the Activity tab and set the Upstream Target Object of Meeting Activity to Call.
The Opportunity setting also lets you edit CRM opportunities in Statisfy. When it is off, those fields are read-only.
What goes back to HubSpot: Contacts:
  • A person with no email is not created in HubSpot. HubSpot uses the email to find duplicates.
  • Before Statisfy creates a contact, it looks for a HubSpot contact with the same email. If it finds one, it links that contact. It does not make a copy.
  • When Statisfy links a contact, the names and job title in HubSpot stay as they are. Statisfy writes only custom fields.
  • Statisfy does not create a contact for a person with no customer, a person whose customer has no HubSpot company, or a person whose email is on your company’s own or alias domain. Linked contacts still update. See When Statisfy does not create a contact.
  • A new contact is linked to the HubSpot company of its account.
  • Statisfy updates a linked contact by its HubSpot ID.
  • Statisfy never sends an email that you edit in Statisfy to HubSpot. An email edit does not create a new contact.
  • HubSpot has no middle name property, so Statisfy does not send middle names.
What does not go back:
  • Statisfy does not delete records in HubSpot. If you delete a record in Statisfy, it stays in HubSpot.
  • Statisfy does not create properties in HubSpot. A custom field goes back only when it maps to a HubSpot property that already exists.
  • Statisfy does not write to read-only HubSpot properties.
If a change does not reach HubSpot: Open Integrations → View monitoring → Sync Issues. It lists each record that HubSpot rejected, with the reason. See Sync Issues. If Retry or Force sync reports that sync is off, turn on Enable upstream sync for that object.

Troubleshooting

Check your filters:
  • Ensure companies match at least one configured filter
  • Verify the filter field values are correct in HubSpot
Check permissions:
  • Ensure the connected HubSpot user has access to view companies
Contacts are synced via their association to companies. Ensure contacts are properly associated with companies in HubSpot.
  • Verify the owner property is populated in HubSpot
  • Check that the HubSpot user exists and has an email address
  • Check the Owner Mapping section under Integrations → HubSpot → Settings — the property mapped to each owner type must be the one your HubSpot records actually use
  • If the property name shown there is greyed-in text you can no longer find in the dropdown, it is a text or rollup property rather than an owner lookup. See Owner Mappings above
The Owner Mapping dropdown lists only owner (user lookup) properties on the company object. A property is missing if it is a text, dropdown, or rollup property — even when its name says “owner” — or if it is hidden in HubSpot.To make it selectable, create an owner-type property in HubSpot (Settings → Properties → Create property → Field type: HubSpot user), populate it, and it will appear in the dropdown on the next time you open the picker.

Need Help?

For configuration assistance or troubleshooting, contact support@statisfy.com.