Actionable Findings LLC · 1441 Broadway, Suite 5 · New York, NY 10018
Sage Intacct Integration Confidential and Proprietary

RUNMYBOT® Integration for HubSpot and Sage Intacct

This document details the configuration requirements and synchronization mappings between HubSpot CRM and Sage Intacct ERP via RUNMYBOT.

1 Usage of this Document

This document provides a reference for implementing a data synchronization layer between HubSpot CRM and Sage Intacct ERP using the RUNMYBOT platform. It outlines the synchronization process for each module, describes the authentication mechanism, and explains how data conflicts and errors are managed, while ensuring the middleware layer remains completely transparent to end users.

2 Purpose

The purpose of this document is to present the detailed solution design for implementing a middleware orchestration layer using our internal low-code platform, RUNMYBOT, to integrate HubSpot CRM (the primary commercial system) with Sage Intacct (the ERP and financial system of record). The solution enables seamless, API-driven synchronization of customer master data, contact records, sales orders, product catalogs, invoices, and payments between the two systems. It eliminates manual intervention while ensuring data consistency, reliable error handling, and complete auditability through centralized logging and monitoring.

3 Objective

The HubSpot–Sage Intacct integration provides secure, API-driven orchestration of customers, contacts, sales orders, products, invoices, and payments across both platforms. The integration is designed to achieve the following objectives:

  • Ensure customer and contact master data remains synchronized and consistent between HubSpot and Sage Intacct at all times.
  • Enable bi-directional synchronization of Sales Orders, ensuring that lifecycle changes made in either system are reflected in the other. (Only deals with "Closed Won" stage are eligible).
  • Synchronize product master data, sales invoices, and payment records from Sage Intacct to HubSpot, providing sales teams with complete commercial visibility.
  • Maintain transaction consistency across systems through the use of cross-reference keys and upsert (Update or Insert) logic.
  • Deliver a seamless integration experience using scheduled polling and delta-based synchronization to process only incremental changes.
  • Provide comprehensive monitoring, centralized logging, automated retry mechanisms, and end-to-end audit tracking within the RUNMYBOT platform.

4 Scope

The integration solution includes the following key capabilities:

  • A centralized RUNMYBOT interface for configuring, monitoring, and orchestrating integrations between HubSpot and Sage Intacct.
  • Bi-directional synchronization of Customers and Contacts between HubSpot and Sage Intacct. Only HubSpot Deals with the "Closed Won" stage are eligible for Sales Order synchronization.
  • Uni-directional synchronization of Products (Items), Sales Orders, Sales Invoices, and Payments from Sage Intacct to HubSpot.
  • Secure token-based authentication for both HubSpot and Sage Intacct, including encrypted credential storage and automatic token refresh.
  • Structured, field-level transactional data exchange instead of document-based file transfers.
  • Configurable field mapping and data transformation within RUNMYBOT to normalize data schemas between the two systems.
  • Support for Full Data Extraction to perform the initial synchronization of all eligible records between HubSpot and Sage Intacct.
  • Support for Date Range Extraction to synchronize records created or modified within a user-defined date range.
  • Delta Extraction using modified timestamps or change-tracking mechanisms to synchronize only incremental changes, minimizing API usage and improving performance.
  • Configurable criteria-based data extraction using static values or mapped fields to support selective synchronization.
  • Pre-built workflow templates for each supported integration process, allowing customers to extend and customize workflows to meet their business requirements.
  • Comprehensive monitoring, centralized logging, automated retry handling, and end-to-end transaction tracking within the RUNMYBOT platform.

5 Prerequisites

Component Requirement
HubSpot Edition Professional, Enterprise, or Developer Edition with Private App support.
HubSpot API Access API access must be enabled for the connected profile.
HubSpot User Dedicated integration user with System Administrator or equivalent custom permissions.
HubSpot Connection Either install the RUNMYBOT HubSpot App (recommended) or configure a customer-owned HubSpot OAuth application by providing the Client ID and Client Secret in the RUNMYBOT Connection module.
Sage Intacct Edition Web Services subscription enabled on the target Sage Intacct company.
Sage Intacct API Web Services API user configured with permissions for the required objects (Customer, Contact, Item, Sales Order, Invoice, and Payment).
Network Outbound HTTPS (port 443) access to *.HubSpot.com and api.intacct.com endpoints.
Custom Fields Create necessary custom fields and custom objects for synchronization of payment & sales invoice in HubSpot.

