IV-Lead Weekly | What's new in the B2B world?

Writing an integration spec for HubSpot CRM and Priority ERP

Written by Ohad Peter | 17:23:55 26/06/2026

Connecting your CRM to your ERP is where sales and finance finally see the same customer — or where two systems quietly disagree forever. The difference is the integration specification: the document that decides, before any code is written, what data moves between HubSpot and Priority, in which direction, and which system owns each field — because an integration without a spec inherits whichever assumptions the developer happened to make. Here's the practitioner's read on writing a spec that makes the build succeed.

Why write a specification before building the integration?

Because the spec is where the hard decisions get made deliberately instead of by default — it forces the business questions to the surface before they become expensive code mistakes. CRM and ERP model a customer differently: HubSpot thinks in contacts, companies, and deals; an ERP like Priority thinks in customers, orders, invoices, and items. Without a spec, the developer guesses how those map, and you discover the wrong guess in production. The spec is where you answer the questions that actually matter — what should sync, who owns the truth, what happens to mismatches — once, on paper, where they're cheap to change. Worked example: deciding in the spec that the ERP owns the official company name and the CRM defers to it prevents the all-too-common situation where two systems hold two slightly different names for the same customer and no report ever ties out.

What data should the spec actually map?

List every object and field that crosses the boundary, with its source, its destination, its direction, and its owner — because a vague "sync the customers" instruction guarantees an ambiguous build. Go object by object. Which CRM objects connect to which ERP entities — companies to customers, deals to orders or quotes. Then, field by field within each, name the source field, the destination field, the sync direction, and which system is authoritative. Be explicit about identifiers: what unique key matches a HubSpot company to a Priority customer, since the whole sync depends on reliable matching. Worked example: a mapping table row that reads "HubSpot company domain ↔ Priority customer code, matched on a shared external ID, ERP authoritative" tells the developer exactly what to build — whereas "keep customers in sync" tells them nothing they can implement without guessing.

How do you define the sync rules and edge cases?

Specify the triggers, the direction, and what happens when things go wrong — because the edge cases you don't define are the ones that break the integration in week three. Beyond the field map, the spec needs the rules: when does a sync fire (real-time, scheduled, on a status change), which direction does each flow, and crucially, how do conflicts and failures resolve. What happens when a record exists in one system but not the other? When the same field differs in both? When a sync fails partway? Worked example: defining upfront that a new deal won closed in HubSpot creates an order in Priority — but only once it has the required fields, and that a failed sync queues for retry and alerts a human — saves you from the silent half-synced records that are the hardest bugs to find later. The unglamorous edge-case section is the part that earns its keep.

Who needs to sign off on the spec, and why?

The people who own the data on each side — sales ops for the CRM, finance or operations for the ERP — because an integration spec is a business agreement disguised as a technical document. Deciding that the ERP owns pricing or the CRM owns lead source isn't a developer's call; it's a business decision about who's accountable for which truth. Get the right people to review and agree before the build, so the integration encodes how the business actually wants to operate, not just what was technically convenient. This is the same discipline behind any clean data project: agree on ownership and rules first, build second, validate third. Skipping the sign-off is how integrations end up technically working and organizationally wrong — syncing data nobody agreed should be authoritative.

The IV-Lead take

The temptation is to treat a CRM-ERP integration as a purely technical job and hand it straight to a developer. That's how you get two systems that sync flawlessly and still disagree about your customers, because nobody decided who owns what. The spec is the cheap, boring document that prevents the expensive, confusing aftermath. Map every field with a source, a direction, and an owner; define the sync rules and the edge cases; get the data owners to sign off. Do that and the build is almost anticlimactic — which is exactly what you want from an integration this important.

Planning a HubSpot–ERP integration and want the spec right before anyone builds it? Book a 30-minute portal audit — we'll help you map the data, ownership, and sync rules before the project starts. For the bigger picture, see how we approach CRM integrations.

Frequently asked questions

What's the most important section of an integration spec?
The field-mapping table with ownership and direction for each field. It's where the business decides which system holds the truth, and it's what the developer builds directly against. Vague mappings are the leading cause of integrations that sync the wrong data.

How do you match a HubSpot company to an ERP customer reliably?
Through a shared unique identifier — often an external ID or customer code stored in both systems. Define this matching key explicitly in the spec, because every sync decision depends on records lining up correctly.

Should the CRM or the ERP be the source of truth?
It depends on the field, and that's a business decision to make per field, not a blanket rule. Typically the ERP owns financial and order data while the CRM owns sales and marketing data — but the spec should state it explicitly for each mapped field.

What happens if a sync fails partway through?
That's exactly the edge case your spec should define in advance — usually a retry with an alert to a human, so a failed sync doesn't leave silent half-synced records. Defining failure handling upfront prevents the hardest-to-find bugs.