ml-connector
SYSPROHubSpot

SYSPRO and HubSpot integration

SYSPRO runs order fulfillment, inventory, and accounting for manufacturing and distribution. HubSpot runs your sales pipeline and customer relationships. Syncing customer records and invoices between them keeps your sales team's view of the customer aligned with what ERP has shipped and billed. New customers created in SYSPRO show up in HubSpot as contacts, invoices post into deal history, and the two systems stay in sync on customer status and open balances. ml-connector handles SYSPRO's custom URLs and token-based auth alongside HubSpot's API token and rate-limit behavior.

How SYSPRO works

SYSPRO Adaptive ERP exposes customers, suppliers, invoices, purchase orders, GL accounts, and inventory through e.net Business Objects (REST/SOAP with full read-write) and OData (REST read-only). Each customer instance runs on a self-managed URL (no shared SaaS hostname), and authentication uses either a session token obtained from the Logon endpoint (for e.net calls) or HTTP Basic Auth with auto-generated SQL credentials (for OData). SYSPRO has no native webhook system, so data is read by polling OData tables with filter expressions on timestamp fields such as InvoiceDate or PostDate, typically every 5 to 15 minutes for financial data.

How HubSpot works

HubSpot exposes contacts, companies, deals, invoices, line items, and payments through a cloud REST API versioned via date-specific paths. Authentication uses a Private App Access Token (Bearer format, pat-na1- prefix) for server integrations or OAuth2 for public apps. HubSpot supports both webhook subscriptions (with v1/v2/v3 signature verification, requiring a Public App registration) and polling via list and search endpoints. Rate limits depend on tier (Free/Starter 100 per 10 seconds, Professional/Enterprise 190 per 10 seconds), and invoices require associations to contacts and line items to be valid.

What moves between them

Customer and invoice data flows from SYSPRO into HubSpot. ml-connector polls SYSPRO's OData endpoint for new or modified ArCustomer and ArInvoice records on a scheduled interval, then upserts each to HubSpot as a contact associated with a company and an invoice linked to contact and line items. Since SYSPRO's OData is read-only, data moves one direction only. Reference data such as customer classes or terms can be synced in either direction using SYSPRO's writable e.net endpoint, but invoices and AR transactions are read from SYSPRO only.

How ml-connector handles it

ml-connector stores the SYSPRO instance URL and both credential sets (session token for e.net Business Objects and Basic Auth username/password for OData) encrypted in the cell database. On each poll cycle, it logs into SYSPRO's Logon endpoint if the session token has expired, then queries OData with a $filter on the timestamp field (e.g., ModDate) to fetch only records changed since the last poll. For each customer found, ml-connector looks up or creates a HubSpot contact and associates it with a company. Invoices are created as HubSpot invoice objects with line items and associated to the correct contact. HubSpot's rate limiter returns HTTP 429; ml-connector backs off exponentially and retries. Because SYSPRO requires the customer's own hostname and credentials, ml-connector validates the URL format and tests connectivity at setup time. Every customer record carries full source and target audit timestamps, so a replay is possible if a downstream HubSpot write fails.

A real-world example

A mid-sized distributor of industrial components uses SYSPRO for inventory, fulfillment, and AR, and HubSpot for sales and account management. Before the integration, the sales team manually searched SYSPRO for customer account status and recent invoices whenever a customer called, and the AR team had no view into which opportunities in HubSpot mapped to open invoices. With SYSPRO and HubSpot connected, each new invoice posts into HubSpot as an associated activity on the customer record, the AR team sees open invoices and balances in HubSpot alongside deal history, and the sales team can resolve customer questions without leaving HubSpot.

What you can do

  • Sync SYSPRO customers to HubSpot contacts and associate them with companies on a polling schedule.
  • Pull SYSPRO invoices into HubSpot and link them to contacts with line item detail.
  • Validate and cache SYSPRO session tokens across poll cycles and refresh them on expiry.
  • Handle HubSpot rate limits with exponential backoff and automatic retry.
  • Maintain audit timestamps on every record so invoices can be replayed if a HubSpot write fails.

Questions

Which way does data move between SYSPRO and HubSpot?
Customers and invoices move from SYSPRO into HubSpot on a polling schedule. SYSPRO's OData layer is read-only, so ml-connector does not write back to SYSPRO. Reference data such as customer classes can be synced in both directions using SYSPRO's e.net Business Objects layer if needed.
How does ml-connector handle SYSPRO's custom instance URL and token-based authentication?
ml-connector accepts the full SYSPRO instance URL per customer and validates it at setup time. It stores both the HTTP Basic Auth credentials for OData and the e.net session token encrypted in the database. When the session token expires, ml-connector calls the Logon endpoint to obtain a new token before the next poll cycle.
What happens if HubSpot rate limits are hit during a large sync?
ml-connector detects HTTP 429 responses from HubSpot, backs off exponentially, and retries the request. Because each invoice carries a full audit trail including source timestamps, any invoice that fails to write can be detected and replayed in a later poll cycle without data loss.

Related integrations

Connect SYSPRO and HubSpot

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started