{
  "slug": "eci-software",
  "url": "https://apps.sectorgrowth.com/integrations/eci-software/",
  "name": "ECI",
  "vendor": "ECI Software Solutions",
  "aliases": [
    "ECI M1",
    "M1 ERP",
    "JobBOSS²",
    "JobBOSS",
    "Deacom",
    "ECI Software Solutions"
  ],
  "website": "https://www.ecisolutions.com/industries/manufacturing/",
  "category": {
    "slug": "manufacturing-and-distribution-erp",
    "name": "Manufacturing and distribution ERP",
    "url": "https://apps.sectorgrowth.com/categories/manufacturing-and-distribution-erp/"
  },
  "summary": "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.",
  "answer": "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.",
  "nativeApp": {
    "status": "third-party",
    "name": "ECI M1 SYNC, Data Lake, AI, MCP by Commercient",
    "developer": "Commercient",
    "verifiedAt": "2026-09-28"
  },
  "api": {
    "style": "rest",
    "auth": "oauth2",
    "webhooks": "unknown",
    "changedSince": "yes",
    "sandbox": "unknown",
    "docsUrl": "https://integrations.ecimanufacturing.com/api.html?family=erp"
  },
  "objects": [
    {
      "source": "Organization",
      "hubspot": "company",
      "direction": "to_hubspot",
      "key": "The ERP API uniqueID, stored with the ECI product and company it came from",
      "notes": "M1 returns a GUID and JobBOSS² an integer, each unique only within its resource and company."
    },
    {
      "source": "Contact",
      "hubspot": "contact",
      "direction": "to_hubspot",
      "key": "Email, with the contact uniqueID as the tie breaker"
    },
    {
      "source": "Quote",
      "hubspot": "deal",
      "direction": "to_hubspot",
      "key": "Quote uniqueID, associated to the organization",
      "notes": "The ERP API reads quotes for M1 and JobBOSS², and lists none for Deacom."
    },
    {
      "source": "Sales order",
      "hubspot": "custom",
      "direction": "to_hubspot",
      "key": "Sales order uniqueID, associated to the organization by customerID"
    },
    {
      "source": "AR invoice",
      "hubspot": "custom",
      "direction": "to_hubspot",
      "key": "Invoice uniqueID, associated to the organization",
      "notes": "M1 invoices come through version 2 of the ERP API, the version that exposes AR invoices, and JobBOSS² invoices through its own API."
    },
    {
      "source": "Part",
      "hubspot": "product",
      "direction": "to_hubspot",
      "key": "Part uniqueID, with the part number shown to sellers"
    }
  ],
  "approaches": [
    {
      "kind": "custom",
      "fit": "recommended",
      "why": "ECI documents the ERP API's resources, its rowVersion watermark and its paging in published OpenAPI references, so one service can read M1, JobBOSS² or Deacom on a schedule and upsert into HubSpot without duplicates."
    },
    {
      "kind": "native",
      "fit": "possible",
      "why": "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."
    },
    {
      "kind": "ipaas",
      "fit": "avoid",
      "why": "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."
    }
  ],
  "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 HubSpot app for ECI M1 or JobBOSS²?",
      "a": "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."
    },
    {
      "q": "Which ECI API should a HubSpot integration use?",
      "a": "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."
    },
    {
      "q": "How does the ECI ERP API find records that changed?",
      "a": "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."
    },
    {
      "q": "Can HubSpot create customers or orders in JobBOSS² or M1?",
      "a": "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."
    },
    {
      "q": "Does the ECI ERP API support Deacom?",
      "a": "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."
    },
    {
      "q": "What happens when an ECI access token expires in the middle of a sync?",
      "a": "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."
    },
    {
      "q": "How long does an ECI and HubSpot integration take to build?",
      "a": "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."
    }
  ],
  "sections": [
    {
      "depth": 2,
      "text": "Why teams connect ECI to HubSpot",
      "anchor": "#why-teams-connect-eci-to-hubspot",
      "url": "https://apps.sectorgrowth.com/integrations/eci-software/#why-teams-connect-eci-to-hubspot"
    },
    {
      "depth": 2,
      "text": "What syncs",
      "anchor": "#what-syncs",
      "url": "https://apps.sectorgrowth.com/integrations/eci-software/#what-syncs"
    },
    {
      "depth": 2,
      "text": "Architecture",
      "anchor": "#architecture",
      "url": "https://apps.sectorgrowth.com/integrations/eci-software/#architecture"
    },
    {
      "depth": 2,
      "text": "Three ways to connect",
      "anchor": "#three-ways-to-connect",
      "url": "https://apps.sectorgrowth.com/integrations/eci-software/#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/eci-software/#what-breaks-and-how-we-prevent-it"
    },
    {
      "depth": 3,
      "text": "Writes only JobBOSS² accepts",
      "anchor": "#writes-only-jobboss-accepts",
      "url": "https://apps.sectorgrowth.com/integrations/eci-software/#writes-only-jobboss-accepts"
    },
    {
      "depth": 3,
      "text": "Tokens with no refresh",
      "anchor": "#tokens-with-no-refresh",
      "url": "https://apps.sectorgrowth.com/integrations/eci-software/#tokens-with-no-refresh"
    },
    {
      "depth": 3,
      "text": "Local time in M1, UTC in JobBOSS²",
      "anchor": "#local-time-in-m1-utc-in-jobboss",
      "url": "https://apps.sectorgrowth.com/integrations/eci-software/#local-time-in-m1-utc-in-jobboss"
    },
    {
      "depth": 3,
      "text": "A company ID that is not the database",
      "anchor": "#a-company-id-that-is-not-the-database",
      "url": "https://apps.sectorgrowth.com/integrations/eci-software/#a-company-id-that-is-not-the-database"
    },
    {
      "depth": 2,
      "text": "Our approach",
      "anchor": "#our-approach",
      "url": "https://apps.sectorgrowth.com/integrations/eci-software/#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": "ECI Manufacturing API Documentation",
      "url": "https://integrations.ecimanufacturing.com/"
    },
    {
      "title": "ERP API",
      "url": "https://integrations.ecimanufacturing.com/api.html?family=erp"
    },
    {
      "title": "Authentication API",
      "url": "https://integrations.ecimanufacturing.com/api.html?id=authentication-v1"
    },
    {
      "title": "JobBOSS² API",
      "url": "https://integrations.ecimanufacturing.com/api.html?family=jb2"
    },
    {
      "title": "M1 Public API",
      "url": "https://integrations.ecimanufacturing.com/api.html?family=m1"
    },
    {
      "title": "JobBOSS²: Centralize Job Shop Data and Scale Operations",
      "url": "https://www.ecisolutions.com/products/jobboss2/"
    },
    {
      "title": "M1 ERP Software for Discrete Manufacturing Growth",
      "url": "https://www.ecisolutions.com/products/erp-software-for-manufacturing/"
    },
    {
      "title": "Deacom ERP for Batch and Process Manufacturers",
      "url": "https://www.ecisolutions.com/products/deacom-erp-software/"
    },
    {
      "title": "E2 MFG Customer Support | ECI Software Solutions",
      "url": "https://www.ecisolutions.com/products/e2-mfg/"
    },
    {
      "title": "Tighten Margins Across Every Job with Manufacturing ERP",
      "url": "https://www.ecisolutions.com/industries/manufacturing/"
    }
  ]
}