HubSpot Field Mapping Details

This article reviews the flow of data between MonetizeNow and Hubspot using our Hubspot Connector with no customization


📘

What data is synced between MonetizeNow and HubSpot? And when?

Account
<tbody>
  <tr>
    <td>accountName</td>
    <td>name</td>
    <td>Required field.</td>
  </tr>

  <tr>
    <td>Account ID</td>
    <td>monetize\_account\_id</td>
    <td>Used for linking entities.</td>
  </tr>

  <tr>
    <td>defaultCurrency</td>
    <td>Default Currency</td>
    <td>Uses company's default currency if available.</td>
  </tr>

  <tr>
    <td>status</td>
    <td>(System Default)</td>
    <td>Set to ACTIVE for new accounts.</td>
  </tr>

  <tr>
    <td>isTestAccount</td>
    <td>(System Default)</td>
    <td>Set to false for new accounts.</td>
  </tr>

  <tr>
    <td></td>

    <td>Billing Address</td>

    <td></td>
  </tr>

  <tr>
    <td>Address Line 1</td>
    <td>invoice\_address</td>
    <td>Logic: If empty, falls back to address.</td>
  </tr>

  <tr>
    <td>Address Line 2</td>
    <td>invoice\_address2</td>
    <td>Logic: If empty, falls back to address2.</td>
  </tr>

  <tr>
    <td>City</td>
    <td>invoice\_city</td>
    <td>Logic: If empty, falls back to city.</td>
  </tr>

  <tr>
    <td>State</td>
    <td>invoice\_state</td>
    <td>Logic: If empty, falls back to state.</td>
  </tr>

  <tr>
    <td>Postal Code</td>
    <td>invoice\_zip</td>
    <td>Logic: If empty, falls back to zip.</td>
  </tr>

  <tr>
    <td>Country</td>
    <td>invoice\_country</td>
    <td>Logic: If empty, falls back to country.</td>
  </tr>

  <tr>
    <td></td>

    <td>Shipping Address</td>

    <td></td>
  </tr>

  <tr>
    <td>Address Line 1</td>
    <td>address</td>
    <td>Used for Shipping Address.</td>
  </tr>

  <tr>
    <td>Address Line 2</td>
    <td>address2</td>
    <td>Used for Shipping Address.</td>
  </tr>

  <tr>
    <td>City</td>
    <td>city</td>
    <td>Used for Shipping Address.</td>
  </tr>

  <tr>
    <td>State</td>
    <td>state</td>
    <td>Used for Shipping Address.</td>
  </tr>

  <tr>
    <td>Postal Code</td>
    <td>zip</td>
    <td>Used for Shipping Address.</td>
  </tr>

  <tr>
    <td>Country</td>
    <td>country</td>
    <td>Used for Shipping Address.</td>
  </tr>
</tbody>
Contact
<tbody>
  <tr>
    <td>fullName</td>
    <td>firstname + lastname</td>
    <td>Logic: Concatenates First + Last. If both empty, uses "Unnamed HubSpot Contact".</td>
  </tr>

  <tr>
    <td>email</td>
    <td>email</td>
    <td>Required field.</td>
  </tr>

  <tr>
    <td>phone</td>
    <td>phone</td>
    <td>Direct mapping.</td>
  </tr>

  <tr>
    <td>title</td>
    <td>jobtitle</td>
    <td>Direct mapping.</td>
  </tr>

  <tr>
    <td>Contact ID</td>
    <td>monetize\_contact\_id</td>
    <td>Link field. HubSpot does not enforce uniqueness here.</td>
  </tr>

  <tr>
    <td>status</td>
    <td>(System Default)</td>
    <td>Set to ACTIVE.</td>
  </tr>

  <tr>
    <td>primary</td>
    <td>(System Default)</td>
    <td>Set to false by default.</td>
  </tr>

  <tr>
    <td></td>

    <td>Address</td>

    <td></td>
  </tr>

  <tr>
    <td>Address Line 1</td>
    <td>address</td>
    <td>Note: No Line 2 available for contacts.</td>
  </tr>

  <tr>
    <td>City</td>
    <td>city</td>

    <td></td>
  </tr>

  <tr>
    <td>State</td>
    <td>state</td>

    <td></td>
  </tr>

  <tr>
    <td>Postal Code</td>
    <td>zip</td>

    <td></td>
  </tr>

  <tr>
    <td>Country</td>
    <td>country</td>

    <td></td>
  </tr>
