HubSpot + ECI integration

ECI's M1, JobBOSS² and Deacom share one integration API that ECI switches on per customer. What it reads and writes for each, and the build in hours.

Connects by API

Scope this integration Book a scoping call Estimate the cost

Is there an official ECI + HubSpot integration?

Not from HubSpot or ECI. As of September 2026 the HubSpot App Marketplace lists ECI M1 SYNC, Data Lake, AI, MCP by Commercient, a third-party app, beside Commercient apps for JobBOSS² and Macola. We recommend a custom API integration over ECI's own ERP API, which reads M1, JobBOSS² and Deacom, at 70 to 150 build hours once ECI has activated it for your account.

Recommended route
Custom API integration
Build effort
70 to 150 hours
In the HubSpot App Marketplace?
Yes, ECI M1 SYNC, Data Lake, AI, MCP by Commercient
Typical elapsed time
4 to 8 weeks

Marketplace checked September 2026.

Why teams connect ECI to HubSpot

ECI Software Solutions sells a family of manufacturing ERPs rather than one, so a HubSpot project starts by naming the member on site. M1 serves discrete manufacturers, JobBOSS² serves job and machine shops, and Deacom serves batch and process manufacturers. ECI still supports Macola and E2 MFG for existing customers, and each of those has a page of its own here.

Each product carries some sales tooling. M1 builds CRM features into the ERP, and JobBOSS² offers CRM as an add-on module. A business that already runs marketing and sales in HubSpot ends up with two customer lists, and sellers who cannot see a quote’s status, an order’s progress or an unpaid invoice without asking the office. In a job shop the quote carries most of the sale, and ECI’s own manufacturing page promises job shops quotes, revisions and production tracked in one system. That quote is the record a seller wants beside the HubSpot deal.

What sets ECI apart in this tier is how much of the route is written down. ECI publishes OpenAPI references for a product-agnostic ERP API that reads M1, JobBOSS², Deacom and Macola, plus product APIs for hosted JobBOSS² and M1. The catch sits outside the code. ECI activates every API per customer, and coverage differs by product, so discovery confirms both before anyone writes a line of the service.

What syncs

Six objects carry the value. ECI’s organizations become HubSpot companies and their contacts become HubSpot contacts. Quotes become deals. Sales orders and AR invoices land on custom objects associated to the company, and parts become products.

Coverage is the part to check per product. Through the ERP API, M1 supports every one of those objects. JobBOSS² supports all of them except AR invoices, which its own API carries instead. Deacom supports sales orders and parts but lists no organization, contact or quote resource, so a Deacom project needs a customer route agreed in discovery.

Everything moves one way on a first build, because each ERP owns the customer, the price and the order. Keys come from the API rather than from names. Every resource carries a uniqueID, a GUID in M1 and an integer in JobBOSS², and ECI guarantees it only within one resource and one company account. We store it in a custom HubSpot property together with the product and company it came from, so two sources can never collide.

Objects that sync between ECI and HubSpot
Source object HubSpot object Direction Match key Notes
Organization Company Into HubSpot The ERP API uniqueID, stored with the ECI product and company it came from M1 returns a GUID and JobBOSS² an integer, each unique only within its resource and company.
Contact Contact Into HubSpot Email, with the contact uniqueID as the tie breaker
Quote Deal Into HubSpot Quote uniqueID, associated to the organization The ERP API reads quotes for M1 and JobBOSS², and lists none for Deacom.
Sales order Custom object Into HubSpot Sales order uniqueID, associated to the organization by customerID
AR invoice Custom object Into HubSpot Invoice uniqueID, associated to the organization M1 invoices come through version 2 of the ERP API, the version that exposes AR invoices, and JobBOSS² invoices through its own API.
Part Product Into HubSpot Part uniqueID, with the part number shown to sellers

Architecture

ECI’s published references describe no webhook or event subscription, so the service polls each resource on a schedule from a stored watermark. It authenticates with OAuth 2.0 client credentials issued in ECI’s Integration Engine Management Console, caches each token for its 60 minute life, and fetches a fresh one before expiry, because there is no refresh token.

