# CRM Integration Developers UK

Source: https://dijituldevelopments.co.uk/crm-integration/
Updated: 2026-10-10

> dijitul developments builds CRM integrations for UK businesses: HubSpot, Salesforce and other CRMs connected to your website, ecommerce shop, accounts package and in-house systems, so contacts, deals and orders sync without retyping. We use the CRM's official APIs, webhooks and queues, and every project is a fixed-price quote after a free chat.

## Problems this solves

- Sales staff copy web enquiries into the CRM by hand, and some never make it
- The CRM says a customer is active, the accounts package says they're on stop
- Nobody trusts the pipeline report because half the deals are out of date
- A Zapier chain broke months ago and duplicates are everywhere
- Marketing can't segment by what customers actually bought
- You're paying for CRM seats for people who only need to see one screen

## Key facts

- We work with the HubSpot CRM API (v3 objects, associations and webhooks) and the Salesforce REST, Bulk API 2.0 and Pub/Sub APIs
- HubSpot retired its old hapikey API keys in November 2022, so integrations authenticate with OAuth or app access tokens
- Salesforce integrations use a Connected App with OAuth 2.0, typically the JWT bearer flow for server-to-server jobs
- Every sync has a clear system of record per field, so two systems never fight over the same value
- Webhook payloads are verified (HubSpot sends X-HubSpot-Signature-v3) and processed through a queue
- Failed records land in a review list with the reason, not in a silent log file
- You own the code and the credentials at the end

## What a CRM integration actually fixes

Most CRM problems are not CRM problems. They are data arriving late, twice, or not at all. A web form emails the office, someone pastes it into HubSpot, and the deal stage depends on who remembered to update it. Meanwhile the real money lives in your accounts package or order system, which the CRM never sees.

A CRM integration moves that data automatically and predictably. New enquiries become contacts and deals the moment they're submitted. Orders and invoices appear on the customer's timeline. Account status, credit limits or renewal dates flow back from your finance or operations system, so the sales team stops calling people who are on stop. We build this as a small, documented service that sits between your systems, using each platform's official API.

## HubSpot, Salesforce and the rest

**HubSpot.** We use the CRM API v3 for contacts, companies, deals, tickets, custom objects and associations, with batch endpoints for volume. HubSpot stopped accepting legacy API keys in November 2022, so we authenticate with OAuth for multi-account apps or an app access token for a single portal. HubSpot has been changing how single-portal apps are created, so we check the current model at the start of each project rather than assuming last year's setup. Incoming webhooks are verified using the `X-HubSpot-Signature-v3` header and request timestamp.

**Salesforce.** We register a Connected App and usually use the OAuth 2.0 JWT bearer flow for unattended server jobs. Day-to-day record changes go through the REST API or Composite requests; large loads use Bulk API 2.0. To react to changes in Salesforce, we subscribe to Change Data Capture or Platform Events through the Pub/Sub API rather than polling, which keeps you well inside your org's API allocation.

**Others.** Pipedrive, Zoho CRM, Microsoft Dynamics 365 and bespoke CRMs all expose REST APIs with OAuth. The pattern is the same: authenticate properly, map fields, choose a direction for each field, and handle failure. If your CRM is something we've built ourselves, see [bespoke CRM development](https://dijituldevelopments.co.uk/crm-development/).

## How we design the sync

The first job is a field map. For every field we agree which system owns it. Usually the CRM owns lead source, owner and deal stage, while the accounts or order system owns invoices, balances and stock. Two-way sync is only applied where it genuinely makes sense, because two systems editing the same field is how data quietly corrupts.

- **Matching:** we decide how records are matched (email, company registration number, an external ID field) and store the other system's ID on each record so later updates never create duplicates.
- **Triggers:** webhooks or change events where the platform supports them, scheduled delta syncs where it doesn't.
- **Queues and retries:** every change goes onto a queue (Redis or a database-backed queue in Laravel or Node.js), so a CRM outage or rate limit pauses the sync instead of losing data.
- **Idempotency:** processing the same event twice gives the same result, which matters because webhooks are delivered at least once, not exactly once.

## Connecting the CRM to money

The most useful CRM integrations join sales to finance. When a deal is marked won, we can create the customer and a draft invoice in your accounts package, then write the invoice number and payment status back to the deal. We've been building this kind of link since the KashFlow and OpenCart days, when orders created customers and invoices automatically. Today it's more often Xero or QuickBooks: see [accounting software integration](https://dijituldevelopments.co.uk/accounting-software-integration/) for that side of the work.

For ecommerce businesses, order history on the contact record lets marketing segment by what people actually bought, not just what they clicked.

## Data quality, GDPR and handover

Integrations amplify whatever is already in your data. Before switching anything on we usually run a cleaning pass: merging duplicates, normalising phone numbers and postcodes, and flagging records with no lawful basis for marketing. We only sync the fields you need, keep an audit log of what changed and why, and make sure a deletion request in one system can be carried out in the others.

At the end you get the source code, a field map, a runbook for re-authorising tokens, and a simple error screen your team can check. If you want us to keep an eye on it afterwards, that's available through [dijitul support](https://dijitulsupport.co.uk/). To start, [get in touch](https://dijituldevelopments.co.uk/contact/) for a free chat.

## What we deliver

- Two-way sync between your CRM and website forms, shop, or line-of-business app
- Field mapping document agreed before any code is written
- Duplicate detection and merge rules based on email, company number or your own keys
- Order, invoice and payment history pushed onto the CRM contact or company timeline
- Webhook receiver with signature checks, retries and an error dashboard
- One-off data clean and import of historical records
- Handover notes covering tokens, scopes and how to re-authorise

Technologies: HubSpot CRM API, Salesforce REST API, Salesforce Pub/Sub API, OAuth 2.0, Laravel, Node.js, Redis

## FAQs

### Can you integrate HubSpot with our website forms without using HubSpot's own forms?

Yes. dijitul can post submissions from your existing forms to the HubSpot CRM API, creating or updating the contact, associating it with a company and deal, and recording the page and campaign it came from. Your form design and validation stay as they are.

### Is it better to use Zapier for CRM integration?

For a single low-volume trigger, Zapier is often fine. Once you need matching rules, two-way sync, history imports, or error handling your team can see, custom code is usually cheaper to run and easier to trust. We'll tell you honestly which fits during the free chat.

### Will the integration hit Salesforce API limits?

Not if it's designed properly. We use Change Data Capture or Platform Events instead of polling, batch updates through Composite or Bulk API 2.0, and monitor usage. Most integrations we design use a small fraction of an org's daily allocation.

### Can you sync our CRM with Xero or QuickBooks?

Yes. A common build is: deal won in the CRM creates the customer and invoice in Xero or QuickBooks, then payment status flows back to the CRM. dijitul agrees which system owns each field first, so the two never overwrite each other.

### What happens when a sync fails?

The record goes to a review list with the error message from the API, and the integration retries automatically where it makes sense, for example after a rate limit or timeout. Validation errors such as a missing required field are flagged for a person to fix.

### How much does a CRM integration cost?

It depends on the systems, the number of objects and whether sync is one-way or two-way. dijitul gives a fixed-price quote after a free chat and a short scoping stage, so you know the full cost before work starts.

## Pricing and contact

Every project gets a fixed-price quote after a free initial chat and a short scoping stage. You own the code and the data. Book a free chat: https://dijituldevelopments.co.uk/contact/ · 01623 650333 · info@dijitul.uk
