n8n and workflows

CRM automation in n8n without duplicate contacts

Reading time
10 minutes
Published
Topic guide
n8n automation
Written by
modernagents editorial teammodernagents is an AI automation agency for SMEs.
Illustration: contact sheets run through a funnel into one checked contact record

An n8n integration with HubSpot or Pipedrive is useful when it turns an incoming enquiry into a clearly assigned case that someone can act on. Creating a contact is usually the easy part. Existing records, conflicting values, repeated events and ownership of changes require more thought. A dependable CRM workflow therefore needs a field contract and a business definition of completion.

This guide covers contacts, companies and follow-up activities. It is an integration design, not a claim that a connection has been tested in your account. Product documentation and API information were checked on 26 September 2026. Availability also depends on your plan, permissions and installed node version.

Key takeaways

The main points for CRM automation with n8n, HubSpot and Pipedrive are:

  • A dependable CRM workflow needs a field contract and a business definition of completion.
  • Where a mapping already exists, start matching with the stored CRM ID; otherwise use an agreed stable identifier.
  • A matching decision has three outcomes: one unambiguous match is updated according to the field contract, no match creates a record using only the approved minimum information, and ambiguous matches create a review case instead of an automatic merge.
  • After a timeout, the workflow writes again only after clarifying the target state, which prevents one network timeout from creating two callback tasks.

01 / 11

What do the n8n nodes for HubSpot and Pipedrive cover?

Node coverage. n8n documents HubSpot operations for contacts, companies, deals and other CRM objects. Its Pipedrive node includes people, organisations, activities and deals. Having an object in a node does not mean every operation exposed by the vendor API is available there. Check the specific operation and input fields in the version you will run. HubSpot node, Pipedrive node.

HTTP Request and API versions. A missing field may be accessible through an HTTP Request when the official API supports it and the credentials have the necessary permissions. That creates a separate implementation to maintain. It does not establish support for an undocumented use case. Check the API version and retirement notices before following older tutorials: HubSpot, for example, announced the retirement of its V1 Lists API for 30 April 2026. Official retirement notice.

02 / 11

Which business outcome should the first workflow deliver?

First brief. A useful first brief is: “Assign new consulting enquiries from form A to a contact and create exactly one task for the responsible salesperson.” “Synchronise all customer data everywhere” is too vague. A bounded outcome makes required fields, exceptions and benefits assessable.

Deals and permissions. Decide whether an enquiry should create a deal at all. A question about opening hours is not automatically a sales opportunity. Creating a contact also does not establish permission to add that person to a mailing list. Put these business decisions into an explicitly approved branch. If AI summarises the message, keep its summary as derived information rather than replacing the original message or an evidenced status.

One direction. One direction is often enough initially: source to CRM. Add a return flow only after identifying which changes the source genuinely needs and how loops will be prevented. This reduces conflicting responsibilities as well as technical complexity.

03 / 11

What belongs in the field contract?

For every transferred field, explain its meaning, owner and behaviour when a value is missing. The contract should make sense to both sales and the person implementing the integration.

The table shows a field contract with eight fields, each with its authoritative source and a suggested pilot rule.

Field Authoritative source Suggested pilot rule
External enquiry ID Intake system Preserve unchanged; identifies the enquiry
CRM contact ID CRM Keep the reference after successful matching
Email address Confirmed input Normalise for search; preserve original separately if needed
Company relationship Reviewed CRM reference Send ambiguous matches for review
Responsible person CRM assignment rule Assign only valid, active users
Phone number Agreed source An empty form field does not erase an existing number
Communication permission System holding the evidence Never infer permission merely from having an address
Processing status Process owner Permit only defined transitions

Absent, cleared or new. Distinguish a field absent from the event, a field deliberately cleared, and a field containing a new value. Treating all three as an empty string can erase reliable CRM information. Selection fields also need internal values rather than whatever label appears on screen. HubSpot specifically documents internal names for enumeration properties. HubSpot contacts documentation.

Lengths, types and characters. Include maximum lengths, data types and handling of special characters. Preserve accents and umlauts in names. Phone numbers are not numerical quantities. A customer identifier with leading zeros must not become a number during an intermediate export.

04 / 11

How do you match contacts without creating duplicates or wrong merges?

Stored ID first. Where a mapping already exists, start with the stored CRM ID. Otherwise use an agreed stable identifier. A verified email address can help, but it is not always a permanent identity: shared inboxes, job changes and multiple addresses create exceptions.

A practical matching decision has three outcomes:

  1. One unambiguous match: Update the existing record according to the field contract.
  2. No match: Create a record using only the approved minimum information.
  3. Ambiguous matches: Create a review case instead of automatically merging people.

Name similarity. Approximate name matching can help a person investigate. It should not, by itself, authorise a merge. Two people called Alex Berger may be unrelated; a corrected spelling may still refer to an existing contact. Record the decision and relevant IDs without copying unnecessary contact details into every error message.

Concurrency. Concurrency introduces another case. Two enquiries arriving together may both find no existing contact. A search immediately before creation is therefore not always sufficient. Investigate unique keys or a controlled creation path that prevents concurrent processing of the same identity. The implementation depends on the API and the storage used to coordinate work.

05 / 11

How do you connect companies, contacts and activities?

Records and relationships. A company name in a text field is different from a relationship to a company record. HubSpot provides Associations for such relationships. Pipedrive also models people and organisations as separate objects. The integration must manage both the records and their links. HubSpot Associations, Pipedrive Persons, Pipedrive Organizations.