The watermark is the rowVersion field, which ECI documents as rising on every insert and update. Each read asks for rows above the last value seen, sorted by rowVersion and paged with take and skip. For JobBOSS² invoices, read through the JobBOSS² API, the lastModDate field plays the same part. The highest value per resource is saved only after HubSpot accepts the batch.

Each batch lands in HubSpot as an upsert keyed on the stored uniqueID, and a separate association pass follows. For reconciliation, the ERP API’s count parameter returns a total without the rows, and we compare it with HubSpot per resource after every cycle.

The service reads the source on a schedule using a changed-since watermark, upserts each record keyed on its source identifier, then runs a separate associations pass.

What the API allows

API style
REST
Authentication
OAuth 2.0
Webhooks
Unknown
Changed-since filter
Yes
Sandbox
Unknown
Rate limit
Not documented

Developer documentation integrations.ecimanufacturing.com

Three ways to connect

The product and its hosting decide most of this. A custom API integration over the ERP API is our default for M1 and JobBOSS², because ECI documents the resources, the watermark and the paging, and one service can then serve either product. Hosted JobBOSS² and M1 customers also get a product API with write operations, which matters once HubSpot needs to create records.

The Commercient apps in the marketplace are the alternative for a standard mapping, one named for M1 and one for JobBOSS², run on Commercient’s side. We steer away from general automation platforms here, because ECI’s token flow and rowVersion paging would need hand-built HTTP steps. That is a custom build with a per-task bill on top.

  • Marketplace app

    Possible

    Commercient's marketplace apps for ECI M1 and for JobBOSS² are third-party listings, with the mapping, the runtime and the support on Commercient's side. They suit a standard mapping where nobody on your side wants to own a runtime.

  • iPaaS

    Avoid

    A general automation platform would need hand-built HTTP steps for ECI's client-credentials tokens and rowVersion paging, which is a custom build with a per-task bill on top of it.

What breaks and how we prevent it

Writes only JobBOSS² accepts

The ERP API accepts new organizations, contacts, parts and sales orders for JobBOSS² only, so the same call against M1 or Deacom has nowhere to land. Hosted M1 takes writes through the M1 Public API instead, which expects the current row version on an update and answers 409 Conflict when someone changed the record first. We design write back per product and re-read the record before retrying a conflict.

Tokens with no refresh

ECI’s tokens last 60 minutes, with no refresh token, and the Authentication API allows 100 requests a minute from one source IP. A sync that fetches a token for every call trips that limit fast. We cache one token per API user, renew it shortly before expiry, and retry a 401 once with a fresh token before logging a failure.

Local time in M1, UTC in JobBOSS²

The M1 Public API reads and writes dates in local time, the JobBOSS² API works in UTC, and the ERP API converts supported fields only when a call passes ConvertToUTC. A watermark kept on a date would skip or repeat records around every clock change. We watermark on rowVersion wherever it exists and turn every date into UTC before it reaches HubSpot.

A company ID that is not the database

ECI notes that the CompanyID its API returns does not uniquely identify the database being read, and that the instance header can change. A business with two databases, or a test copy beside production, can look like one source. We give each database its own API user, record that pairing in our configuration rather than trusting the header, and store the source beside every key.

Our approach

  1. Scope. We confirm the ECI product, its hosting, which APIs ECI has activated and which databases exist, then list the objects sellers need.
  2. Architect. We fix the resources per product, the uniqueID keys with their source, the rowVersion watermarks and any write back, in writing.
  3. Build. The service is written against a test database where one exists, with its own API user and a HubSpot portal allowlist that fails closed.
  4. Validate. We run a full load into a HubSpot sandbox and reconcile totals per resource with the API’s count-only queries.
  5. Operate. Cutover swaps the API user. We watch the run history, keep replay available and recheck coverage when ECI publishes a new API version.

Common questions

Is there a HubSpot app for ECI M1 or JobBOSS²?

