HubSpot + Dynamics GP integration
Dynamics GP holds customers, balances and sales documents in SQL Server, and Microsoft ends its support in 2029. What a HubSpot feed should cost now.
Connects by iPaaS , SQLScope this integration Book a scoping call Estimate the cost
- Into HubSpot
Is there an official Dynamics GP + HubSpot integration?
No. GP has no app of its own in the HubSpot App Marketplace as of September 2026, and HubSpot's Microsoft apps connect Business Central and Dynamics 365 Sales instead. We recommend a managed sync on Skyvia that reads SQL views over the GP company database, one way into HubSpot, at 15 to 30 build hours. It stops being enough when HubSpot has to write customers or orders back into GP.
- Recommended route
- Managed sync on Skyvia
- Build effort
- 15 to 30 hours
- In the HubSpot App Marketplace?
- No listed app
- Typical elapsed time
- 1 to 2 weeks
Marketplace checked September 2026.
Why teams connect Dynamics GP to HubSpot
A company still on Dynamics GP is running software with a known end. Microsoft stopped selling GP to new customers, perpetual licences from April 2025 and subscriptions from April 2026, and ends product enhancements, tax updates and technical support at the end of December 2029, with security updates continuing to April 2031. Microsoft points GP customers toward Business Central. For a company still on GP the move is coming, and its timing is the company’s own decision.
Meanwhile sales has moved to HubSpot, and the questions it cannot answer are the usual ones for an ERP that runs on its own SQL Server: what this customer owes, what they have on order, whether the last invoice posted. GP answers them in SmartLists and reports that sellers never open, and a seller who asks finance gets the answer after the call.
So the decision on this page is less about capability than about time and money. The managed sync and the custom integration below both work. The question is how much to spend connecting a system with a few years of support left, and how to build the HubSpot side so that it outlives GP. Our answer is to spend little on the GP end, keep the feed one way, and put the care into the keys and properties HubSpot will keep after the move.
What syncs
Every object in the table moves one way, and there are six. The customer master becomes the HubSpot company. The balance comes from a separate table rather than the master, which is why GP’s own integration tools treat the customer balance as a document type of its own. Items become products.
Contacts need care, because GP keeps them on addresses. Each customer address carries a single contact person and an internet-address record holding the email that documents are sent to. HubSpot contacts are built from those address rows, keyed on the customer ID plus the address ID, with email as the match where one exists.
Sales documents are split by state. Unposted documents sit in the sales work table, and a posted document belongs in the history table; Microsoft treats the same document in both as a fault. The feed reads both, keys every document on its type plus its number, the pair Microsoft’s own queries match on, and treats the move from work to history as a change of status, never a deletion. Open orders become deals, and posted invoices land on a custom object associated to the company.
| Source object | | Direction | Match key | Notes |
|---|---|---|---|---|
| Customer | Company | Into HubSpot | GP customer ID held in a custom HubSpot property | The hold and inactive flags ride across, so a seller sees them before quoting. |
| Customer balance | Company | Into HubSpot | GP customer ID | GP keeps balances in a table apart from the customer master. |
| Customer address | Contact | Into HubSpot | Customer ID plus address ID, with email as the match where present | Each address carries one contact person and the email used for documents. |
| Unposted sales order | Deal | Into HubSpot | Document type plus document number | Microsoft's own queries match a sales document on the pair. |
| Posted sales invoice | Custom object | Into HubSpot | Document type plus document number, associated to the company | A posted document belongs in the history table, not the work table. |
| Item | Product | Into HubSpot | Item number |
Architecture
The runtime is a managed sync over SQL, run on Skyvia. The Skyvia Agent is installed on a machine inside your network that can reach both the GP SQL Server and the internet, and it exchanges data with Skyvia in encrypted form with no public address or open port. In its alias mode, the SQL connection details stay in a file on that machine and never reach Skyvia’s servers.
GP already publishes its data for reporting through SQL views, which is what its Excel refreshable reports read. We add a small set of read-only views of our own, one per object, over the customer master, balances, addresses, open and posted sales documents and items, under a read-only SQL login.
Packages run on a schedule in load order: companies, then contacts, then deals and invoices, then the association pass. Each upserts on the GP key held in a custom HubSpot property, found by a lookup that returns nothing for a new record, so a new GP customer inserts and a known one updates. Every run ends with a count check against the views, and rows that fail validation go to an exceptions report.
What the API allows
- API style
- SQL database
- Authentication
- Database credentials
- Webhooks
- Partial
- Changed-since filter
- Partial
- Sandbox
- Yes
- Rate limit
- Not documented
Developer documentation learn.microsoft.com
Three ways to connect
The deciding factor on GP is the time left, and whether HubSpot must ever write into it. For a one-way feed, a managed sync on Skyvia is the smallest thing that works, and it is switched off on the day Business Central goes live.
A custom integration is the route when HubSpot has to create customers or orders in GP. Microsoft names Web Services for Microsoft Dynamics GP as the preferred tool for integrating data, with eConnect for objects the web services do not cover. Both run on your servers, and Microsoft has said it is not actively fixing issues found in some eConnect procedures, because of the product’s lifecycle. That is a lot of new machinery for a system with a few years left.
Nothing in the HubSpot App Marketplace covers GP. HubSpot’s Business Central app installs as an extension inside Business Central, and its Dynamics 365 app connects to a Dynamics 365 instance by its subdomain.
-
Managed sync on Skyvia
RecommendedA managed sync on Skyvia reads SQL views over the GP company database through an agent inside your network, one way into HubSpot on a schedule, and leaves nothing custom to retire when GP goes.
-
Custom integration
PossibleA custom integration earns its cost only where HubSpot must create customers or orders in GP, through its web services or eConnect, and the move off GP is years away.
-
Marketplace app
AvoidNo marketplace app is named for GP. HubSpot's Business Central app runs as an extension deployed inside Business Central, and its Dynamics 365 app connects to a Dynamics 365 instance, so neither reads a GP database.
What breaks and how we prevent it
Posted invoices leave the work table
GP keeps unposted sales documents in its work table and posted ones in the history table. A feed that reads only open documents watches a posted invoice disappear and closes or deletes its HubSpot record. Our views union both tables, carry the posting state as a property, and never delete a record because it went missing from one table.
One bad email fails the batch
Skyvia loads HubSpot contacts, companies and products through HubSpot’s batch API, where one rejected record fails its whole batch and the log keeps only the first error. GP’s email field on an address holds up to 1,000 characters, far more than one address needs. We validate emails in the view, route the bad ones to an exceptions report, and turn batching off only while reloading failures.
Changes the Requester never publishes
A build that takes eConnect’s Transaction Requester as its change feed inherits a default: changes made through eConnect’s own documents are not published unless their RequesterTrx element is set to 1. Orders another integration writes through eConnect can then never reach the queue. GP’s entity action tracking logs actions whatever their origin, so we use it instead, for only the actions we need, since each one writes a row to the eConnect_Out table, and reconcile against the tables nightly.
Web Services pinned to TLS 1.0
Microsoft’s GP support team has written that GP Web Services needs TLS 1.0 when its Authorization Manager store sits in SQL Server, and that moving to TLS 1.2 means reinstalling with an Active Directory store, with no migration between the two. We check the store before promising any write back.
Our approach
- Scope. We confirm how many company databases feed HubSpot, the GP release, the date of any Business Central move, and who can grant a read-only SQL login and a machine for the agent.
- Architect. We write the views, fix the keys, document type plus number included, and decide which HubSpot properties must outlive GP.
- Build. Packages are built against a test company restored from a copy of the live database, writing to a HubSpot sandbox until cutover.
- Validate. We reconcile customers, open documents and balances against GP reports, then walk the exceptions with whoever owns receivables.
- Operate. We watch run history and the exceptions report, and at the Business Central cutover we freeze GP-sourced invoices as history and switch the feed off.
Common questions
Does HubSpot publish an app for Microsoft Dynamics GP?
No. A search of the HubSpot App Marketplace for Dynamics GP returns only loosely matching listings, and a search for Great Plains fares no better. HubSpot's Microsoft apps connect Business Central, through an extension installed inside Business Central, and Dynamics 365 Sales. Neither reads a GP company database, so GP needs a managed sync or a custom integration.
When does Microsoft stop supporting Dynamics GP?
At the end of December 2029 for product enhancements, tax and regulatory updates and technical support, with security updates, if needed, until April 2031. Microsoft stopped selling new perpetual licences to new customers in April 2025 and new subscriptions in April 2026. Its advice is to move to Dynamics 365 Business Central, which HubSpot supports with an app of its own.
Should a Dynamics GP company connect HubSpot before moving to Business Central?
Yes, if the move is more than a few months away, and cheaply. A managed sync gives sellers balances and orders now and is switched off at cutover. Microsoft's migration brings customers across but re-creates open receivables as new documents for the amount still owed, with GP history kept in a separate snapshot, so invoice records in HubSpot are re-keyed then. If the move is close, connect Business Central instead.
How fresh is Dynamics GP data in HubSpot with a managed sync?
As fresh as the schedule. We schedule open sales documents and balances hourly through the working day and the full customer and item lists overnight. Each run reads the views afresh and upserts on GP keys, so an invoice posted in GP reaches HubSpot on the next run, and running the same package twice changes nothing.
Can Dynamics GP notify HubSpot when a record changes?
Not over HTTP. The closest thing is eConnect's Transaction Requester: its Outgoing Service publishes an XML document to a Windows message queue when a record of a chosen type, such as a customer or a sales transaction, is created, updated or deleted. A custom service on your network can read that queue, though changes made through eConnect itself are left out by default.
Can HubSpot create customers or sales orders in Dynamics GP?
Yes, through GP's web services or eConnect, both of which apply GP's business logic before writing. The web services run on your own servers as a WCF service, and Dynamics Security decides which users may call each operation. We rarely recommend it for GP now: it adds on-premises services to maintain for a product whose support ends in 2029.
What happens when a Dynamics GP sync run fails partway?
Skyvia's logs show which package failed and the error on the failed records. Because every object upserts on its GP key, rerunning the chain from the failed package updates what the first attempt wrote instead of duplicating it. When HubSpot's batch API rejects a batch, we find the bad row, correct it in GP or in the view, and rerun that package alone.
How many hours does a Dynamics GP and HubSpot feed take to build?
Budget 4 to 8 hours of discovery and 15 to 30 hours to build and validate the packages, once your team grants a read-only SQL login and a machine for the agent. Discovery settles which company databases feed HubSpot, how contacts are drawn from addresses, and the date of any move to Business Central, since that sets how long the sync has to run.
Also in ERP and accounting
Related reading
Partnerships and accreditations
HubSpot accreditations
Industry specializations
Partnerships
Trust and compliance
We design integrations to support the security and privacy rules your business works under, and we build them on independently audited platforms.
-
SOC 2
We build to support SOC 2 security controls, on platforms that hold SOC 2 reports of their own.
-
ISO/IEC 27001:2022
We build to support your information security program under ISO/IEC 27001:2022.
-
HIPAA
We scope BAA needs in discovery, then design builds around them for covered entities and their business associates.
-
GDPR
We scope data-processing needs in discovery and design builds to support your GDPR duties.
About the GDPR at the European Commission (opens in a new tab)
-
PIPEDA
We design builds to support your accountability for personal information as it moves between systems.
-
CASL
We can build consent capture and sync that support your CASL consent records.
Our builds run on
How we build
- Sandbox first. We build and test in a sandbox before anything reaches production.
- Fail-closed allowlists. An integration runs only against the HubSpot accounts it is approved for.
- Least-privilege access. Each integration gets only the API scopes it needs.
- Secrets in a vault. Keys and tokens live in a secrets vault, never in plain text.
- Sensitive data scoped early. Discovery covers sensitive data, access controls and any BAA or data-processing needs.
- A compliance package for regulated industries: audit logging, field-level encryption and sensitive-data handling.
Scope a Dynamics GP integration
Send the systems, the direction and the record volume. We reply with a scope and an effort band within one business day.
Thanks, we will reply within one business day
Prash or Sean reads every one of these and comes back with a scope, or with the one question we need answered first.
Sources
- Understand the Lifecycle Policies - Dynamics GP learn.microsoft.com
- Discontinuing support for Microsoft Dynamics GP community.dynamics.com
- Developer Tools - Dynamics GP learn.microsoft.com
- Web service foundation learn.microsoft.com
- What the Dynamics GP Web Service provides learn.microsoft.com
- CustomerCriteria learn.microsoft.com
- Overview of entity action tracking learn.microsoft.com
- Considerations for entity action tracking learn.microsoft.com
- Microsoft Dynamics GP Upgrade 2024 - Upgrading Microsoft Dynamics Web Services community.dynamics.com
- Transaction Requester Overview learn.microsoft.com
- Requester document tables learn.microsoft.com
- Using the RequesterTrx element learn.microsoft.com
- BusinessAddress learn.microsoft.com
- InternetAddresses learn.microsoft.com
- This document has been posted - Dynamics GP learn.microsoft.com
- Starting off with Excel Refreshable Reports community.dynamics.com
- Set up a test company - Dynamics GP learn.microsoft.com
- Migrate Dynamics GP data to the cloud - Business Central learn.microsoft.com
- Authenticate your apps for HubSpot data sync knowledge.hubspot.com
- Connect HubSpot and Microsoft Dynamics 365 knowledge.hubspot.com
- Agent Connections docs.skyvia.com
- HubSpot docs.skyvia.com
- How to Perform UPSERT Operation docs.skyvia.com