HubSpot + iRely integration

iRely's i21 holds commodity contracts, producer accounts and invoices behind a documented REST API that reads far more of that record than it writes.

Connects by API , iPaaS

Scope this integration Book a scoping call Estimate the cost

Is there an official iRely + HubSpot integration?

No. Neither HubSpot nor iRely publishes an i21 app in the HubSpot App Marketplace as of September 2026, and a search returns only listings that mention the name in passing. The route we recommend is a custom API integration over the i21 REST API, reading customers, contracts and orders on their last-updated dates, at 70 to 150 build hours. It runs one way at first, because the API cannot create an i21 customer.

Recommended route
Custom API integration
Build effort
70 to 150 hours
In the HubSpot App Marketplace?
No listed app
Typical elapsed time
4 to 8 weeks

Marketplace checked September 2026.

Why teams connect iRely to HubSpot

Many businesses running iRely’s i21 trade with the same people in both directions. A grain elevator buys a producer’s crop on a purchase contract, then sells that producer feed, seed or fuel on account. The i21 data model allows for it: one entity record can carry customer and vendor flags at once, with its contacts, locations, credit terms and salesperson attached. The commercial history is complete, and very little of it reaches the people doing outreach.

What those people ask for is specific. Marketing wants to segment producers by line of business without asking the office for an export. Originators want open contracts on the company record before they call. Sellers want the receivables balance and the credit hold flag before they promise a delivery. Each of those fields is documented in the i21 REST API, on entities, customers, contracts and invoices. The work is carrying them across, not finding them.

i21 also has its own CRM, with leads, opportunities, campaigns and logged calls. That makes the first scoping decision one of ownership. i21 stays the book of record for contracts, scale tickets, orders and invoices whichever way it goes. HubSpot takes marketing and the web forms, and it takes the pipeline only if the business decides the i21 opportunity list should stop being the one people update.

What syncs

Six objects carry what sellers and marketers ask for. Customers become HubSpot companies and entity contacts become contacts. Commodity contracts, sales orders and invoices land as custom objects on the company. Opportunities become deals only where the i21 CRM keeps running the pipeline.

Every row keys on the id the API documents as unique, never on a name. Customers key on the entity id, which invoices and contracts reference too, so their associations resolve without a lookup. The customer number is what sellers recognize, so it rides along as a label rather than a key. A contract carries the entity id of its customer or vendor, so a producer’s contracts land on one company whichever side of the trade they sit.

Everything moves one way on the first build. The customer, entity and opportunity resources are read only in the API, so HubSpot cannot create an i21 customer or turn a closed deal into an i21 opportunity. The API does accept new quotes, sales orders and activities. A won deal raising a draft quote for the office to review is the write-back worth scoping second.

Objects that sync between iRely and HubSpot
Source object HubSpot object Direction Match key Notes
Customer Company Into HubSpot Entity id in a custom HubSpot property, with the customer number shown as a label One entity can be flagged as customer and vendor at once, and still becomes one company.
Entity contact Contact Into HubSpot Entity contact id, with the email checked for collisions before the upsert Contacts document no last-updated date, so they are re-read in full each cycle.
Commodity contract Custom object Into HubSpot Contract header id, with the contract number as the readable label The entity id on the contract names the customer or vendor, so it associates without a lookup.
Opportunity Deal Into HubSpot Opportunity id Only where the i21 CRM keeps the pipeline, since the API reads opportunities and cannot write them.
Sales order Custom object Into HubSpot Sales order id, with the order number as the label The list names the customer rather than returning its id, so the association needs a match step.
Invoice Custom object Into HubSpot Invoice id, with the invoice number as the label No documented last-updated date, so open invoices are re-read until i21 marks them paid.

Architecture

The pattern is a polling watermark sync, because the public i21 reference documents no webhooks. A service logs in with an API username, a password and a company code, and holds the bearer token it receives. It renews that token with the refresh token rather than logging in again.

Each resource then reads on its own schedule. Customers accept dateFrom and dateTo on their last update, and contracts, sales orders and opportunities carry a dateLastUpdated field the dynamic filter can compare. Entity contacts and invoices document no such date, so the service re-reads them and compares a hash of each row with the last one it sent.

Deletions come from the timestamp endpoints. Given the ids the service already holds, they return created, updated and deleted dates, and deletedRecordsOnly narrows the answer to deletions. Writes into HubSpot are batch upserts on the i21 ids, then a separate association pass. A watermark per resource lives in the service, so a restart resumes instead of reloading.

A scheduled service logs in to the i21 REST API, reads each resource on its last-updated date or in full, and asks the timestamp endpoints which ids were deleted. It upserts into HubSpot on the i21 ids, then runs a separate association pass.

What the API allows

API style
REST
Authentication
Session login
Webhooks
Unknown
Changed-since filter
Partial
Sandbox
Unknown
Rate limit
Not documented

Developer documentation api.irely.com

Three ways to connect

