Marco Promotions connected Business Central orders and customers to HubSpot
The Customer
Marco Promotions is a promotional products company. Its orders, customers and product catalog lived in Microsoft Dynamics 365 Business Central, its ERP. Its sales and marketing teams had a HubSpot portal. The two systems were not connected.
The Challenge
Marco wanted its ERP data to show up in HubSpot as the records its team already used: contacts, companies, products, deals and line items. That meant a sales rep could open a company in the CRM and see what that customer had ordered, without logging into the ERP.
The complication was the account history. Accounts had been merged in the ERP, and the logic behind those merges was held in files the integration connector couldn’t read. Any sync had to respect those merges.
A third party supported the Business Central side for Marco and answered the questions about its API. The integration design had to work with what that API actually exposed.
The Solution
We built a custom integration between Business Central and HubSpot in two phases. The first phase covered discovery and development. The second covered client testing, the historical sync and launch, with the integration live in August 2023.
Discovery came first. We ran two discovery calls, an integration questionnaire and a field mapping review, and reviewed sample sales orders, contacts and customers to confirm what the ERP’s API exposed. The result was a sync logic and field mapping document that Marco approved before development started.
We then built five maps:
- Business Central contacts to HubSpot contacts
- Business Central customers to companies
- Business Central items to products
- Business Central sales orders to deals
- Business Central line items to deal line items
The account merges got a documented design decision. Reading the merge files through the connector wasn’t possible, calling the ERP’s endpoints directly would have been costly, and replicating the merge logic inside the integration would have slowed it down. We proposed instead that Marco maintain one comma-delimited field of merged account IDs on its side, which keeps lookups to a minimum and the maps fast.
We also worked through with Marco whether the sync should fire on a “Sync to HubSpot” flag set in the ERP or on a record’s modified date. The integration uses the flag, so the team controls which orders reach the CRM.
In the second phase we ran client acceptance testing, worked through how archived sales orders should sync, and added batch processing so the historical sync could run in manageable batches. The historical sync finished in August 2023, and we handed the integration to our support team and to Marco.
What They Got
Marco’s team can now open a contact or company in HubSpot and see the orders, line items and products behind it, pulled from Business Central. Sales orders from the ERP become deals in the CRM.
The ERP stays the system of record for orders and products. The CRM stays where sales and marketing work. Neither system had to be rebuilt to make that happen.
Wrapping Up
Our standard on an integration like this is to agree the sync logic and field mappings in writing before writing code, build each map so it can be tested on its own, and run the historical load in batches so nothing is lost. Lynton now builds AI-native websites on open infrastructure; see our current work at /case-studies.