Opening Problem Statement
Meet Sarah, a busy sales operations manager at a fast-growing startup. She uses both Pipedrive and HubSpot for managing sales leads and customer data. However, keeping contacts synchronized between these two platforms is a nightmare. Every day, Sarah spends hours manually updating contact details to ensure both CRMs reflect the latest information. Mistakes creep in, duplicates appear, and valuable sales time is lost chasing outdated data.
Inaccurate contact records lead to missed opportunities, duplicated outreach, and frustrated sales reps. Sarah’s challenge is common where businesses use multiple CRMs without effective integration — wasting precious time and risking revenue.
What This Automation Does
This n8n workflow automates the synchronization of contact data between Pipedrive and HubSpot, solving Sarah’s problem with minimal manual effort. When triggered on a schedule by the Cron node, it fetches all contacts from both systems, compares the data, and updates each platform with the latest contact information from the other. Specifically, it does the following:
- Retrieves all contacts from Pipedrive using the Pipedrive node.
- Retrieves all contacts from HubSpot using the HubSpot node.
- Compares email addresses between contacts to identify mismatches or outdated profiles using two Merge nodes in removeKeyMatches mode.
- Updates contacts in Pipedrive with the latest name and email from HubSpot when discrepancies are found.
- Updates contacts in HubSpot with the latest name and email from Pipedrive when discrepancies are found.
- Runs automatically on a schedule configured via the Cron node, saving hours of manual data entry each week.
By automating this data syncing, your sales teams’ CRMs stay accurate and aligned, improving outreach and closing rates. Estimated manual hours saved? Easily 3-5 hours per week for a medium-sized sales team.
Prerequisites ⚙️
- n8n account with workflow automation privileges.
- Pipedrive account with API access and configured credentials in n8n (🔑 Pipedrive API).
- HubSpot account with API access and configured credentials in n8n (🔑 HubSpot API).
- Basic understanding of how to create workflows and set up nodes in n8n.
- Optional: Own hosting for n8n if you want to run the automation 24/7 without relying on n8n cloud (Hostinger setup tutorial).
Step-by-Step Guide
Step 1: Schedule the Workflow with the Cron Node
In n8n, click + New Workflow. Add the Cron node from the node menu (type: n8n-nodes-base.cron).
Set the Cron trigger to run at your desired interval (e.g., every hour or every day). This node starts the synchronization process automatically.
You should see a message confirming the cron schedule.
Common mistake: Forgetting to activate the workflow after setting the cron schedule.
Step 2: Add the Pipedrive Node to Fetch All Contacts
Add the Pipedrive node (type: n8n-nodes-base.pipedrive) connected to the Cron node.
Configure the node with the following parameters:
- Resource: Person
- Operation: Get All
- Return All: True
Select your stored Pipedrive API credentials.
This node retrieves all contacts from your Pipedrive system.
Common mistake: Not setting ‘Return All’ to true, which limits contacts retrieved.
Step 3: Add the HubSpot Node to Fetch All Contacts
Add the HubSpot node (type: n8n-nodes-base.hubspot) connected in parallel to the Cron node.
Configure the node with:
- Resource: Contact
- Operation: Get All
- Return All: True
Select your HubSpot API credentials.
This node pulls all contacts from HubSpot to compare against Pipedrive’s data.
Common mistake: Forgetting to set ‘Return All’ disables full contact retrieval.
Step 4: Use Merge Nodes to Compare Contact Emails
Add two Merge nodes (type: n8n-nodes-base.merge) to the workflow:
- Merge1: Set mode to removeKeyMatches, Property Name 1 as
identity-profiles[0].identities[0].value, Property Name 2 asemail[0].value. - Merge2: Same setup but switch the property names to compare the other way.
Connect Pipedrive and HubSpot nodes into these merge nodes to identify which contacts differ between the two systems by email.
Common mistake: Misconfiguring property names causes no contacts to be matched or updated.
Step 5: Update Pipedrive Contacts with HubSpot Data
Add an Update Pipedrive node (type: n8n-nodes-base.pipedrive) connected after Merge1.
Configure it with:
- Operation: Update Person
- Name field using expression:
{{$json["properties"]["firstname"]["value"]}} - Email field using expression:
{{$json["identity-profiles"][0]["identities"][0]["value"]}}
Select your Pipedrive credentials.
This node updates contacts in Pipedrive where emails differ, ensuring Pipedrive has the latest HubSpot info.
Common mistake: Not using correct JSON expressions causes update failures.
Step 6: Update HubSpot Contacts with Pipedrive Data
Add an Update HubSpot node (type: n8n-nodes-base.hubspot) connected after Merge2.
Configure with:
- Email:
{{$json["email"][0]["value"]}} - First Name:
{{$json["first_name"]}}
Select your HubSpot credentials.
This keeps HubSpot contacts updated with the latest Pipedrive data.
Common mistake: Mapping incorrect fields causes partial updates.
Customizations ✏️
- Change Sync Frequency: Adjust the schedule in the Cron node to run hourly, daily, or weekly depending on your syncing needs.
- Add Additional Fields: Extend Update Pipedrive and Update HubSpot nodes to sync phone numbers or company info by modifying fields in the additionalFields parameter.
- Filter Contacts: Add filter nodes before merges to sync only contacts from specific lists or segments.
Troubleshooting 🔧
Problem: “No contacts retrieved from Pipedrive”
Cause: API credentials expired or incorrect.
Solution: Go to Credentials in n8n, re-enter the Pipedrive API key and test the connection under the Pipedrive node settings.
Problem: “Merge nodes do not update any contacts”
Cause: Property names in Merge nodes are misconfigured or data structure changed.
Solution: Check the property paths exactly as per the JSON returned from Pipedrive and HubSpot nodes and update the merge node parameters accordingly.
Pre-Production Checklist ✅
- Verify Pipedrive and HubSpot API credentials in n8n are valid and have read/write permissions.
- Run the workflow manually in n8n to observe correct data retrieval and update steps.
- Confirm that email addresses are correctly compared and only distinct contacts are updated.
- Backup CRM data before running the automation in a production environment.
Deployment Guide
Activate the workflow by toggling the “Active” switch in n8n after completing the setup.
Run initial manual tests for a few cycles to monitor that updates happen as expected.
Use n8n’s execution logs to track synchronization history and catch errors.
If running on self-hosted n8n, ensure the environment has stable internet and uninterrupted access to Pipedrive and HubSpot APIs.
FAQs
Can I use a different CRM instead of HubSpot?
The workflow is specifically designed for HubSpot and Pipedrive integration. However, you can customize it for other CRMs that have API access and are supported by n8n nodes.
Does this workflow consume API credits?
Yes, it uses API requests to fetch and update contacts, so monitor your API usage limits on both Pipedrive and HubSpot to avoid hitting caps.
Is my contact data secure running this workflow?
n8n uses secure connections and API credentials are stored securely within n8n’s environment, but always follow best practices by limiting API key permissions and monitoring logs.
Conclusion
In this guide, you’ve built a powerful contact synchronization automation between Pipedrive and HubSpot using n8n. You’ve replaced hours of tedious manual updates with a reliable, automatic process that keeps your CRMs consistent and your sales efforts aligned.
Depending on your team size, you saved upwards of 3-5 hours weekly, reduced errors, and improved customer engagement through accurate data.
Next, consider adding optimizations like syncing additional contact fields, integrating notifications upon updates, or extending the workflow to handle deals and companies across both platforms.
Keep experimenting, and feel confident in automating your workflow with n8n!