6 Connection Setup & Configuration

Connection setups inside the RUNMYBOT Unified API require setting up credentials, base URLs, and authentication configurations.

6.1 Reference Field Creation

Create a custom field for each module in HubSpot to maintain a permanent cross-reference between the integrated systems.

Sage Intacct Object Field Name Field Label Data Type
Contact sage_intacct_contact_id Sage Intacct Contact ID Text
Customer sage_intacct_customer_id Sage Intacct Customer ID Text
Product sage_intacct_product_id Sage Intacct Product ID Text
Sales Order sage_intacct_order_id Sage Intacct Reference ID Text
Sales Invoice external_ref_id External Ref ID Text
Customer Payment external_ref_id External Ref ID Text

6.2 Custom Object Creation

Create Custom Objects for **Sales Invoice** and **Customer Payments** in HubSpot.

Sales Invoice Object Name: p246208318_sales_invoices

Field Label Field Name Field Type
Invoice Amount invoice_amount Number
External Ref ID external_ref_id Single-line text
Note note Multi-line text
Status status Dropdown
Due Date due_date Date
Outstanding Amount outstanding_amount Number
Invoice Number invoice_number Single-line text
Invoice Date invoice_date Date
Company company_id Association
Deal deal_id Association

Customer Payment Object Name: p246208318_customer_payments

Field Label Field Name Field Type
Amount Paid amount_paid Number
External Ref ID external_ref_id Single-line text
Note note Multi-line text
Status status Dropdown
Payment Number payment_number Single-line text
Total Amount total_amount Number
Transaction Date transaction_date Date
Company company_id Association
Invoice invoice_id Association

7 System Overview

7.1 RUNMYBOT® Platform

A real-time orchestration engine that aggregates data across multiple systems and manages complex cross-platform transactions. Unlike a simple connector model, it functions as a real-time transaction orchestration layer between HubSpot and Sage Intacct, making the integration layer completely invisible to end users.

7.2 HubSpot

Cloud-based CRM used as the primary commercial system and origin for customer relationship and sales pipeline management.

7.3 Sage Intacct

ERP system used as the financial and operational system of record, managing customers, contacts, order processing, and accounting records.

8 Scope Requirements

Use Case Direction Description
Customer & Contact Sync Intacct → HubSpot Synchronize Customer and Contact records from Sage Intacct to HubSpot Companies and Contacts.
Company & Contact Sync HubSpot → Intacct Synchronize Company and Contact records from HubSpot to Sage Intacct Customers and Contacts.
Product Master Sync Intacct → HubSpot Sync items from Sage Intacct to HubSpot product catalog.
Sales Order Sync HubSpot → Intacct Sync Closed Won deals in HubSpot to Sales Orders in Sage Intacct.
Sales Invoice Sync Intacct → HubSpot Push Posted Sales Invoices from Sage Intacct to HubSpot custom objects.
Customer Payment Sync Intacct → HubSpot Push customer payments to HubSpot payment custom objects.

9 Process in Detail

9.1 Authentication

HubSpot: OAuth 2.0 Client Credentials or Private App token is used. RUNMYBOT handles secure token storage and refresh.

Sage Intacct: XML-based Web Services API authentication is used securely with Sender ID, User ID, Company ID, and Password.

9.2 Standard Workflows

9.2.1 Sage Intacct Customer to HubSpot Company

Sage Intacct Customer to HubSpot Company Diagram

Customer records created or updated in Sage Intacct are synchronized to HubSpot as Company records. When a customer is synced, its ID is written back to HubSpot as the cross-reference key (sage_intacct_id).

Sage Intacct Customer Export Configuration:
Connection: <Select Sage intacct Connection>
Operation: Export
Query Mode: Interactive Query
Module: Account Receivable
Object: Customers
Field Selection: Custom
Include Core Fields: True
HubSpot Company Import Configuration:
Connection: <Select HubSpot Connection>
Resource: Companies
Operation: Create
Ignore existing records: True
Lookup Condition: True
Lookup Field: properties.sage_intacct_id
Operator: Equal
Source: Mapping

Field Mapping Table

