Agentbrisk

How to Use Make.com to Sync Two CRMs Automatically

March 28, 2026 · Editorial Team · 6 min read · make-comcrm-syncworkflow-automation

Keeping two CRMs in sync by hand is exactly the kind of work that sounds manageable until you're three months in and the records have drifted so far apart that nobody trusts either system. Sales uses HubSpot, the onboarding team uses Pipedrive, and there's always one contact that exists in one but not the other.

Make.com (formerly Integromat) handles this with a visual scenario builder that's more flexible than Zapier for multi-step data flows, especially when you need custom field mapping, filters on specific conditions, and error handling that doesn't just silently fail. Here's how to build a working CRM sync scenario from scratch.


Understanding the Scenario Builder

Make's interface works differently from other automation tools. Instead of a linear step list, you build a visual "module map" on a canvas. Each circle on the canvas is a module (trigger or action), and you draw connections between them with arrows.

For a CRM sync, your scenario looks like this:

  • Watch for new or updated contacts in CRM A
  • Check whether the contact already exists in CRM B
  • Create or update the record in CRM B
  • Handle errors with a separate route

That's four modules. Make's free plan allows 1,000 operations per month, which is enough for light usage. If you're syncing hundreds of contacts daily, the Core plan ($10/month for 10,000 operations) is more realistic.


Step 1: Create a New Scenario

  1. Log into Make.com and click Create a new scenario from the dashboard.
  2. The canvas opens with a "+" prompt in the center. Click it to add your first module.
  3. Search for your source CRM. For this walkthrough, I'll use HubSpot as the source and Pipedrive as the destination. The same logic applies to any CRM pair.

Step 2: Set the Trigger Module

Your trigger defines what event starts the sync.

  1. Select HubSpot from the module list and choose Watch Contacts (or "Watch CRM Objects" in newer HubSpot module versions).
  2. Connect your HubSpot account via OAuth. Make stores the token for you.
  3. Set the trigger to fire on "New and Updated Contacts". If you only want new contacts, choose that option instead.
  4. Set Limit to 10 initially. This controls how many records Make processes per execution. You can raise it to 100 or 500 once you've tested.

Click OK and then run the module once to fetch a sample record. Make will show you all the field names from your actual HubSpot contacts, which you'll reference in later modules.


Step 3: Search for the Existing Record in CRM B

Before creating a contact in Pipedrive, you need to check if they're already there. Duplicate creation is one of the most common failure modes in CRM syncs.

  1. Click the "+" after your HubSpot trigger and add a Pipedrive module.
  2. Choose Search for a Person (Pipedrive calls contacts "Persons").
  3. In the search field, use the HubSpot contact's email address: map the email field from the HubSpot module output to the search query.

This module will return either a matching record or an empty result. Make handles both cases with a Router module.


Step 4: Add a Router and Set Up Conditional Paths

The Router module splits your scenario into two branches based on a condition.

  1. After the Pipedrive search, add a Router module.
  2. Create two routes:
    • Route 1: Contact found (update existing record)
    • Route 2: Contact not found (create new record)

For Route 1, add a filter by clicking the wrench icon on the route arrow:

  • Condition: Total number of results (from the Pipedrive search) Greater than 0

For Route 2, the filter is the opposite:

  • Condition: Total number of results Equal to 0

Each route then leads to the appropriate Pipedrive module: Update a Person for Route 1 and Create a Person for Route 2.


Step 5: Map Fields Between the Two CRMs

This is the step that requires the most attention. Field names rarely match across CRMs, and some fields simply don't exist on one side.

In the Create/Update a Person modules, map each Pipedrive field to the corresponding HubSpot value. Here's a realistic mapping table for common fields:

HubSpot FieldPipedrive FieldNotes
emailemailDirect match
firstname + lastnamenameConcatenate with a space
phonephoneDirect match
companyorg_namePipedrive links to org separately
jobtitlejob_titleMay need custom field
hs_lead_statusCustom fieldCreate in Pipedrive first

For the name concatenation, Make's text formulas handle this. In the name field in Pipedrive, type: {{1.firstname}} {{1.lastname}} (replacing 1 with the actual module number shown in your canvas).


Step 6: Add an Error Handler

Every CRM API throws errors sometimes. A rate limit hit, a malformed field, a timeout. Without an error handler, Make will stop the scenario and send you an email. With one, it can retry automatically or log the failure for later review.

  1. Right-click any module and choose Add error handler.
  2. Select Resume if you want Make to skip the failed record and continue with the next one.
  3. Alternatively, add a Rollback handler to undo any partial writes and log everything.

For a CRM sync, I prefer the Resume approach combined with a Google Sheets module that logs failed records. That way you have a manual review queue without losing the rest of the batch.


Step 7: Schedule the Scenario

Make scenarios can run on a schedule or in real-time (instant trigger).

  • Real-time: HubSpot and Pipedrive both support webhooks, which means Make can react within seconds of a change. This is the "instant trigger" option when setting up the module.
  • Scheduled: If webhook setup isn't available or you want to batch, set the scenario to run every 15 minutes, hourly, or daily.

For a two-CRM sync where both teams expect near-real-time accuracy, the instant trigger is worth the extra setup. For a nightly batch that syncs new contacts added during the day, a scheduled run at 2 AM is simpler and puts less load on both APIs.

To set the schedule, click the clock icon at the bottom of the scenario and choose your interval.


Testing Before You Go Live

Run the scenario manually a few times before activating it on your full contact list. Use Make's Run Once button, which processes one batch and then stops so you can inspect each module's input and output.

Check:

  • That the duplicate detection actually catches existing contacts
  • That the field mapping produces readable names, not "undefined undefined"
  • That the error handler fires correctly when you intentionally pass bad data

Once you're confident, click Schedule is OFF to toggle it on. Make will show the scenario as active on your dashboard.


A sync like this runs quietly in the background after the initial setup. The main maintenance work is handling schema changes when either CRM adds or renames a field, which happens occasionally after product updates. Make will highlight the broken mapping in orange the next time the scenario runs, making it easy to spot and fix without digging through logs.

Search