Order of steps. Define the order: identify the company, identify the person, establish the relationship, then create the follow-up activity. Store the result of each step. If only the activity fails, retrying must not recreate the company and contact. Conversely, an existing contact without the required task does not make an enquiry fully processed.

Several relationships. Decide whether multiple company relationships are legitimate. An external consultant may contact you on behalf of several businesses. Replacing their existing company simply because a new email domain appears would be wrong. The CRM structure should represent the real situation rather than forcing every enquiry into an artificially simple model.

Got a workflow like this?

Tell me about it. Honest take and a rough price, usually within a day.

n8n automation →

06 / 11

Worked example: enquiry and callback task

Starting point. This example is synthetic and does not describe a customer deployment. An Austrian service business receives enquiry REQ-4802. Both the person and the company already exist in its CRM. The form contains a new phone number but no permission for additional marketing.

Check and update. The workflow checks the enquiry ID first. If that enquiry has already completed, it returns the stored outcome. Otherwise it finds the contact through the existing mapping, reads the relevant current fields and applies the phone-number rule. If the form is an approved source, the number is updated and the incoming enquiry recorded. Communication permission remains unchanged.

Callback task. Next, it creates a callback task carrying the enquiry reference. The responsible person comes from a maintained assignment table. If that user is disabled, the task goes to a designated team queue or the case stops for review. An arbitrary default user would conceal the assignment problem rather than resolve it.

Timeout after task creation. Suppose the connection fails after task creation. The workflow cannot tell whether the final write reached the CRM. When processing resumes, it looks for the saved task reference or another designed unique identifier. It writes again only after clarifying the target state. This distinction prevents one network timeout from creating two callback tasks.

Business outcome. The business outcome is now explicit: contact matched, permitted fields updated, exactly one task present and the responsible person notified. A green n8n execution without verifying those outcomes would not be sufficient evidence of completion.

07 / 11

How do you backfill existing data safely?

Read-only comparison. A historical import differs from processing new enquiries. Begin with a read-only comparison: identify missing records, conflicting identifiers and archived contacts. The first deliverable should be a proposed change list, not immediate edits to the production CRM.

Resume point and batches. The import needs a resume point, a controlled batch size and results for individual records. If a batch partially succeeds, retry only the unfinished items. A single overall failure must not recreate records that were already written successfully. Check request limits, search visibility delays and permissions against the actual account.

New events during the import. New events arriving during the import must remain accounted for. Agree a cutoff or change marker from which continuous processing takes over. Afterwards reconcile source records, successful mappings, exceptions and intentionally excluded records. Give every difference a category so that “almost all imported” does not hide unresolved customer data.

Existing automations. Plan the backfill with the sales team. Large historical imports can trigger unrelated CRM automations, notifications or assignment rules. Identify these effects in advance and use a limited, approved sample before increasing volume. A technically successful data import can still disrupt users if its secondary actions are ignored.

08 / 11

How do you resolve conflicts before two-way synchronisation?

Authority per field. With two writing directions, “newest value wins” is rarely adequate. An automatically reformatted phone number may be newer than a manually verified number without being more accurate. Assign authority per field instead: master data from the ERP, sales ownership from the CRM and enquiry state from the intake system, for example.

Own changes, deletions and merges. Mark the integration’s own changes where the API permits it, and avoid unnecessary return updates. Read or compare the target value before changing it. Deletions and merges need separate rules: an archived CRM contact should not silently reappear during the next import.

Review list. Put conflicts into a manageable review list showing the original value, proposed value and decision. Approving that list is business work. Broad administrator permissions do not resolve uncertainty about which information is correct.

09 / 11

Which awkward cases should acceptance cover?

Use approved test data for these CRM integration cases:

  • a new contact
  • an existing contact
  • an ambiguous match
  • duplicate delivery
  • two simultaneous enquiries
  • a disabled owner
  • missing required values
  • invalid selection options
  • a timeout after a possible write
  • a changed company relationship

Expected CRM state. For each case, record the expected CRM state rather than only the expected node output. Operational measures should include unprocessed enquiries, duplicate activities, unresolved matches and the delay until a person can act. The number of API calls made is less useful than these business outcomes.

First scope. Start with one source, a clear contact model and one follow-up activity. Once that path remains understandable under failures and repetition, expand it to deals, additional teams or other systems. The next practical step is a field-contract session with the CRM owner, followed by a read-only comparison of the data you intend to connect.

CRM automations in acceptance. Include existing CRM automations in acceptance. A status change may trigger additional tasks or messages. Identify these downstream effects with the CRM owner before allowing the integration to write to production.

10 / 11

Take the worksheet

Worksheet

Download the editable CSV table

InputDecisionControl
Known email, new requestInspect existing contactCreate task, not duplicate person
Shared company addressKeep association uncertainDo not merge people blindly
Unknown contactCapture minimum fieldsDo not invent company
Repeated eventRecognise existing requestStable source key
Missing employee ownerTeam queueNo unowned task

Columns to fill in, in the file: Your value / observation, Owner, Next action.

Download the editable CSV table (CSV). Add your own values, owners and open actions. This worksheet contains no measured client results.

11 / 11

These pages cover the service overview and the related decisions for CRM automation with n8n:

For a workflow review, start with the task, systems involved and typical exceptions. Discuss it with modernagents.

ShareEmail

Related reading

n8n automation

Got a workflow like this?

Tell me about it. Honest take and a rough price, usually within a day.

Robert Van Ysendyck · Founder & Managing Director