{
  "slug": "sage-x3",
  "url": "https://apps.sectorgrowth.com/integrations/sage-x3/",
  "name": "Sage X3",
  "vendor": "Sage",
  "aliases": [
    "Sage Enterprise Management",
    "Sage X3 ERP"
  ],
  "website": "https://online-help.sagex3.com/erp/12/en-us/Content/Home.htm",
  "category": {
    "slug": "erp-and-accounting",
    "name": "ERP and accounting",
    "url": "https://apps.sectorgrowth.com/categories/erp-and-accounting/"
  },
  "summary": "Sage X3 keeps its data in folders served by the Syracuse web server. What its Web API can hand HubSpot, where SOAP still decides, and the build hours.",
  "answer": "Not from HubSpot or Sage. As of September 2026 the HubSpot App Marketplace lists one app named for X3, Sage X3 SYNC, Data Lake, AI, MCP by Commercient, which is third-party. We recommend a custom API integration that reads the X3 Web API folder by folder on a schedule, at 70 to 150 build hours; writing back to a function X3 has not yet moved to its newer class model means a SOAP web service, which adds work.",
  "nativeApp": {
    "status": "third-party",
    "name": "Sage X3 SYNC, Data Lake, AI, MCP by Commercient",
    "developer": "Commercient",
    "verifiedAt": "2026-09-28"
  },
  "api": {
    "style": "rest",
    "auth": "oauth2",
    "webhooks": "unknown",
    "changedSince": "unknown",
    "sandbox": "yes",
    "docsUrl": "https://online-help.sagex3.com/erp/12/en-us/Content/V7DEV/integration-guide_ws-overview.html"
  },
  "objects": [
    {
      "source": "Customer (BPCUSTOMER)",
      "hubspot": "company",
      "direction": "to_hubspot",
      "key": "Customer code (BPCNUM), held with the folder it came from",
      "notes": "A test folder copied from production holds the same codes, so the folder is part of the key."
    },
    {
      "source": "Contact",
      "hubspot": "contact",
      "direction": "to_hubspot",
      "key": "Email, with the X3 contact code as the tie breaker"
    },
    {
      "source": "Sales order",
      "hubspot": "deal",
      "direction": "to_hubspot",
      "key": "Sales order number, held with the folder",
      "notes": "Orders are read only in HubSpot. X3 prices, ships and invoices them."
    },
    {
      "source": "Sales invoice",
      "hubspot": "custom",
      "direction": "to_hubspot",
      "key": "Invoice number, associated to the customer and the order"
    },
    {
      "source": "Product",
      "hubspot": "product",
      "direction": "to_hubspot",
      "key": "Product reference"
    }
  ],
  "approaches": [
    {
      "kind": "custom",
      "fit": "recommended",
      "why": "A custom API integration reads the Web API's representations folder by folder with an OAuth2 bearer token, follows the paging links X3 returns, and keys every record on X3's codes, keeping SOAP for the classic functions that need it."
    },
    {
      "kind": "native",
      "fit": "possible",
      "why": "Commercient's X3 listing is a third-party sync, and the mapping, support and roadmap sit with that developer. Worth a look when the need is a fixed customer and order mapping with no service of your own to run."
    },
    {
      "kind": "ipaas",
      "fit": "avoid",
      "why": "A general automation platform that reaches X3 through SOAP spends the licensed SOAP data allowance on every poll, and past the grace band the service slows down and then stops answering."
    }
  ],
  "connectionMethods": [
    "api"
  ],
  "effort": {
    "discoveryHours": [
      10,
      20
    ],
    "buildHours": [
      70,
      150
    ],
    "buildBand": "70 to 150 hours",
    "typicalElapsed": "4 to 8 weeks"
  },
  "pattern": "polling-watermark",
  "faqs": [
    {
      "q": "Is there a Sage X3 app in the HubSpot App Marketplace?",
      "a": "Only a third-party one. As of September 2026 Commercient lists Sage X3 SYNC, Data Lake, AI, MCP by Commercient, which the marketplace shows with five installs. The Sage app that HubSpot builds itself, in the same search, is for Sage Business Cloud Accounting rather than X3, so an X3 connection is either Commercient's sync or a build."
    },
    {
      "q": "Should a Sage X3 integration use the Web API, SOAP or GraphQL?",
      "a": "For reading, the Web API, because Sage provides read-only representations on every resource. For writing, the Web API works only on modules already moved to classes and representations, and SOAP covers the classic functions. Sage's developer portal now recommends its GraphQL API for most new integrations and keeps adding nodes, so we check which ones your release carries."
    },
    {
      "q": "How does a HubSpot integration authenticate to Sage X3 Online?",
      "a": "With OAuth2, the only method X3 Online accepts. The server allows the oauth2 and bearer modes, and calls run as a user configured for OAuth2 and mapped to an X3 user with a suitable security profile. An on-premises X3 can also use basic or certificate authentication, and Sage calls certificates the usual choice there."
    },
    {
      "q": "Can Sage X3 return only the customers that changed since the last sync?",
      "a": "Sometimes. A Web API query accepts a where predicate on the representation's properties, and each result can carry creation and update metadata, but Sage does not document an update-date filter that works on every representation. We confirm it representation by representation in discovery, and where it is missing we read by key on a schedule and compare row hashes."
    },
    {
      "q": "Why would Sage X3 SOAP web services stop answering?",
      "a": "Two reasons come up. On premises, the host needs at least one web service child process, the setting defaults to zero, and every call then fails with an HTTP 500. And SOAP traffic is licensed by data volume per day, month or year: past the limit, a grace band slows the service, and past the grace band it stops answering."
    },
    {
      "q": "How do you test a Sage X3 integration without touching live data?",
      "a": "In a test folder. X3 creates every folder from a reference folder, and any folder can serve as the reference, so a copy of production gives the build real structure and codes. The service reaches it through its own endpoint, and a folder allowlist refuses any write that did not come from the folder it expects."
    },
    {
      "q": "What does a Sage X3 and HubSpot integration take to build?",
      "a": "Allow 10 to 20 hours of discovery and 70 to 150 hours of build for five objects with watermarks, replay and reconciliation endpoints. Discovery settles where X3 runs, which folders are live, how authentication works there, and whether a write back needs a SOAP web service published, because that last point is where the estimate moves."
    }
  ],
  "sections": [
    {
      "depth": 2,
      "text": "Why teams connect Sage X3 to HubSpot",
      "anchor": "#why-teams-connect-sage-x3-to-hubspot",
      "url": "https://apps.sectorgrowth.com/integrations/sage-x3/#why-teams-connect-sage-x3-to-hubspot"
    },
    {
      "depth": 2,
      "text": "What syncs",
      "anchor": "#what-syncs",
      "url": "https://apps.sectorgrowth.com/integrations/sage-x3/#what-syncs"
    },
    {
      "depth": 2,
      "text": "Architecture",
      "anchor": "#architecture",
      "url": "https://apps.sectorgrowth.com/integrations/sage-x3/#architecture"
    },
    {
      "depth": 2,
      "text": "Three ways to connect",
      "anchor": "#three-ways-to-connect",
      "url": "https://apps.sectorgrowth.com/integrations/sage-x3/#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/sage-x3/#what-breaks-and-how-we-prevent-it"
    },
    {
      "depth": 3,
      "text": "Pages the server shortens",
      "anchor": "#pages-the-server-shortens",
      "url": "https://apps.sectorgrowth.com/integrations/sage-x3/#pages-the-server-shortens"
    },
    {
      "depth": 3,
      "text": "Zero web service child processes",
      "anchor": "#zero-web-service-child-processes",
      "url": "https://apps.sectorgrowth.com/integrations/sage-x3/#zero-web-service-child-processes"
    },
    {
      "depth": 3,
      "text": "The licensed SOAP data allowance",
      "anchor": "#the-licensed-soap-data-allowance",
      "url": "https://apps.sectorgrowth.com/integrations/sage-x3/#the-licensed-soap-data-allowance"
    },
    {
      "depth": 3,
      "text": "Where clauses naming a missing property",
      "anchor": "#where-clauses-naming-a-missing-property",
      "url": "https://apps.sectorgrowth.com/integrations/sage-x3/#where-clauses-naming-a-missing-property"
    },
    {
      "depth": 2,
      "text": "Our approach",
      "anchor": "#our-approach",
      "url": "https://apps.sectorgrowth.com/integrations/sage-x3/#our-approach"
    }
  ],
  "caseStudies": [],
  "guides": [
    "https://apps.sectorgrowth.com/guides/choose-a-hubspot-integration-approach/"
  ],
  "status": "published",
  "verifiedAt": "2026-09-28",
  "updatedAt": "2026-09-28",
  "authors": [
    {
      "name": "Prash",
      "role": "Lead of Technical Integrations and AI Solutions"
    }
  ],
  "sources": [
    {
      "title": "Web services integration",
      "url": "https://online-help.sagex3.com/erp/12/en-us/Content/V7DEV/integration-guide_ws-overview.html"
    },
    {
      "title": "SData web service for Query",
      "url": "https://online-help.sagex3.com/erp/12/en-us/Content/V7DEV/integration-guide_ws-query.html"
    },
    {
      "title": "Api get query",
      "url": "https://online-help.sagex3.com/erp/12/en-us/Content/V7DEV/api-guide_api-get-query.html"
    },
    {
      "title": "Oauth2 authentication for Web services",
      "url": "https://online-help.sagex3.com/erp/12/en-us/Content/V7DEV/integration-guide_ws-oauth2-authentication.html"
    },
    {
      "title": "SOAP Web services implementation",
      "url": "https://online-help.sagex3.com/erp/12/en-us/Content/V7DEV/api-guide_soap-web-services.html"
    },
    {
      "title": "Folders",
      "url": "https://online-help.sagex3.com/erp/12/en-us/Content/FCT/GESADS.htm"
    },
    {
      "title": "GraphQL API · Docs (latest) · X3 · Developer Portal",
      "url": "https://developer.sage.com/x3/docs/latest/guides/graphql"
    },
    {
      "title": "2026 R1 (12.0.39) | Sage X3",
      "url": "https://online-help.sagex3.com/x3-release-notes/index.html#/release/en-US/2026-r1-39"
    },
    {
      "title": "Sage X3 Lifecycle Policy",
      "url": "https://docs.sage.com/docs/en/customer/erpx3/assets/Sage%20X3%20Lifecycle%20Policy_Nov%202024_LCP.pdf"
    }
  ]
}