HubSpot Configuration Guide
Last updated: July 24, 2026
Overview
The Tabs–HubSpot integration keeps customer, contract, and invoice data in sync between the two systems, so your team can manage billing in Tabs without duplicating work in HubSpot.
At a high level, here's what happens once you connect HubSpot:
You choose what syncs in. For each Tabs object — Customer, Contract, Address, Contact, Invoice — you turn syncing on or off. Some objects depend on others (for example, Contract can't sync unless Customer sync is on), so Tabs will guide you through valid combinations automatically.
You choose where data comes from. For Customer, Contact, and Address, you pick which HubSpot object is the source — for example, whether Customer should be sourced from
CompanyorContactrecords.You map the fields. Once a source object is chosen, you connect individual Tabs fields (like Customer Name or Contract Start Date) to the corresponding HubSpot fields. Required fields must be mapped before your configuration can go live.
You configure sync behavior. Under Filters & Routing, this includes which Deals are eligible to sync as contracts (by pipeline and stage, and by any additional sync filters you add), and where contract documents come from.
You save and sync. Once required fields are mapped, you save the configuration. From that point on, Tabs keeps the mapped data flowing on an ongoing basis — pulling in updates from HubSpot for the objects you've configured, and pushing invoice and payment data back out to HubSpot automatically.
The HubSpot sync automatically runs every 4 hours, and can be manually triggered in Tabs at any point.
The rest of this guide walks through each configuration section in detail. For the exact rules governing what can and cannot be selected as well as a deep dive on the rules and logic behind sync filters, see CRM Sync and Mapping Rules.
Configuration guide
The configuration page is organized into two groups of sections: Entities (Customer, Contract, Address, Contact, Invoice) and Filters & Routing (Pipeline Filters, Sync Filters). You land on Pipeline Filters by default when you open the page. This layout and navigation is identical to Salesforce's — the two CRMs share the same configuration experience, with the differences called out below.
Object sync
Each entity section has a sync toggle in its header (labeled "Syncing enabled"/"Syncing disabled"), along with a badge showing whether that entity is pulled from HubSpot or pushed to it:
Object | Direction | Notes |
|---|---|---|
Customer | Pull | Turning this off also turns off Contract and Invoice, since both depend on customer records existing. |
Contract | Pull | Requires Customer to be on. |
Address / Contact | Pull | Optional, independent entities alongside Customer. |
Invoice | Push | Requires Contract (and therefore Customer) to be on. Always pushed from Tabs to HubSpot — there's no source object to choose. |
Payments (not independently toggleable) | Push | Requires Invoice to be on. Always pushed from Tabs to HubSpot. |
Choosing a source object
Pull from HubSpot to Tabs
For Customer, Contact, and Address, pick which HubSpot object should be the source:
Customer: Most commonly
CompanyContact: Most commonly
CompanyorDealAddress: Most commonly
CompanyorDeal
This is a single choice per entity — you can't source the same Tabs object from two HubSpot objects at once. Whichever you choose determines which fields are available to map in the field mapping table below it.
Contract doesn't have its own primary-object picker here — its source (Deal) is set as part of the Contract - Document Source section (see below), since the document is what ultimately defines the contract.
Push from Tabs to HubSpot
Invoice and Payments don't have this choice — they sync to a fixed, Tabs-managed HubSpot object (HubSpot's native Invoice object), since Tabs is always the source for that data. Unlike Salesforce, there's no "Associated Object" to configure here — HubSpot's destination-object control is shown but always disabled, since HubSpot invoices don't have an associated-object concept.
Field mapping
Once a source object is selected, map each Tabs field to a HubSpot field using the CRM field control next to it. A few things to know:
Each Tabs field can only be mapped once — once a field is used, it disappears from the list of available targets for other rows.
Fields marked required must be mapped before you can save.
Unlike Salesforce, each row's Source object is fixed to the entity's primary object — it's shown as a plain read-only label, not a dropdown. There's no way to pull an individual field from a different, related HubSpot object; everything comes from the one object you chose above.
Note: For Contract specifically, there is no field mapping table at all — see Contract - Document Source below.
Fields mapped this way are pulled one-directionally from HubSpot to Tabs and only sync in once (at initial sync), without consistently updating afterward. The exception is the Additional fields section on Customer, which syncs on an ongoing basis — those field values keep updating in Tabs whenever they change in HubSpot, both on initial sync and afterward. Contact and Address also support an "Additional fields" table for extra field mappings, but those follow the standard one-time-sync behavior, not the Customer's continuous-sync behavior.
Contract - Document Source
Unlike Salesforce, HubSpot contracts always come from a document, and you choose where from — this section is a non-exclusive, multi-select of options (you can enable more than one at once):
Direct Files — files uploaded directly to the Deal.
Note Attachments — files attached as notes on the Deal.
Email Attachments — files attached to logged emails on the Deal.
Custom File Property — a specific file-type property on the Deal you choose from a second dropdown.
Quotes — the signed quote PDF generated by HubSpot's Quotes feature. When a contract is sourced from a signed quote, Tabs can also read structured contract data directly from the quote rather than only processing the attached PDF.
CRM or Contract source of truth
Customer, Contact, and Address each have their own Source of truth control (shown in that entity's section, once the entity is syncing and Contract is syncing):
CRM — Tabs syncs the data from HubSpot based on the configured field mappings in that section.
Contract document — Tabs uses the data from the contract document to populate that section. If those fields aren't found in the document, Tabs falls back to the field mappings configured.
Source of truth is independent per entity — for example, you can have Contact come from HubSpot while Address comes from the contract document. If Contract is set as the source of truth for a given entity, that entity's field mapping section shows a banner noting the mappings below only apply as a fallback.
Sync filters (Filters & Routing)
Two separate sections control which HubSpot records are eligible to sync into Tabs as contracts — the same two sections Salesforce has:
Pipeline Filters
Cutoff date — Deals with a Close Date before this date won't be pulled into Tabs. Useful for excluding old, closed-out contracts from your initial sync.
Pipeline and stage — unlike Salesforce's single pipeline, HubSpot lets you add multiple pipelines ("+ New Pipeline"), each with its own multi-select of stages. Only Deals in the selected stage(s), across any of the added pipelines, sync in as contracts.
Sync Filters (conditional/record-attribute filters)
These do exist in the HubSpot UI, in the same "Sync Filters" section as Salesforce — add filter rows via "+ Add New." Each row defines a Tabs entity (Customer or Contract), a HubSpot object, a field on that object, an operator (
equals,not equals,contains,greater than,less than,in,is set,is not set), and a value to match against.Unlike Salesforce, the object for a filter row is fixed to the entity's primary object — there's no option to point a filter at a related object instead. See CRM Sync Mapping Rules for more on this difference.
Only records matching all added filters sync in. If no filters are added, all records sync (subject to the Pipeline Filters stage selection, for Contract).
Saving your configuration
Once all required fields are mapped, save your configuration to activate it. Tabs will begin syncing based on your settings going forward. If you later change field mappings or object choices, saving updates the live sync accordingly — existing synced records are not overwritten and new configuration takes effect on subsequent syncs.