Skip to main content

Revenue sync in Planhat CRM integrations

How to sync Deals, Line Items and Products between Planhat and Salesforce or HubSpot

Written by Carly Hammond
Updated over 2 weeks ago

Summary

  • Planhat's revenue data models (as of early 2026) are Deal, Line Item and Product

  • These models can be mapped to suitable objects in Salesforce and HubSpot, with the relevant records synced to and/or from Planhat using our native integrations

  • You can configure the mapping on both the model/object level and the field level, including specifying your chosen sync directions

Who is this article for?

  • Anyone interested in how Planhat can sync revenue data with external CRM systems (specifically Salesforce and HubSpot)

  • Tech/Ops Users configuring these integrations, whether from scratch or converting from using Planhat's previous revenue data models

This article refers to new revenue features in Planhat, launching in early 2026, so you may not have access to them yet. Please speak with your Planhat CSM if you would like to discuss the rollout.

Introduction

Planhat is designed for running a wide range of functions for a wide range of businesses. When it comes to revenue, Planhat can be used for both new-business sales (as a CRM), and post-sales (including renewals and upsells etc., as a CSP). Planhat is fully compatible with both recurring revenue (subscriptions/licenses) and one-off revenue (fees).

It's easy to sync data into (and out of) Planhat, connecting it with other tools you may have been using, whether that's a simple sync to transfer data into Planhat before you deprecate the other software, or you plan to be using Planhat and the other software concurrently. There are a variety of methods available for transferring data to/from Planhat, and one of these is native integrations, which are built-in (yet customizable) features within Planhat for connection and data sync.

In early 2026, we are introducing a new set of data models for revenue - Deal, Line Item and Product - which you can read a summary of in the "Definitions" box below.

In this article, we will take a look specifically at the native Planhat integrations for Salesforce and HubSpot, and in particular how you can sync these three new revenue data models. This gives a useful overview whether you are new to Planhat, or you are an existing Planhat customer who has previously set up the Salesforce or HubSpot integrations with the older, legacy data models and would like to learn how to sync with the new data models.

