{
  "slug": "ncr-counterpoint",
  "url": "https://apps.sectorgrowth.com/integrations/ncr-counterpoint/",
  "name": "NCR Counterpoint",
  "vendor": "NCR Voyix",
  "aliases": [
    "Counterpoint",
    "Counterpoint POS",
    "CounterPoint SQL",
    "NCR Voyix Counterpoint"
  ],
  "website": "https://www.ncrvoyix.com/retail/counterpoint",
  "category": {
    "slug": "retail-pos-and-ecommerce",
    "name": "Retail, POS and e-commerce",
    "url": "https://apps.sectorgrowth.com/categories/retail-pos-and-ecommerce/"
  },
  "summary": "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.",
  "answer": "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.",
  "nativeApp": {
    "status": "none",
    "verifiedAt": "2026-09-22"
  },
  "api": {
    "style": "sql",
    "auth": "sql",
    "webhooks": "no",
    "changedSince": "partial",
    "sandbox": "unknown",
    "docsUrl": "https://github.com/NCRCounterpointAPI/APIGuide"
  },
  "objects": [
    {
      "source": "Customer",
      "hubspot": "company",
      "direction": "to_hubspot",
      "key": "Customer number",
      "notes": "Counterpoint customers are accounts, so they belong on companies, not contacts."
    },
    {
      "source": "Ship to address",
      "hubspot": "custom",
      "direction": "to_hubspot",
      "key": "Customer number plus ship to id",
      "notes": "The pair is the key. A ship to id alone repeats across customers."
    },
    {
      "source": "Ticket",
      "hubspot": "deal",
      "direction": "to_hubspot",
      "key": "Ticket number",
      "notes": "Close date is the posting date, not the date the order was taken."
    },
    {
      "source": "Ticket line",
      "hubspot": "line_item",
      "direction": "to_hubspot",
      "key": "Ticket number plus line sequence number"
    },
    {
      "source": "Item",
      "hubspot": "product",
      "direction": "to_hubspot",
      "key": "Item number",
      "notes": "Freight and sample rows exist as items and are excluded from the catalogue."
    },
    {
      "source": "Accounts receivable transaction",
      "hubspot": "deal",
      "direction": "to_hubspot",
      "key": "Document number matched to the ticket number",
      "notes": "Drives the paid stage rather than creating a second record."
    }
  ],
  "approaches": [
    {
      "kind": "skyvia",
      "fit": "recommended",
      "why": "Counterpoint 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."
    },
    {
      "kind": "custom",
      "fit": "possible",
      "why": "A 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."
    },
    {
      "kind": "native",
      "fit": "avoid",
      "why": "There is no Counterpoint app in the HubSpot App Marketplace, and HubSpot Data Sync cannot reach a database that sits behind a retailer's firewall."
    }
  ],
  "effort": {
    "discoveryHours": [
      4,
      8
    ],
    "buildHours": [
      15,
      30
    ],
    "buildBand": "15 to 30 hours",
    "typicalElapsed": "1 to 2 weeks"
  },
  "pattern": "sql-managed-sync",
  "faqs": [
    {
      "q": "Is there a HubSpot connector for NCR Counterpoint?",
      "a": "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."
    },
    {
      "q": "Does NCR Counterpoint have an API, and should a HubSpot sync use it?",
      "a": "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."
    },
    {
      "q": "What happens when a Counterpoint package fails or loads a duplicate?",
      "a": "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."
    },
    {
      "q": "Can a Counterpoint sync run without exposing the SQL Server to the internet?",
      "a": "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."
    },
    {
      "q": "How does a Counterpoint sync detect changed records?",
      "a": "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."
    },
    {
      "q": "Do Counterpoint customers become HubSpot contacts or companies?",
      "a": "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."
    },
    {
      "q": "How fresh is Counterpoint data in HubSpot?",
      "a": "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."
    },
    {
      "q": "How long does a Counterpoint managed sync take to stand up?",
      "a": "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."
    }
  ],
  "sections": [
    {
      "depth": 2,
      "text": "Why teams connect NCR Counterpoint to HubSpot",
      "anchor": "#why-teams-connect-ncr-counterpoint-to-hubspot",
      "url": "https://apps.sectorgrowth.com/integrations/ncr-counterpoint/#why-teams-connect-ncr-counterpoint-to-hubspot"
    },
    {
      "depth": 2,
      "text": "What syncs",
      "anchor": "#what-syncs",
      "url": "https://apps.sectorgrowth.com/integrations/ncr-counterpoint/#what-syncs"
    },
    {
      "depth": 2,
      "text": "Architecture",
      "anchor": "#architecture",
      "url": "https://apps.sectorgrowth.com/integrations/ncr-counterpoint/#architecture"
    },
    {
      "depth": 2,
      "text": "Three ways to connect",
      "anchor": "#three-ways-to-connect",
      "url": "https://apps.sectorgrowth.com/integrations/ncr-counterpoint/#three-ways-to-connect"
    },
    {
      "depth": 2,
      "text": "What breaks and how we prevent it",
      "anchor": "#what-breaks-and-how-we-prevent-it",
      "url": "https://apps.sectorgrowth.com/integrations/ncr-counterpoint/#what-breaks-and-how-we-prevent-it"
    },
    {
      "depth": 3,
      "text": "Dropped columns that load as nulls",
      "anchor": "#dropped-columns-that-load-as-nulls",
      "url": "https://apps.sectorgrowth.com/integrations/ncr-counterpoint/#dropped-columns-that-load-as-nulls"
    },
    {
      "depth": 3,
      "text": "Codes with no lookup table",
      "anchor": "#codes-with-no-lookup-table",
      "url": "https://apps.sectorgrowth.com/integrations/ncr-counterpoint/#codes-with-no-lookup-table"
    },
    {
      "depth": 3,
      "text": "Dead accounts and freight lines",
      "anchor": "#dead-accounts-and-freight-lines",
      "url": "https://apps.sectorgrowth.com/integrations/ncr-counterpoint/#dead-accounts-and-freight-lines"
    },
    {
      "depth": 3,
      "text": "Overlapping package runs",
      "anchor": "#overlapping-package-runs",
      "url": "https://apps.sectorgrowth.com/integrations/ncr-counterpoint/#overlapping-package-runs"
    },
    {
      "depth": 2,
      "text": "Our approach",
      "anchor": "#our-approach",
      "url": "https://apps.sectorgrowth.com/integrations/ncr-counterpoint/#our-approach"
    }
  ],
  "caseStudies": [
    "https://apps.sectorgrowth.com/case-studies/counterpoint-hubspot-skyvia-managed-sync/"
  ],
  "guides": [
    "https://apps.sectorgrowth.com/guides/choose-a-hubspot-integration-approach/"
  ],
  "builtBySectorGrowth": true,
  "status": "published",
  "verifiedAt": "2026-09-22",
  "updatedAt": "2026-09-25",
  "authors": [
    {
      "name": "Prash",
      "role": "Lead of Technical Integrations and AI Solutions"
    }
  ],
  "sources": [
    {
      "title": "NCR Counterpoint API",
      "url": "https://github.com/NCRCounterpointAPI/APIGuide/blob/master/README.md"
    },
    {
      "title": "APIGuide/InstallationAndConfiguration/Configuring.md at master",
      "url": "https://github.com/NCRCounterpointAPI/APIGuide/blob/master/InstallationAndConfiguration/Configuring.md"
    },
    {
      "title": "SQL Server or SQL Azure",
      "url": "https://docs.skyvia.com/connectors/databases/sqlserver_connections.html"
    },
    {
      "title": "Incremental Replication and Schema Updates",
      "url": "https://docs.skyvia.com/data-integration/replication/incremental-replication-and-schema-updates.html"
    },
    {
      "title": "Retail POS: Point-of-Sale System | NCR Voyix",
      "url": "https://www.ncrvoyix.com/retail/counterpoint"
    }
  ]
}