The question that decides the route for i21 is how much of the contract book HubSpot has to be trusted with. For one narrow flow, such as new customers into a marketing list, an iPaaS with a generic HTTP step can call the i21 API and prove the value quickly.

That flow gets fragile once six resources need their own watermarks, deletions need a sweep and the token needs refreshing mid run. A custom API integration keeps that state in one place, replays a resource on request and reports its counts after every run. The HubSpot App Marketplace offers no third route, since nothing there is published for iRely or i21 by HubSpot or by iRely. The choice is between a quick automation that proves the value and a keyed service a sales team can forecast from.

  • iPaaS

    Possible

    An iPaaS with a generic HTTP step can call the i21 API for one narrow flow, such as new customers into a marketing list. Six watermarks, a deletion sweep and token refresh are more state than it holds well.

  • Marketplace app

    Avoid

    The HubSpot App Marketplace has no app for iRely or i21 from HubSpot or from iRely, only listings whose descriptions happen to mention the name.

What breaks and how we prevent it

Inactive customers hidden by default

The customer list leaves inactive customers out unless asked, because excludeInactive defaults to true. A sync that trusts the default never sees an account close, and the company stays live in HubSpot. We read with excludeInactive set to false and carry the active flag, so lists and workflows can leave closed accounts out.

Sales orders that name the customer

The sales order list returns the customer as a name, and none of its documented fields carries the customer id, although the create response does. Matching on names would give two customers with the same name one set of orders. We match against the entity list, hold any order without a single match for review, and ask iRely early whether the id can be selected.

Invoices with no last-updated date

Invoices document no last-updated field, so a watermark cannot see an invoice being paid. We re-read every invoice still open in HubSpot each cycle until i21 marks it paid.

A token that expires mid run

The access token expires after a period set in the server settings, and an expired token returns a 401. A long backfill that ignores this fails halfway. The service refreshes before each resource and resumes from its checkpoint after a 401.

One missing read permission

API users carry a permission per resource, such as customer.read or invoice.read, and a missing one returns a 403 on that resource while the rest succeed. We list the permissions in discovery and treat the first 403 as a stop, never a skip.

Our approach

  1. Scope. We confirm API access and its permissions with iRely, settle which system owns the pipeline, and list the fields sellers actually use.
  2. Architect. Entity id as the company key, a watermark per resource, a timestamp sweep for deletions, and full re-reads for contacts and open invoices.
  3. Build. Whether iRely offers a test company for the API is not public, so we ask during discovery. The first build only reads from i21, and it writes to a HubSpot sandbox portal behind an allowlist that fails closed.
  4. Validate. A full backfill, counts per resource compared with i21, and the unmatched sales orders walked through with the office.
  5. Operate. We watch counts and 4xx responses on every run, keep a replay endpoint per resource, and recheck the mapping when the i21 changelog records a new version.

Common questions

Is there an iRely or i21 app in the HubSpot App Marketplace?

No. A search of the HubSpot App Marketplace for iRely returned 35 listings, and every one was a fuzzy match whose description mentions the word, with nothing published by HubSpot or by iRely. The routes that exist are a build against the documented i21 REST API, or an iPaaS calling that same API for a narrow flow.

How does the i21 REST API authenticate a HubSpot integration?

With a login call. The integration posts a username, a password and a company code to the authentication endpoint and receives a JSON Web Token to send as a bearer token, plus a longer-lived refresh token. iRely documents a second login for iRely user credentials. Tokens expire after a period set by the server, and an expired one returns a 401.

How fresh is iRely data in HubSpot?

As fresh as the schedule you choose, because the public i21 reference documents no webhooks to push a change. Customers, contracts, sales orders and opportunities read incrementally on their last-updated dates, so a frequent cycle stays cheap. Contacts and open invoices are re-read in full, and the size of that re-read is what limits how often a cycle can run.

What happens when an i21 record is deleted or a sync runs twice?

Deletions are found through the timestamp endpoints, which report a deletion date for the ids the service already holds, and we mark the matching HubSpot record for review rather than deleting it outright. A second run of the same batch changes nothing, because every upsert keys on the i21 id held in a unique HubSpot property.

Can HubSpot create customers in iRely i21?

Not through the API. The i21 customer and entity resources are read only, so a new customer is set up in i21 by the office and reaches HubSpot on the next cycle. The API does accept quotes, sales orders and activities, and a won deal raising a draft quote for the office to review is the write-back we would scope as a second phase.

Which i21 permissions does a HubSpot integration need?

A read permission on each resource it syncs, such as customer.read and invoice.read, granted to the API user and carried as claims in its token. A user without one gets a 403 on that resource while the others succeed, so we list the permissions in discovery and treat the first 403 as a stop, never a skip.

How long does an iRely and HubSpot integration take?

Plan on 10 to 20 hours of discovery and 70 to 150 hours of build for customers, contacts, contracts, orders, invoices and opportunities, with watermarks, a deletion sweep and replay endpoints. Most of the discovery goes on two questions: which system owns the pipeline, and how sales orders resolve to customers when the order list names them.

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

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

  • iRely

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