</tbody>
Deal
<tbody>
  <tr>
    <td></td>

    <td><b>Deal Data</b></td>

    <td></td>
  </tr>

  <tr>
    <td>Quote Type</td>
    <td>monetize\_quote\_type</td>
    <td>Enum: New, Amendment, Renewal</td>
  </tr>

  <tr>
    <td>Opportunity ID</td>
    <td>monetize\_opportunity\_id</td>
    <td>Unique constraint.</td>
  </tr>

  <tr>
    <td></td>

    <td><b>Quote Data</b></td>

    <td></td>
  </tr>

  <tr>
    <td>Quote ID</td>
    <td>monetize\_quote\_id</td>
    <td>Unique constraint.</td>
  </tr>

  <tr>
    <td>Quote Status</td>
    <td>monetize\_quote\_status</td>
    <td>Enum (e.g., DRAFT, SENT, ACCEPTED).</td>
  </tr>

  <tr>
    <td>Contract Start Date</td>
    <td>monetize\_contract\_start\_date</td>

    <td></td>
  </tr>

  <tr>
    <td>Contract End Date</td>
    <td>monetize\_contract\_end\_date</td>

    <td></td>
  </tr>

  <tr>
    <td>Quote ARR</td>
    <td>monetize\_quote\_arr</td>
    <td>Annual Recurring Revenue.</td>
  </tr>

  <tr>
    <td>Quote MRR</td>
    <td>monetize\_quote\_mrr</td>
    <td>Monthly Recurring Revenue.</td>
  </tr>

  <tr>
    <td>Incremental ARR</td>
    <td>monetize\_quote\_incremental\_arr</td>

    <td></td>
  </tr>

  <tr>
    <td>Incremental MRR</td>
    <td>monetize\_quote\_incremental\_mrr</td>

    <td></td>
  </tr>

  <tr>
    <td>ARR Year 1</td>
    <td>monetize\_arr\_first\_year</td>

    <td></td>
  </tr>

  <tr>
    <td>ARR Year 2</td>
    <td>monetize\_arr\_second\_year</td>

    <td></td>
  </tr>

  <tr>
    <td>ARR Year 3</td>
    <td>monetize\_arr\_third\_year</td>

    <td></td>
  </tr>

  <tr>
    <td></td>

    <td><b>Contract Data</b></td>

    <td></td>
  </tr>

  <tr>
    <td>Contract ID</td>
    <td>monetize\_contract\_id</td>

    <td></td>
  </tr>

  <tr>
    <td>Contract Status</td>
    <td>monetize\_contract\_status</td>
    <td>Enum: ACTIVE, CANCELED, FINISHED, PENDING</td>
  </tr>

  <tr>
    <td>End Action</td>
    <td>monetize\_contract\_end\_action</td>

    <td></td>
  </tr>

  <tr>
    <td>Latest Quote ID</td>
    <td>monetize\_latest\_quote\_id</td>

    <td></td>
  </tr>

  <tr>
    <td>Previous Contract ID</td>
    <td>monetize\_previous\_contract\_id</td>

    <td></td>
  </tr>
</tbody>
Line Item
<tbody>
  <tr>
    <td>Quote Item ID</td>
    <td>monetize\_quoteitem\_id</td>
    <td>Unique constraint.</td>
  </tr>

  <tr>
    <td>Unit Price</td>
    <td>monetize\_quoteitem\_unit\_price</td>

    <td></td>
  </tr>

  <tr>
    <td>Quantity</td>
    <td>monetize\_quoteitem\_quantity</td>

    <td></td>
  </tr>

  <tr>
    <td>Discount %</td>
    <td>monetize\_quoteitem\_discount\_percentage</td>

    <td></td>
  </tr>

  <tr>
    <td>Discount Amount</td>
    <td>monetize\_quoteitem\_discount\_amount</td>

    <td></td>
  </tr>

  <tr>
    <td>MRR</td>
    <td>monetize\_quoteitem\_mrr</td>

    <td></td>
  </tr>

  <tr>
    <td>ARR</td>
    <td>monetize\_quoteitem\_arr</td>

    <td></td>
  </tr>
</tbody>
Address Automation Logic (for Webhooks)
<tbody>
  <tr>
    <td>HubSpot Company Address Change</td>
    <td>Webhook Triggered</td>
    <td>1. Updates MN Account Billing Address.2. Updates MN Account Shipping Address.3. Updates ALL associated Contacts with the new Shipping Address.</td>
  </tr>

  <tr>
    <td>HubSpot Contact Address Change</td>
    <td>Webhook Triggered</td>
    <td>Updates specific MN Contact address.</td>
  </tr>

  <tr>
    <td>Wait Logic</td>
    <td>API Rate Limiting</td>
    <td>200ms delay between contact updates; 10s retry logic for companies.</td>
  </tr>
</tbody>

HubSpot to MonetizeNow