Source Data (Sage Intacct) Target Data (HubSpot) Description / Rules
name properties.name Company Name
id properties.sage_intacct_id Sage Intacct ID Reference
notes properties.description Company Description
contacts_default_mailingAddress_city properties.city City
contacts_default_mailingAddress_country properties.country Country Reference
contacts_default_mailingAddress_state properties.state State / Region
contacts_default_mailingAddress_postCode properties.zip Postal Code
contacts_default_mailingAddress_addressLine1 properties.address Address Line 1
contacts_default_mailingAddress_addressLine2 properties.address2 Address Line 2
contacts_default_phone1 properties.phone Phone Number
associations[*].types[*].associationCategory Static: HubSpot_DEFINED
associations[*].types[*].associationTypeId Static: 1

9.2.2 HubSpot Company to Sage Intacct Customer

HubSpot Company to Sage Intacct Customer Diagram

Company records created or updated in HubSpot are synchronized to Sage Intacct Customers to keep customer master data consistent across both systems.

Export Configurations (HubSpot Company):
Connection: <Select HubSpot Connection>
Resource: Companies
Extract Type: All - Always extract all data
Include All Fields: True
Sage Customer Import Configuration:
Connection: <Select sage intacct Connection>
Operation: Import
Import mode: Upsert
Module: Account Receivables
Object: Customers
Write mode: Batch
Enable lookup: True
Filter mode: Conditions (structured)
Lookup field: id
Operator: Equals
Source: Mapping
Mapping field: id
Logic: AND
HubSpot Company Reference Update Configuration:
Connection: <Select HubSpot Connection>
Resource: Companies
Operation: Upsert
Directly By ID: True

HubSpot Company to Sage Intacct Customer Mapping

Source Data (HubSpot) Target Data (Sage Intacct) Description / Rules
properties.sage_intacct_id id Sage Customer ID
properties.name name Company Name
properties.description notes Description/Notes
properties.name contacts.default.companyName Company Name Ref
properties.address contacts.default.mailingAddress.addressLine1 Mailing Address 1
properties.address2 contacts.default.mailingAddress.addressLine2 Mailing Address 2
properties.city contacts.default.mailingAddress.city City
properties.domain contacts.default.URL1 Domain URL
properties.state contacts.default.mailingAddress.state State
properties.zip contacts.default.mailingAddress.postCode Postal Code
properties.country contacts.default.mailingAddress.country Country Code
id prev_data.HubSpot_customer_id HubSpot ID

Sage Customer to HubSpot Reference Mapping

Source Data (Sage Intacct) Target Data (HubSpot) Description / Rules
prev_data.hubspot_customer_id id HubSpot Company ID Reference
intacct_id properties.sage_intacct_id Sage Customer ID

Customer records created or updated in HubSpot are synchronized to Sage Intacct as Company records.

RUNMYBOT validates the incoming payload and performs the necessary data mapping and transformation to align HubSpot customer fields with the corresponding Sage Intacct company fields.

RUNMYBOT checks whether a corresponding Company already exists in Sage Intacct using the cross-reference key stored on the Sage Intacct Company record. If no matching Company is found, RUNMYBOT creates a new Company record in Sage Intacct. If a matching Company already exists, RUNMYBOT updates the existing Sage Intacct Company record using the stored cross-reference key.

Integration Direction: HubSpot → RUNMYBOT → Sage Intacct

9.2.3 HubSpot Contact to Sage Intacct Contact

HubSpot Contact to Sage Intacct Contact Diagram

Contact records created or updated in HubSpot are synchronized to Sage Intacct, ensuring that customer contact information remains accurate and readily available for business communications.

HubSpot Contact Export Configuration:
Connection: <Select HubSpot Connection>
Resource: Contacts
Extract Type: All - Always extract all data
Include All fields: True
Sage Intacct Contact Import Configuration:
Connection: <Select Sage Intacct Connection>
Operation: Import
Import Mode: Upsert
Module: Company Configuration
Object: Contacts
Write Mode: Batch
Enable Lookup: True
Filter Mode: Conditions
Batch atomic: false
Lookup field: Id
Operator: Equals
Source: Mapping
Mapping Field: prev_data.sage_intacct_contact_id
Logic: AND
HubSpot Contact Reference Update Configuration:
Connection: <Select HubSpot Connection>
Resource: Contacts
Directly By ID: True

HubSpot Contact to Sage Intacct Contact Mapping