To summarize, you can have a bidirectional sync for Deals, Line Items and Products if desired, or choose to sync one-way (or not at all, e.g. if you don't want to sync Products). You can also configure syncing on an individual field level.

πŸ“Œ Definitions

  • "Data models" - also called simply "models" - are the Planhat equivalent of the "objects" you may be familiar with from other tools. Data is organized into these models - we go through some key examples below. Within these models, individual examples of data are called "records"

  • "Company" is the model for organizations that are your prospects and customers - e.g. Company records could be "Apple" and "Zoom". Company is at the top of the Planhat data model structure

  • "Deal" is the "parent" revenue model for both potential sales (opportunities), confirmed sales and lost opportunities. Deals can have one or more (or no) Line Items associated with them. Each Deal is associated with a specific Company - e.g. a Deal record could be "Renewal Deal for Gong"

  • "Line Item" is a "child" model to the Deal model. Each Line Item corresponds to a specific unit of revenue - a "Subscription" (recurring revenue) or a "Fee" (non-recurring revenue). Each Line Item corresponds to a specific Deal, so that means it's (forecasted/actual/lost) revenue for a specific Company. An example Line Item record could be "Advanced Data on Deal with Scribe"

  • "Product" records act as (optional) templates for Line Items, e.g. "Advanced Data". They are housed in the "Product Catalog" within the "Settings" Global Tool

πŸ“š Further reading

If you would like to learn about the Salesforce and HubSpot integrations more generally (such as the main principles, and information about mapping non-revenue models/objects), you can read the main articles on these integrations here:


Salesforce


Data mapping summary

Planhat model

Sync direction

Salesforce object

Deal

Bidirectional (or one-way)

Opportunity

(or custom object)

Line Item

Bidirectional (or one-way)

OpportunityLineItem

(or alternative object)

Product

Bidirectional (or one-way)

Product2

(or custom object)


Planhat Deal - Salesforce Opportunity

The Planhat Deal model is mapped to the Salesforce Opportunity object, or a custom object. When we list Salesforce fields below, we will be referring to the typical mapping with Opportunity.

Required fields for mapping

  • Planhat "Name" to Salesforce "Name"

Example optional fields for mapping

  • Planhat "Currency" to Salesforce "Opportunity Currency"

    • This is not mandatory since Planhat defaults to the tenant base currency (set in the "Revenue" > "Currency & FX" part of the "Settings" Global Tool for admins) if not mapped/synced, but if you have Multi-Currency enabled in Salesforce, it's recommended that you map this field

  • Planhat "Stage" to Salesforce "Stage"

    • Make sure the available list value options are the same in the two systems

    • πŸš€ Tip: The Planhat Deal model has a system (i.e. standard/default) field "Stage" as we state above, but if you are running multiple pipeline processes in Planhat (e.g. a Sales pipeline for new business, and a CS pipeline for renewals), you can manage this via custom fields on the Deal model (see this separate article for further details), and then you could map these various fields within the Salesforce integration

  • Planhat "Close date" to Salesforce "Close Date"

  • Planhat "Owner" to Salesforce "Owner ID"

Example mapping screenshot

Click the image to view it enlarged


Planhat Line Item - Salesforce OpportunityLineItem

You could alternatively map the Line Item Planhat model to the QuoteLineItem (Quote Line Item) or ContractLineItem (Contract Line Item) Salesforce object, but when we list Salesforce fields below, we will be referring to OpportunityLineItem (Opportunity Line Item).

Required fields for mapping

  • Planhat "Start Date" to a suitable Salesforce custom field

    • OpportunityLineItems in Salesforce don't have start or end dates out of the box, so this requires a custom field. You could also initially map e.g. the "date" field from Salesforce, and adjust start and end dates on the Planhat side manually or with Automations

  • Planhat "Value", "MRR" or "ARR" to a suitable field in Salesforce

Example optional fields for mapping

  • Planhat "End Date" to a suitable field in Salesforce

    • For fixed-period Subscriptions

    • If unmapped, this defaults to open-ended

  • Planhat "Product Type" to a suitable field in Salesforce

    • This defines whether the Planhat Line Item is a "Subscription" (recurring) or a "Fee" (non-recurring)

      • If you have mapped Products and categorized them on the Planhat side, Planhat can alternatively deduce the Product Type from this - see the last note below

Notes

  • Line Items always relate to a Deal in Planhat, mirroring the Salesforce object relationships (e.g. OpportunityLineItem being linked to Opportunity)

  • Currency is set at the Deal level, rather than for individual Line Items

  • When importing Line Items into Planhat, if you map Product, Planhat can fill in any field data you didn't map in the integration, taking it from the Product in Planhat


Planhat Product - Salesforce Product2

The Planhat Product model is typically mapped to the Salesforce Product2 object (although you could potentially map to an alternative object in Salesforce).

Required fields for mapping

  • Planhat "Name" to Salesforce "Product Name"

  • Planhat "Value", "MRR" or "ARR" to a suitable field in Salesforce - not available as a standard field on the Salesforce Product2 object, so we recommend creating a custom field to store the price

Example optional fields for mapping

  • Planhat "Currency" to Salesforce "CurrencyIsoCode"

    • This is not required since Planhat defaults to the tenant base currency (set in the "Revenue" > "Currency & FX" part of the "Settings" Global Tool for admins) if not mapped/synced, but if you have Multi-Currency enabled in Salesforce, it's recommended that you map this field

  • Planhat "Type" to a suitable Salesforce custom field

    • To specify Subscription or Fee

    • Defaults to Subscription if unmapped / not specified

  • Planhat "Length (months)" to a suitable Salesforce custom field

    • This Planhat field specifies the Subscription duration in months

  • Planhat "Fixed Period" to a suitable Salesforce custom field

    • This Planhat field is a Boolean to indicate whether a Subscription is fixed period or open-ended

    • If not defined, this defaults to open-ended

Notes

  • While not mandatory, syncing and using the Product model helps ensure consistent pricing and categorization for Line Items

  • You can also easily add/upload/edit Products within Planhat if you don't have that data in Salesforce

Example mapping screenshot

Click the image to view it enlarged


HubSpot


Data mapping summary

Planhat model

Sync direction

HubSpot object

Deal

Bidirectional (or one-way)

Deal

Line Item

Bidirectional (or one-way)

Line Item

Product

Bidirectional (or one-way)

Product


Planhat Deal - HubSpot Deal

The Planhat Deal model is mapped to the HubSpot Deal object.

Required fields for mapping

  • Planhat "Name" to HubSpot "Deal Name"

Example optional fields for mapping

  • Planhat "Currency" to HubSpot "Currency"

    • It's strongly recommended that you map this; if you skip this, Planhat will automatically assign the tenant base currency (set in the "Revenue" > "Currency & FX" part of the "Settings" Global Tool for admins)

  • Planhat "Stage" to HubSpot "Deal Stage"

    • Make sure the available list value options are the same in the two systems

    • πŸš€ Tip: The Planhat Deal model has a system (i.e. standard/default) field "Stage" as we state above, but if you are running multiple pipeline processes in Planhat (e.g. a Sales pipeline for new business, and a CS pipeline for renewals), you can manage this via custom fields on the Deal model (see this separate article for further details), and then you could map these various fields within the HubSpot integration

Example mapping screenshot

Click the image to view it enlarged


Planhat Line Item - HubSpot Line Item

The Planhat Line Item model is mapped to the HubSpot Line Item object.

Required fields

  • Planhat "Start Date" to HubSpot "Billing Start Date" or a suitable custom field

  • Planhat "Value", "MRR" or "ARR" to a suitable field in HubSpot

Example optional fields

  • Planhat "End Date" to HubSpot "Billing End Date" or a suitable custom field

    • For fixed-period Subscriptions

  • Planhat "Product" to HubSpot "Product"

Notes

  • Line Items always relate to a Deal in Planhat, mirroring the Line Item / Deal relationship in HubSpot

  • Currency is set at the Deal level, rather than for individual Line Items

  • When importing Line Items into Planhat, if you map Product, Planhat can fill in any field data you didn't map in the integration, taking it from the Product in Planhat

Example mapping screenshot


Planhat Product - HubSpot Product

The Planhat Product model is mapped to the HubSpot Product object.

Required fields

  • Planhat "Name" to HubSpot "Name"

  • Planhat "Value", "MRR" or "ARR" to a suitable field in HubSpot

    • Add custom fields in HubSpot if needed

Example optional fields

  • Planhat "Currency" to HubSpot "Currency" (or suitable field)

    • It's recommended that you map this; if you skip this, Planhat will automatically assign the tenant base currency (set in the "Revenue" > "Currency & FX" part of the "Settings" Global Tool for admins)

  • Planhat "Length (months)" to HubSpot "Term"

    • If you map this, make sure the HubSpot "Billing Frequency" is monthly

Example mapping screenshot

Click the image to view it enlarged

Did this answer your question?