HubSpot + NCR Counterpoint integration
NCR Counterpoint keeps customers, tickets and inventory in a SQL Server database behind the retailer's firewall, with hundreds of views already built over it.
Built by us
NCR Counterpoint HubSpot - Into HubSpot
Is there a native NCR Counterpoint + HubSpot integration?
No. Searching the HubSpot App Marketplace for Counterpoint surfaces listings that merely mention the word, not a published Counterpoint app, as of September 2026. We recommend skipping the vendor API and running a managed sync that reads read only SQL views over the Counterpoint database on a nightly schedule. It fits because the mapping is stable, the volumes are small and the data only moves one way.
- 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 NCR Counterpoint to HubSpot
Counterpoint is where the money happens in a lot of specialty retail and wholesale businesses, and it is also where the money stays. The ticket history knows which accounts have slowed down, which ones pay late and which ones stopped buying a product line six months ago. None of that reaches the sales team, because the sales team does not have a Counterpoint licence and would not know which of seven hundred tables to look in if they did.
What the business gets instead is a report. Somebody in operations runs it, it lands as a spreadsheet, and by the time a rep reads it the number that mattered has changed. Accounts receivable aging is the clearest case: a rep who can see that an account is ninety days overdue has a different conversation from one who does not, and that information has a shelf life of about a week.
The second driver is the pipeline itself. A wholesale business with an open order book wants those orders visible as deals, moving through stages as they get fulfilled and paid, so that forecasting is based on what customers actually ordered rather than what a rep remembered to log. Both drivers point at the same thing: the transaction history needs to live beside the relationship, on a schedule people can rely on, without anyone opening the point of sale system.
What syncs
Six things. Customers become companies, ship to addresses become a custom object, tickets become deals, ticket lines become line items, items become products, and accounts receivable transactions move the deal to a paid stage.
Two of those keys are compound. A ship to address is identified by the customer number and the address id together, because the address id repeats under every customer. A ticket line is identified by the ticket number and the line sequence number for the same reason. Getting either one wrong produces silent overwrites rather than errors, which is the worst kind of bug to find later.
Customers map to companies, not contacts. A Counterpoint customer number is an account, and in this kind of business the account is a firm with several people attached. The data has one owner and one direction. Counterpoint is the system of record for everything here, HubSpot never writes back, and nobody edits a ticket in the portal.
| | | Direction | Match key | Notes |
|---|---|---|---|---|
| Customer | Company | Into HubSpot | Customer number | Counterpoint customers are accounts, so they belong on companies, not contacts. |
| Ship to address | Custom object | Into HubSpot | Customer number plus ship to id | The pair is the key. A ship to id alone repeats across customers. |
| Ticket | Deal | Into HubSpot | Ticket number | Close date is the posting date, not the date the order was taken. |
| Ticket line | Line item | Into HubSpot | Ticket number plus line sequence number | |
| Item | Product | Into HubSpot | Item number | Freight and sample rows exist as items and are excluded from the catalogue. |
| Accounts receivable transaction | Deal | Into HubSpot | Document number matched to the ticket number | Drives the paid stage rather than creating a second record. |
Architecture
The pattern is a managed SQL sync. Scheduled packages read the shipped views over a read only login, map columns to HubSpot properties, and load in dependency order: companies first, then shipping locations, deals, line items and products, then the associations that tie them together. HubSpot API paths are pinned to version 2026-03.
The connection goes through an on premises agent rather than an open port. Skyvia documents a direct connection that needs the SQL Server reachable over the internet, and an agent connection that does not. Retailers take the agent, because exposing a point of sale database to the internet is not a trade anybody wants to make.
Change detection is per view rather than global. Where a view exposes a creation or modification timestamp, the package runs incrementally. Where it does not, the package reloads the whole view, which stays cheap at these record counts. The packages run in a chain, one after another, rather than on independent schedules, so a parent record always exists before a child tries to associate to it.
What the API allows
- API style
- SQL database
- Authentication
- Database credentials
- Webhooks
- No
- Changed-since filter
- Partial
- Sandbox
- Unknown
- Rate limit
- Not documented
Developer documentation github.com
Three ways to connect
The decision here is unusually clear. There is no app to install, so it is a managed sync against a custom service. A service buys you real time reaction and arbitrary logic, and this data has neither requirement: the source is a nightly posting cycle, the mapping is a column list, and nothing needs to happen in the second after a sale. What a managed sync gives you instead is somebody watching the run history and fixing the package when the retailer adds a column, which is what the retailer is still paying for in five years. Pick the service only when a rule cannot be expressed as a mapping.
-
Managed sync on Skyvia
RecommendedCounterpoint ships hundreds of pre-built views that already flatten the joins, so a scheduled package over a read only SQL login covers the whole mapping with no service to host and no on call rotation.
-
Custom middleware
PossibleA service earns its place when retail data has to trigger something in real time, or when the mapping needs logic a package cannot express, and not before.
-
Native app
AvoidThere is no Counterpoint app in the HubSpot App Marketplace, and HubSpot Data Sync cannot reach a database that sits behind a retailer's firewall.
What breaks and how we prevent it
The Counterpoint failures worth designing against are the quiet ones.
Dropped columns that load as nulls
A schema change drops a column and the package keeps running with nulls. The retailer’s own consultant adds a field, a view gets rebuilt, and nothing errors. The defence is to watch the run history rather than the inbox, and to compare row counts against the source on a schedule.
Codes with no lookup table
Codes arrive without meanings. Sales rep codes, price classes and customer classes are short strings, and the database holds no lookup table for what they mean or which employee they belong to. The defence is to collect the mapping from the retailer during discovery and keep it in version control, not in somebody’s memory.
Dead accounts and freight lines
Dead records load as live ones. Most Counterpoint databases carry accounts marked in their name as no longer in use, plus operational items like freight and sample lines that are not real products. The defence is an explicit exclusion rule agreed before the first load, applied to every related object rather than just the customer.
Overlapping package runs
A long run overlaps the next one and two packages fight over the same records. The defence is chaining rather than parallel schedules, and a schedule longer than the slowest observed run.
Our approach
- Scope. We profile the database first: which views exist, which columns are populated, how many records each one holds, and which fields carry a usable timestamp.
- Architect. We agree the object model, the compound keys and the exclusion rules before any package is built, and we confirm the connection style with the retailer’s network team.
- Build. Packages chained in dependency order, keyed on the source identifiers, with the association fields carried through rather than added later.
- Validate. Everything runs against a sandbox portal behind a fail closed portal allowlist, and the production cutover is a credential swap.
- Operate. We watch the run history, reconcile counts against the source, and adjust the mapping when the retailer’s system changes, which it does.
Common questions
Is there a HubSpot connector for NCR Counterpoint?
No Counterpoint app is published under that name in the HubSpot Marketplace, only listings whose descriptions happen to mention the word. The practical route is a cloud integration service with a SQL Server connector, pointed at the Counterpoint database and run on a schedule.
Does NCR Counterpoint have an API, and should a HubSpot sync use it?
It does. The vendor publishes an API guide for a REST server that runs on premises or in the cloud, authenticates with existing Counterpoint user credentials, and needs a licence key for most calls. For a read only feed into HubSpot, SQL views are simpler, because the API server wants full read and write access to every Counterpoint table.
What happens when a Counterpoint package fails or loads a duplicate?
A failed step stops the chain rather than the whole sync, and the run history records which package failed and on which rows. Duplicates are prevented rather than cleaned up: every object keys on its Counterpoint identifier, so a re-run updates the same record. We correct the mapping or the source row, then re-run from the failed step to keep the load order intact.
Can a Counterpoint sync run without exposing the SQL Server to the internet?
Yes. Skyvia documents two connection styles for SQL Server: a direct connection that needs the server reachable over the internet with firewall rules, and an agent connection that removes that requirement in exchange for installing a small on premises agent. Retailers almost always take the agent.
How does a Counterpoint sync detect changed records?
Through timestamp columns on the view. Skyvia's documentation states that incremental loading needs fields storing record creation and modification times, and that at least one must be present. Views that expose a usable date run incrementally. The rest run as full table loads, which is fine while the record counts stay in the tens of thousands.
Do Counterpoint customers become HubSpot contacts or companies?
Companies. A Counterpoint customer number identifies an account, and in wholesale and specialty retail that account is a business with several people attached. Mapping it to a contact produces a portal full of company names in the first name field, which is difficult to unwind once workflows depend on it.
How fresh is Counterpoint data in HubSpot?
One day old by design. The sync runs after end of day posting, so it carries posted transactions rather than live register activity. That is usually what the business wants: a ticket that has been posted is final, and a half completed sale in a lane is not something a sales team should be looking at.
How long does a Counterpoint managed sync take to stand up?
4 to 8 hours of discovery and 15 to 30 hours to build the packages, once the retailer provides a read only SQL login and permission to install the on premises agent. The variable is codes: sales rep, price class and customer class are short strings with no lookup table in the database, so somebody has to decode them before the mapping is finished.
Also in Retail, POS and e-commerce
Related reading
Partnerships and accreditations
HubSpot accreditations
Industry specializations
Partnerships
Scope a NCR Counterpoint 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.
Where these facts come from
- NCR Counterpoint API github.com
- APIGuide/InstallationAndConfiguration/Configuring.md at master github.com
- SQL Server or SQL Azure docs.skyvia.com
- Incremental Replication and Schema Updates docs.skyvia.com
- Retail POS: Point-of-Sale System | NCR Voyix ncrvoyix.com