Source Data (HubSpot) Target Data (Sage Intacct) Description / Rules
properties.firstname firstName First Name
properties.lastname lastName Last Name
properties.firstname printAs Print As
properties.salutation prefix Salutation prefix
properties.email email1 Email 1
properties.phone phone1 Primary Phone
properties.mobilephone mobile Mobile phone
properties.fax fax Fax Number
properties.website URL1 URL
properties.company companyName Company Name
showInContactList Lookup rule: showInContactList: true
properties.address mailingAddress.addressLine1 Address Line 1
properties.address2 mailingAddress.addressLine2 Address Line 2
properties.city mailingAddress.city City
properties.state mailingAddress.state State
properties.zip mailingAddress.postCode Postal Code
properties.country mailingAddress.country Country Code
properties.sage_intacct_contact_id prev_data.sage_intacct_contact_id Sage Contact ID Ref
id prev_data.hs_contact_id HubSpot ID
id id ID

Sage Intacct Contact to HubSpot Contact Reference Update Mapping

Source Data (Sage Intacct) Target Data (HubSpot) Description / Rules
prev_data.hs_contact_id id HubSpot Contact ID Reference
intacct_id properties.sage_intacct_contact_id Sage Contact ID Reference

RUNMYBOT retrieves Contact data from HubSpot using REST APIs.

Each Contact record is validated, mapped, and transformed according to the integration rules before processing.

Based on the synchronization logic, RUNMYBOT determines whether to create a new Contact or update an existing Contact in HubSpot.

Integration Direction: HubSpot → RUNMYBOT → Sage Intacct

9.2.4 Sage Intacct Contact to HubSpot Contact

Sage Intacct Contact to HubSpot Contact Diagram

Contact records created or updated in Sage Intacct are synchronized with HubSpot, ensuring that customer contact information remains accurate and readily available.

Export Configurations (Sage Intacct Contact):
Connection: <Select Sage Intacct Connection>
Operation: Export
Query Mode: Interactive Query
Module: Company Configuration
Object: Contacts
Load Type: Full Load
Field Selection: Custom
Include Core Fields: True
Enable lookup: False
Advanced Options: False
Import Configurations (HubSpot Contact):
Connection: <Select HubSpot Connection>
Resource: Contacts
Operations: Upsert
Directly By ID: false
Lookup Field: properties.sage_intacct_contact_id
Operator: Equal
Source: Mapping

Field Mapping Table

Source Data (Sage Intacct) Target Data (HubSpot) Description / Rules
id properties.sage_intacct_contact_id Contact ID Reference
firstName properties.firstname First Name
lastName properties.lastname Last Name
phone1 properties.phone Phone
mailingAddress.addressLine1 properties.address Address Line 1
mailingAddress.addressLine2 properties.address2 Address Line 2
mailingAddress.city properties.city City
mailingAddress.state properties.state State
mailingAddress.country properties.country Country
mailingAddress.postCode properties.zip Zip
prefix properties.salutation Prefix
email1 properties.email Email
mobile properties.mobilephone Mobile Phone
fax properties.fax Fax
URL1 properties.website Website
companyName properties.company Company Name

9.2.5 Sage Intacct Product to HubSpot Product

Sage Intacct Product to HubSpot Product Diagram

Product records created or updated in Sage Intacct are synchronized to HubSpot to keep the CRM product catalog and pricing information current.

Sage Intacct Product Export:
Connection: <Select Sage Intacct Connection>
Resource: Item
Extract Type: All - Always extract all data
HubSpot Product Import:
Connection: <Select HubSpot Connection>
Resource: Product
Operation: Upsert
Lookup Condition: Lookup Field: properties.sage_intacct_product_id, Operator: Equal, Source: Mapping

Field Mapping Table

Source Data (Sage Intacct) Target Data (HubSpot) Description / Rules
name properties.name Product Name
soDescription properties.description Product Description
isSuppliesItem properties.hs_product_type Product Type
sales_basePrice properties.price Unit Price
purchasing_standardCost properties.hs_cost_of_goods_sold Cost of Goods Sold
id properties.sage_intacct_product_id Sage Intacct Product ID Reference
itemType properties.hs_product_type Lookup Rule:
• inventory → inventory
• nonInventory → non_inventory
• salesOnlyNonInventory → non_inventory
• purchaseOnlyNonInventory → non_inventory
id properties.hs_sku SKU Code