Only third-party ones. The marketplace lists apps from Commercient named for ECI M1, for JobBOSS² and for ECI Macola, and nothing from HubSpot or ECI itself. They suit a standard customer and order feed. ECI's own route is its Integration Engine, whose ERP API reads M1, JobBOSS², Deacom and Macola once ECI activates it for your account.

Which ECI API should a HubSpot integration use?

Start with the ERP API, which reads M1, JobBOSS², Deacom and Macola through one set of resources. Hosted JobBOSS² customers can add the JobBOSS² API, and hosted M1 customers the M1 Public API, where each product's fuller record and its write operations live. All of them take the same kind of access token, and ECI must activate each one before its first use.

How does the ECI ERP API find records that changed?

Through rowVersion, a 64-bit number that ECI documents as higher on every new or updated record than on any other record in the source. A sync asks for rows above the last value it saved, sorts by rowVersion and pages with take and skip. ECI notes the field varies a little by product, so we test the watermark per resource before relying on it.

Can HubSpot create customers or orders in JobBOSS² or M1?

In JobBOSS², yes. The ERP API accepts new organizations, contacts, parts and sales orders for it, and the JobBOSS² API adds updates. In hosted M1, the M1 Public API accepts writes guarded by a row version check. Deacom has no customer or order write path in the ERP API. We build any write back as a reviewed second phase, never in the first release.

Does the ECI ERP API support Deacom?

Partly. For Deacom it reads sales orders and their lines, parts, jobs, purchase orders and timecards, and it can post part production and clock events. It lists no organization, contact or quote resource for Deacom, so the customer side of a HubSpot sync needs another source that we agree in discovery. Check each resource's supported ERPs before scoping anything.

What happens when an ECI access token expires in the middle of a sync?

The next call returns 401 Unauthorized. ECI's tokens last 60 minutes and come with no refresh token, so the service requests a new one with its client ID and secret, retries the failed call once and logs anything that fails again. Because writes into HubSpot are keyed upserts, retrying a page never creates a duplicate record.

How long does an ECI and HubSpot integration take to build?

Budget 10 to 20 hours of discovery and 70 to 150 hours of build for organizations, contacts, quotes, orders, invoices and parts on one ECI product. The calendar often depends more on ECI activating the API and issuing API users than on the code, so we ask for activation in the first week of discovery rather than at the end of it.

Partnerships and accreditations

  • HubSpot Elite Solutions Partner
  • HubSpot Custom Integration Accreditation
  • HubSpot CRM Data Migration Accreditation
  • HubSpot Solutions Architecture Design Accreditation

HubSpot accreditations

  • HubSpot Onboarding Accreditation
  • HubSpot Academy Accreditations

Industry specializations

  • HubSpot Healthcare Industry Specialist
  • HubSpot Financial Services Industry Specialist
  • HubSpot Manufacturing Industry Specialist
  • HubSpot Quote to Cash Capability

Partnerships

  • Anthropic Solutions Partner

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.

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 ECI integration

Send the systems, the direction and the record volume. We reply with a scope and an effort band within one business day.

  • ECI

Type any system and its version, such as Sage 300 or Sage 50. Press Enter or a comma after each one.

Add more detail (optional)

Optional. A sentence or two about the workflow is enough.

We use these answers to scope the work and for nothing else. Privacy policy.

Prefer to talk it through first? Book a technical scoping call

Talk to the people who build these

  • Nijat
  • Sean
  • Prash

Book a scoping call

Sources
  1. ECI Manufacturing API Documentation integrations.ecimanufacturing.com
  2. ERP API integrations.ecimanufacturing.com
  3. Authentication API integrations.ecimanufacturing.com
  4. JobBOSS² API integrations.ecimanufacturing.com
  5. M1 Public API integrations.ecimanufacturing.com
  6. JobBOSS²: Centralize Job Shop Data and Scale Operations ecisolutions.com
  7. M1 ERP Software for Discrete Manufacturing Growth ecisolutions.com
  8. Deacom ERP for Batch and Process Manufacturers ecisolutions.com
  9. E2 MFG Customer Support | ECI Software Solutions ecisolutions.com
  10. Tighten Margins Across Every Job with Manufacturing ERP ecisolutions.com