HubSpot is the source of truth for the following records and shares the outlined data to MonetizeNow. MonetizeNow will only write to specified fields that it owns on these records, detailed below.

RecordWhen HubSpot updates show up in MonetizeNow
CompanyInstantly. After any update to a monitored field (see table below).
ContactInstantly. After any update to a monitored field (see table below).
Deal

Only prior to Quote creation.

Note Deal data itself is not stored in MonetizeNow. Instead, Deals are used to organize and pre-populate Draft Quotes in MonetizeNow. Conversely, as Quotes progress past the Draft state, MonetizeNow will own updating the Deal.

MonetizeNow to HubSpot

MonetizeNow is the source of truth for the following records and shares the outlined data to HubSpot.

RecordWhen MonetizeNow updates show up in SFDC
Company (Select Fields)Instantly. After any update to a monitored field (see table below).
Contact (Select Fields)Instantly. After any update to a monitored field (see table below).
Deal (Select Fields)Instantly. After any update to a monitored field (see table below).

HubSpot Monitored Fields (HubSpot is the Source of Truth)

RecordField
Companyname
Companyvat_registration_number
Companycompany_registration_number
Companybilling_language
Companye_invoice_endpoint_id
Companye_invoice_endpoint_scheme
Companyaddress
Companyaddress2
Companycity
Companystate
Companyzip
Companycountry
Companyinvoice_address
Companyinvoice_address2
Companyinvoice_city
Companyinvoice_state
Companyinvoice_zip
Companyinvoice_country
Company+Any Other Desired Fields*
Contactfirstname
Contactlastname
Contactemail
Contactphone
Contact+Any Other Desired Fields*

*MonetizeNow will monitor any additional fields explicitly defined as a Custom Field. These are data elements can be used for Approval Rules, Conditional Logic, Quote Terms, Finance IDs, manage Ship To vs. Bill To Contacts, and what ever else you can imagine. Click here to learn more about setting up custom fields.

Note MonetizeNow supports creating and updating Company and Contact data directly in MonetizeNow, however, when used with a CRM such as HubSpot, we advise against it, to keep processes simple and data flows clean.

HubSpot Monitored Fields (MonetizeNow is the Source of Truth)

RecordField
CompanymonetizeId
ContactmonetizeId
DealopportunityId
DealquoteId
DealquoteType
DealquoteStatus
DealquoteARR
Dealquote Incremental ARR
DealquoteMRR
Dealquote Incremental MRR
DealcontractEndAction
DealcontractStatus
DealcontractStartDate
DealcontractEndDate
DealpreviousContractID
Deal+Any Other Desired Fields*
📘

How do HubSpot Deals get associated with MonetizeNow Quotes?

No matter how you want to run your business. MonetizeNow ensures your CRM is fully informed and connected to the latest information in MonetizeNow. There are three primary ways this happens:

  1. A HS Deal Already Exists and "Create Quote" is selected on the HS Deal.
    1. A MonetizeNow Quote is created
    2. The MonetizeNow Quote is automatically associated with this Deal.
    3. The MonetizeNow Quote with allow you to associate this Quote with an existing contract to have a Deal reflect an Amendment or a Renewal.
  2. A MonetizeNow Contract Already Exists and clicking "Amend" or "Renew" on the Contract Card in HS.
    1. A MonetizeNow Quote is created
    2. A HS Deal is created
    3. The MonetizeNow Quote is automatically associated with the HS Deal.
    4. The MonetizeNow Quote is automatically connected to the existing Contract
  3. Nothing currently exists and a Quote is created directly from MonetizeNow.
    1. A MonetizeNow Quote is created
    2. A HS Deal is created
    3. The MonetizeNow Quote is automatically associated with the HS Deal.
    4. The MonetizeNow Quote with allow you to associate this Quote with an existing contract to have a Deal reflect an Amendment or a Renewal.
📘

Does MonetizeNow allow setting Legal Entity from HubSpot for a Deal.

Yes, we support that. For that, first, you need to configure Legal Entities in HubSpot. Things to note:

  1. Make sure that it is a "mandatory" field
  2. To see the legal entity easily for a Deal, have it show up under the "About this Deal" card.

Then, above entities need to be mapped to Legal entities that are configured in MonetizeNow. Note that you can configure the Legal Entities in MonetizeNow as a first step as well.

Now, we will test how the Legal entity will flow from HubSpot to MonetizeNow for a new deal.

📘

Can I change the Legal Entity for a Deal after the quote has been created?

Yes. To do this, first the sales rep needs to change the legal entity on the deal and then hit "create quote" in the MonetizeNow card. The new quote will belong to the new legal entity.