9.2.6 HubSpot Deal to Sage Intacct Sales Order

HubSpot Deal to Sage Intacct Sales Order Diagram

Closed Won HubSpot Deals are synchronized to Sage Intacct as Sales Orders to ensure that confirmed sales opportunities are converted into ERP sales transactions. RUNMYBOT retrieves Deal data from HubSpot through REST APIs, validates the incoming payload, and performs the required field mapping and data transformation to align HubSpot Deal, Company, Contact, and Product information with the corresponding Sage Intacct Sales Order fields. Once the data is validated and transformed, RUNMYBOT creates or updates the Sales Order in Sage Intacct while maintaining cross-reference identifiers for future synchronization and tracking.

HubSpot Deal Export Configuration:
Connection: <Select HubSpot Connection>
Resource: Deals
Associations: Companies, line items
Include all fields: True
Enable lookup: True
Lookup field: dealstage
operator: Equal
Source: Static
Value: closedwon
lookupfield: sage_intacct_order_id
Operator: Is Empty
Data Preprocess Filter-1 Configuration:
Operation: filter
Field name: companies
Condition: Is Not Empty
Operation: filter
Field name: line_items
Condition: Is Not Empty
Operation: filter
Field name: sage_intacct_order_id
Condition: Is Empty
Data Preprocess Filter-2 Configuration:
Operation: filter
Field name: id
Condition: Unique
Sage Intacct Customer Import Configuration:
Operation: Import
Import mode: Upsert
Module: Account Receivable
Object: Customers
Write Mode: Batch
Filter mode: Conditions (structured)
Enable lookup: True
Lookup field: id
Operator: Equals
Source: Mapping
Mapping field: id
Logic: AND
HubSpot Company Update Configuration:
Connection: <Select HubSpot Connection>
Resource: Companies
Operation: Update
Directly By ID: True
Data preprocess-merge Configuration:
Operation: Merge
Join Type: Left Join
Split Field: HubSpot_order_id
Left Data: WITH SPLIT KEY PRESENT
Group By Fields: company_id
Sage Intacct Sales Order Import Configuration:
Connection: <Select sage intacct Connection>
Import mode: Insert
Module: Order Entry
Object: Documents
Write mode: Batch
Document type: Sales order
HubSpot Deal Reference Update Configuration:
Connection: <Select HubSpot Connection>
Resource: Deals
Operation: Update
Directly By ID: True

HubSpot Deal to Data Preprocess filter 1 Mapping

Source Data Target Data Description / Rules
id associations[*].to.id Deal ID Reference
properties.acumatica_order_id OrderNbr Order Number
Static : 21 associations[*].types[*].associationCategory Static Category: 21
Static : USER_DEFINED associations[*].types[*].associationTypeId Static Type: USER_DEFINED
prev_data.ReferenceNbr ReferenceNbr Reference Number

Data Preprocess 1 to Data Preprocess 2 Mapping

Source Data Target Data Description / Rules
companies companies Companies list

Data Preprocess2 to Sage Intacct Customer Import Mapping

Source Data Target Data Description / Rules
companies companies Companies list
properties.sage_intacct_id id Customer ID Reference
properties.name name Customer Name
properties.description notes Notes
properties.phone contacts.default.phone1 Phone Number
properties.address contacts.default.mailingAddress.addressLine1 Mailing Address
properties.city contacts.default.mailingAddress.city City
properties.state contacts.default.mailingAddress.state State
properties.country contacts.default.mailingAddress.country Country Code
properties.zip contacts.default.mailingAddress.postCode Postal Code
id prev_data.hs_customer_id HubSpot ID

Sage Intacct Customer Import to HubSpot Company Update Mapping

Source Data Target Data Description / Rules
id properties.sage_intacct_id Sage Intacct Customer ID
prev_data.hs_customer_id id HubSpot Company ID Reference

HubSpot Company Update to Data Preprocess 3 Mapping

Source Data Target Data Description / Rules
properties.sage_intacct_id customer.id Customer ID
id company_id Company ID

Data Preprocess Filter 1 to Data Preprocess Merge Mapping

Source Data Target Data Description / Rules
companies[*].id company_id Company ID
id HubSpot_order_id Order ID Reference
properties properties Properties payload
line_items Details Line Items details

Data Preprocess Merge to Sage Intacct SO Mapping

