Back to Templates

Sync CRM contacts with Mailchimp and Pipedrive

Created by

Created by: vinci-king-01 || vinci-king-01

vinci-king-01

Last update

Last update 4 hours ago

Categories

Share


CRM Contact Sync with Mailchimp and Pipedrive

This workflow keeps your contact records perfectly aligned between your CRM (e.g. HubSpot / Salesforce / Pipedrive) and Mailchimp. Whenever a contact is created or updated in one system, the automation propagates the change to the other platform, ensuring every email address, phone number and custom field stays in sync.

Pre-conditions/Requirements

Prerequisites

  • n8n instance (self-hosted or cloud)
  • Community nodes: Pipedrive, Mailchimp
  • A dedicated service account in each platform with permission to read & write contacts
  • Basic understanding of how webhooks work (for CRM → n8n triggers)

Required Credentials

  • Pipedrive API Token – Used for creating, updating and searching contacts in Pipedrive
  • Mailchimp API Key – Grants access to lists/audiences and contact operations
  • CRM Webhook Secret (optional) – If your CRM supports signing webhook payloads

Specific Setup Requirements

Environment Variable Description Example
PIPEDRIVE_API_KEY Stored in n8n credential manager 123abc456def
MAILCHIMP_API_KEY Stored in n8n credential manager us-1:abcd1234efgh5678
MAILCHIMP_DC Mailchimp Datacenter (sub-domain) us-1
CRM_WEBHOOK_URL Generated by the Webhook node https://n8n.myserver/webhook/...

How it works

This workflow keeps your contact records perfectly aligned between your CRM (e.g. HubSpot / Salesforce / Pipedrive) and Mailchimp. Whenever a contact is created or updated in one system, the automation propagates the change to the other platform, ensuring every email address, phone number and custom field stays in sync.

Key Steps:

  • Inbound Webhook: Receives contact-change events from the CRM.
  • Split in Batches: Processes contacts in chunks to stay within API rate limits.
  • Mailchimp Upsert: Adds or updates each contact in the specified Mailchimp audience.
  • Pipedrive Upsert: Mirrors the same change in Pipedrive (or vice-versa).
  • Merge & IF nodes: Decide whether to create or update a contact by checking existence.
  • Error Trigger: Captures any API failures and posts them to the configured alert channel.

Set up steps

Setup Time: 15-25 minutes

  1. Create credentials
    • In n8n, add new credentials for Pipedrive and Mailchimp using your API keys.
    • Name them clearly (e.g. “Pipedrive Main”, “Mailchimp Main”).

  2. Import the workflow
    • Download or paste the JSON template into n8n.
    • Save the workflow.

  3. Configure the Webhook node
    • Set HTTP Method to POST.
    • Copy the generated URL and register it as a webhook in your CRM’s contact-update events.

  4. Map CRM fields
    • Open the first Set node and match CRM field names (firstName, lastName, email, etc.) to the standard keys used later in the flow.

  5. Select Mailchimp Audience
    • In the Mailchimp node, choose the audience/list that should receive the contacts.

  6. Define Pipedrive Person Fields
    • If you have custom fields, add them in the Pipedrive node’s Additional Fields section.

  7. Enable the workflow
    • Turn the workflow from “Inactive” to “Active”.
    • Send a test update from the CRM to verify that contacts appear in both Mailchimp and Pipedrive.

Node Descriptions

Core Workflow Nodes:

  • Webhook – Accepts contact-change payloads from the CRM.
  • Set – Normalises field names to a common schema.
  • SplitInBatches – Loops through contacts in controllable group sizes.
  • HTTP Request – Generic calls (e.g. HubSpot/Salesforce look-ups when required).
  • Pipedrive – Searches for existing persons; creates or updates accordingly.
  • Mailchimp – Performs contact upsert into an audience.
  • If – Branches logic on “contact exists?”.
  • Merge – Re-assembles branch data back into a single execution line.
  • Code – Small JS snippets for complex field transformations.
  • Error Trigger – Listens for any node failure and routes it to alerts.
  • StickyNote – Documentation hints inside the workflow.

Data Flow:

  1. WebhookSet (Normalise)SplitInBatches
  2. SplitInBatchesMailchimp (Get)If (Exists?)Mailchimp (Upsert)
  3. SplitInBatchesPipedrive (Search)If (Exists?)Pipedrive (Upsert)
  4. MergeEnd / Success

Customization Examples

Add a Tag to Mailchimp contacts

// Place inside a Code node before the Mailchimp Upsert
item.tags = ['Synced from CRM', 'High-Value'];
return item;

Apply a Deal Stage in Pipedrive

// Pipedrive node → Additional Fields
"deal": {
  "title": "New Lead from Mailchimp",
  "stage_id": 2
}

Data Output Format

The workflow outputs structured JSON data:

{
  "id": 1472,
  "status": "updated",
  "email": "[email protected]",
  "source": "CRM",
  "synced": {
    "pipedrive": "success",
    "mailchimp": "success"
  },
  "timestamp": "2024-04-27T10:15:00Z"
}

Troubleshooting

Common Issues

  1. HTTP 401 Unauthorized – Verify that the API keys are still valid and have not been revoked.
  2. Webhook receives no data – Double-check that the CRM webhook URL matches exactly and that the event is enabled.

Performance Tips

  • Batch contacts in groups of 50-100 to respect Mailchimp & Pipedrive rate limits.
  • Use Continue On Fail in non-critical nodes to prevent the entire run from stopping.

Pro Tips:

  • Map your CRM’s custom fields once in the Set node to avoid touching each downstream node.
  • Use Merge+If pattern to keep “create vs update” logic tidy.
  • Enable workflow execution logs only in development to reduce storage usage.

Community Template Disclaimer:
This workflow is provided by the n8n community “as is”. n8n GmbH makes no warranties regarding its performance, security or compliance. Always review and test in a development environment before using it in production.