Source Data Target Data Description / Rules
customer.id customer.id Customer ID
HubSpot_order_id referenceNumber Reference Number
state state State
properties.closedate dueDate Due Date
properties.closedate txnDate Transaction Date
txnCurrency txnCurrency Currency
baseCurrency baseCurrency Base Currency
Details[*].properties.sage_intacct_product_id lines[*].dimensions.item.id Line Item Product ID
lines[*].dimensions.location.id lines[*].unit Line Unit
properties.description lines[*].memo Line Memo
Details[*].properties.quantity lines[*].unitQuantity Line Quantity
Details[*].properties.amount lines[*].unitPrice Line Unit Price
HubSpot_order_id prev_data.id Origin HubSpot ID Reference

Sage Intacct SO to HubSpot Deal Update Mapping

Source Data Target Data Description / Rules
intacct_id properties.sage_intacct_order_id Sage Intacct Sales Order ID Reference
prev_data.id id HubSpot Deal ID Reference

RUNMYBOT retrieves Closed Won Deal records from HubSpot through REST APIs. Synchronization can be initiated either manually by a user or automatically through scheduled polling. RUNMYBOT validates the incoming payload and performs the required field mapping and data transformation before processing the Deal.

RUNMYBOT verifies whether the corresponding Customer exists in Sage Intacct using the stored cross-reference key. If the Customer does not exist, RUNMYBOT creates a new Customer in Sage Intacct and writes the returned Customer ID back to the corresponding HubSpot Company as the cross-reference identifier for future synchronizations.

After the Customer reference is available, RUNMYBOT retrieves and combines the HubSpot Deal, Company, Contact, and associated Product information to construct the complete Sales Order payload.

RUNMYBOT performs field mapping, data transformation, and validation to convert the combined data into the Sage Intacct Sales Order format, including the Sales Order header, customer details, and line items generated from the associated HubSpot Deal Products.

RUNMYBOT submits the transformed Sales Order payload to the Sage Intacct Sales Order REST API. Sage Intacct validates the customer, product references, pricing, inventory, tax information (where applicable), and other business rules before creating the Sales Order.

Upon successful creation, Sage Intacct returns the Sales Order Number, which RUNMYBOT captures and stores for subsequent processing.

RUNMYBOT updates the originating HubSpot Deal by storing the Sage Intacct Sales Order Number in the sage_intacct_order_id field, establishing a permanent cross-reference between the HubSpot Deal and the Sage Intacct Sales Order.

All synchronization activities, including request and response payloads, processing status, timestamps, and error details, are logged by RUNMYBOT to support auditing, monitoring, and troubleshooting.

Integration Direction: HubSpot → RUNMYBOT → Sage Intacct → HubSpot

10 Custom Workflows

10.1 Sage Invoice to HubSpot Invoice

Sage Invoice to HubSpot Invoice Diagram

Synchronize posted Sales Invoices from Sage Intacct to HubSpot custom objects, linking them to corresponding HubSpot Companies and Deals.

Sage Intacct AR Invoice Export Configuration:
Connection: <Select Sage Intacct Connection>
Operation: Export
Query mode: Interactive query
Module: Order entry
Object: Documents
Load Type: Full load
Field Selection: Custom
Include core fields: True
Fields: sourceDocument.id, sourceDocument.key
Enable lookup: False
Advanced option: False
Document type: Sales Invoice
Sage Intacct Sales Order Export Configuration:
Connection: <Select Sage Intacct Connection>
Operation: Export
Query mode: Interactive query
Module: Order Entry
Object: Documents
Document type: Sales order
Load Type: Full load
Field selection: custom
Include core fields: False
Fields: Id, key, documentnumber, document type, state, total
Enable lookup: True
Filter Mode: Key lookup
Advanced options: False
Source: Mapping
Mapping key field: key
HubSpot Deal Export Configuration:
Connection: <Select HubSpot Connection>
Resource: Deals
Associations: Companies, line items
Extract Type: All - Always extract all data
Include All Fields: True
Enable lookup: True
Lookup fields: sage_intacct_order_id
Operator: Equal
Source mapping: Mapping
Data Preprocess Configuration:
Operation: Merge
Join type: Left join
Split field: prev_data
Left data: WITH SPLIT KEY PRESENT
Group By Fields: key
Operation: Filter
Field name: HubSpot_order_id
Condition: Is Not EMPTY
Data Preprocess 2 Configuration:
Operation: Merge
Join Type: Full Join
Group By Fields: key
HubSpot AR Invoice Import Configuration:
Connection: <Select HubSpot Connection>
Resource: Custom object
Custom object name: p246208318_sales_invoices
Operation: Upsert
Directly By ID: false
Lookup Field: properties.invoice_number
Operator: Equal
Source: Mapping

Sage Intacct Invoice to Order Mapping

Source Data Target Data Description / Rules
sourceDocument_key key Key reference
documentNumber prev_data.inv_number Invoice Number
key prev_data.key Record Key
state prev_data.status Status
total prev_data.invoice_amount Amount
dueDate prev_data.duedate Due Date
txnCurrency prev_data.transaction_currency Currency
txnDate prev_data.invoice_date Date

Sage Intacct order to HubSpot Deal mappings

Source Data Target Data Description / Rules
id sage_intacct_order_id Order ID Reference
prev_data.key prev_data.key Key

HubSpot Deal to Data Preprocess Mapping

Source Data Target Data Description / Rules
id HubSpot_order_id Order ID Reference
properties.sage_intacct_order_id sage_intacct_order_id Order ID

Sage Intacct Order to Data Preprocess mapping

Source Data Target Data Description / Rules
id sage_intacct_order_id Order ID
prev_data prev_data Data payload

HubSpot Deal to Data Preprocess 2 Mapping

Source Data Target Data Description / Rules
companies[*].id associations[*].to.id Company ID
Static : USER_DEFINED associations[*].types[*].associationCategory Static Category: USER_DEFINED
Static : 17 associations[*].types[*].associationTypeId Static Type ID: 17
prev_data.key key Key

Data Preprocess 2 to HubSpot AR Invoice Mapping

Source Data Target Data Description / Rules
HubSpot_order_id properties.external_ref_id External Reference ID
prev_data.invoice_amount properties.invoice_amount Total Invoice Amount
prev_data.invoice_date properties.invoice_date Invoice Date
prev_data.dueDate properties.dueDate Due Date
prev_data.inv_number properties.invoice_number Invoice Number Reference
associations associations Links to Deals & Companies

10.2 Sage Payment to HubSpot Payment

Sage Payment to HubSpot Payment Diagram

Sage Intacct Customer Payments are synchronized to HubSpot Payment custom objects, matching them against corresponding HubSpot Invoices.

Sage Intacct Payment Export Configuration:
Connection: <Select Sage Intacct Connection>
Operation: Export
Query mode: Interactive Query
Module: Account Receivable
Object: Payment Details
Include Core fields: True
Field selection: Custom
Fields: Id, arInvoice.id, txnCurrency.paymentAmount, txnCurrency.currency, arPayment.id, paymentDate, arPayment.documentNumber, arPayment.paidDate, arPayment.txnCurrency.currency, arPayment.txnCurrency.totalAmount, arPayment.txnCurrency.totalPaid, arPayment.customer.id, arPayment.customer.name, arPayment.paymentMethod, arPayment.baseCurrency.totalDue, arPayment.paymentSummary.title
Enable lookup: False
Advanced options: False
Sage Intacct AR Invoice Configuration:
Connection: <Select Sage Intacct Connection>
Operation: Export
Query mode: Interactive Query
Module: Accounts Receivable
Object: Invoices
Load type: Full load
Field selection: Auto
Enable lookup: True
Filter mode: Key lookup
Advanced options: False
Source: Mapping
Mapping key field: id
Data Preprocess 1 Configuration:
Operation: Filter
Field Name: invoice_number
Condition: Is Not EMPTY
HubSpot Invoice Export Configuration:
Connection: <Select HubSpot Connection>
Resource: Custom object
Custom Object Name: p246208318_sales_invoices
Associations: (blank)
Extract type: All - Always extract all data
Include All Fields: True
Enable lookup: True
Lookup fields: invoice_number
Operator: Equal
Source: Mapping
Data PreProcess 2 Configuration:
Operation: Merge
Join Type: Left Join
Split Field: associations
Left data: WITHOUT SPLIT KEY PRESENT
Group by fields: invoice_number, payment_number
Operation: Filter
Field Name: associations
Condition: Is Not EMPTY
HubSpot Company Export Configuration:
Connection: <Select HubSpot Connection>
Resource: Companies
Associations: (blank)
Extract type: All - Always extract all data
Include All Fields: True
Enable Lookup: True
Lookup Field: sage_intacct_id
Operator: Equal
Source: Mapping
Data PreProcess 3 Configuration:
Operation: Merge
Join Type: Full Join
Group By Fields: invoice_number, payment_number
HubSpot Payment Export Configuration:
Resource: Custom Object
Custom Object Name: p246208318_customer_payments
Operation: Upsert
Lookup Field: properties.payment_number
Operator: Equal
Source: Mapping

Sage Intacct payment to Sage Intacct invoice mapping

Source Data Target Data Description / Rules
arInvoice_id id Invoice ID Reference
id external_ref_id External Reference
arPayment_id prev_data.payment_number Payment Number
arPayment_txnCurrency.totalPaid prev_data.amount_paid Amount Paid
arPayment_txnCurrency_currency prev_data.currency Currency
arPayment_paidDate prev_data.transaction_date Date
arPayment_txnCurrency_totalAmount prev_data.total_amount Total Amount
arPayment_paymentMethod prev_data.payment_method Payment Method
arPayment.paymentSummary.title prev_data.description Description

Sage Invoice to Data Preprocess 1 Mapping

Source Data Target Data Description / Rules
id invoice_id Invoice ID
external_ref_id external_ref_id External Ref
prev_data.payment_number prev_data.payment_number Payment Number
prev_data.amount_paid prev_data.amount_paid Amount Paid
prev_data.currency prev_data.currency Currency
prev_data.transaction_date prev_data.transaction_date Transaction Date
prev_data.total_amount prev_data.total_amount Total Amount
prev_data.payment_method prev_data.payment_method Payment Method
prev_data.description prev_data.description Description
prev_data.status prev_data.status Status
customer.id prev_data.customer.id Customer ID
invoiceNumber invoice_number Invoice Number
prev_data.payment_number payment_number Payment Reference

Data Preprocess1HubSpot Invoice Mapping

Source Data Target Data Description / Rules
invoice_number invoice_number Invoice Number Reference
prev_data.payment_number prev_data.payment_number Payment Number

HubSpot Invoice to Data Preprocess 2 Mapping

Source Data Target Data Description / Rules
properties.invoice_number invoice_number Invoice Number
id hs_invoice_id HubSpot Invoice ID
id associations[*].to.id Invoice ID Reference
Static : USER_DEFINED associations[*].types[*].associationCategory Static Category: USER_DEFINED
Static : 39 associations[*].types[*].associationTypeId Static Type ID: 39
prev_data.payment_number payment_number Payment Number
properties.invoice_amount total_amount Total Amount

Data PreProcess 2 to HubSpot Company Mapping

Source Data Target Data Description / Rules
payment_number payment_number Payment Number
invoice_number invoice_number Invoice Number
prev_data.customer.id sage_intacct_id Customer ID Reference

HubSpot Company to Data PreProcess 3 Mapping

Source Data Target Data Description / Rules
id associations[*].to.id Company ID
Static : USER_DEFINED associations[*].types[*].associationCategory Static Category: USER_DEFINED
Static : 48 associations[*].types[*].associationTypeId Static Type ID: 48
payment_number payment_number Payment Number
properties.name company_name Company Name
invoice_number invoice_number Invoice Number Reference

Data Preprocess 3 to HubSpot Payment Mapping

Source Data (Sage Intacct) Target Data (HubSpot) Description / Rules
payment_number properties.payment_number Payment Number Reference
amount_paid properties.amount_paid Amount Paid
prev_data.transaction_date properties.transaction_date Payment Date
description properties.note Notes/Memo
total_amount properties.total_amount Total Amount
associations associations Associated Company & Invoice
prev_data.status properties.status Status

11 Exception Handling

Error handling is implemented across trigger, transformation, and action stages of each flow to ensure reliable synchronization:

  • Validation: Checks identify missing mandatory fields, invalid data formats, and incorrect reference mappings before processing.
  • Duplicates: Managed using external identifiers and upsert logic to prevent duplicate record insertion.
  • Retries: Automated retry schedules for network interruptions, API timeouts, rate limits, or temporary service unavailability.
  • Logging: All integration activities, payloads, and errors are logged inside the RUNMYBOT monitoring dashboard.