1. Opening Problem Statement
Meet Sarah, a marketing manager at a growing startup. Every morning, she spends over an hour manually exporting new contacts added the previous day in HubSpot and importing them into Mailchimp to keep email campaigns up-to-date. Missing contacts or duplicate entries have caused campaign delays and lost revenue opportunities. This tedious, error-prone task eats into her time more than it should.
Sarah needs an automated solution to seamlessly transfer daily HubSpot contacts into Mailchimp, ensuring her email list is fresh and complete without lifting a finger.
2. What This Automation Does
This n8n workflow automates the daily synchronization of new contacts from HubSpot to Mailchimp with these clear outcomes:
- Every day at 7:00 AM, the workflow triggers to start the sync process.
- Retrieves all contacts created in HubSpot in the previous day using precise date filters.
- Adds each new contact to a specified Mailchimp list with subscriber status set to “subscribed”.
- Maps important contact fields like first name and last name accurately to Mailchimp merge fields.
- Eliminates manual exporting/importing, saving at least 1 hour daily.
- Reduces the risk of missing or duplicating contacts, ensuring email campaigns reach everyone intended.
3. Prerequisites ⚙️
- n8n account with workflow creation access.
- HubSpot account with OAuth2 credentials configured in n8n.
- Mailchimp account with OAuth2 credentials configured in n8n.
- Basic knowledge of n8n workflow setup and API credential authorization.
4. Step-by-Step Guide
Step 1: Set up the Cron Trigger – Schedule the automation
Navigate to n8n Editor → Click + Add Node → Search for Cron and select it.
Set the triggerTimes to run daily at 7:00 AM by setting the hour to 7.
You should see the cron node trigger once every day at this time.
This node starts the entire workflow automatically every morning.
Common mistake: Forgetting to set the time zone if your server isn’t in your local time zone. Double-check time settings in n8n configuration.
Step 2: Configure HubSpot Node – Retrieve new contacts
Add a HubSpot node by clicking + Add Node → search and select HubSpot.
Set resource to contact and operation to search.
In the filterGroupsUi, add two filters:
- Property: createdate
- Operator: GTE (greater than or equal to)
- Value:
{{$today.minus({day:1}).toMillis()}}— to get contacts created since yesterday 00:00
- Another filter with createdate LT
{{$today.toMillis()}}— to get contacts created before today 00:00
Confirm OAuth2 credentials for HubSpot are selected.
Execute test to ensure it pulls yesterday’s new contacts.
You should see an array of contact objects with properties like email, firstname, and lastname.
Common mistake: Not using the proper date filters or syntax causing no contacts to be found.
Step 3: Configure Mailchimp Node – Add contacts to mailing list
Add the Mailchimp node and connect it to the HubSpot node’s output.
Set operation to create member, and specify the target list ID.
For the email field, use expression referencing HubSpot contact email: {{$json["properties"].email}}
Set status to subscribed.
Map merge fields for first name and last name:
– FNAME: {{$json["properties"].firstname}}
– LNAME: {{$json["properties"].lastname}}
Attach OAuth2 credentials for Mailchimp.
Run test to ensure contacts are added to Mailchimp list successfully.
Common mistake: Missing or incorrect list ID will result in contacts not being added.
5. Customizations ✏️
- Change trigger time: In the Cron node, update hour to any desired value to sync contacts at a different time daily.
- Filter contacts by other properties: In the HubSpot node, add additional filters like lifecycle stage or tags to only sync qualified leads.
- Update subscriber status: In Mailchimp node, change status to pending if you want double opt-in instead of immediate subscription.
- Add custom merge fields: Expand the Mailchimp merge fields to include phone number or company name by referencing other HubSpot properties.
6. Troubleshooting 🔧
Problem: “No contacts retrieved from HubSpot node”
Cause: Date filter syntax or timezone mismatch.
Solution: Confirm date expressions use the correct format and adjust for timezone differences in n8n settings.
Problem: “Mailchimp list ID invalid or access denied”
Cause: Wrong list ID or bad OAuth credentials.
Solution: Verify list ID from Mailchimp dashboard, and reauthenticate Mailchimp node credentials.
7. Pre-Production Checklist ✅
- Confirm HubSpot OAuth2 credentials have proper scopes for contact read.
- Test HubSpot node retrieves contacts for the previous day correctly.
- Verify Mailchimp list ID is correct and credentials authorized for member create.
- Run entire workflow manually to verify end-to-end data flow.
- Backup your workflow export before activation.
8. Deployment Guide
Once tested successfully, activate the workflow in n8n by toggling Active at the top right corner.
Monitor the workflow execution logs daily during initial days to catch unexpected errors.
Consider setting up notifications in n8n for failed runs if your plan supports it.
This workflow runs fully automated every day, ensuring your Mailchimp list is always up to date without manual intervention.
9. FAQs
Q: Can I use a different CRM instead of HubSpot?
A: Yes, you can replace the HubSpot node with another CRM that supports API and has n8n integration, but you will need to adjust filters and data mapping accordingly.
Q: Will this workflow use Mailchimp API call limits?
A: Yes, each contact addition counts as an API call, so ensure your Mailchimp plan supports the expected volume.
Q: Is my data secure in this workflow?
A: Yes, OAuth2 credentials are securely managed by n8n, and no data is stored outside your control unless you export it.
10. Conclusion
By following this guide, you automated the daily synchronization of new contacts from HubSpot to Mailchimp, eliminating one hour of repetitive manual work every day. This automation not only saves time but also reduces errors and ensures your marketing campaigns reach the right audience on time. Next, consider extending this automation to include updating contact details or segmenting contacts based on behavior automatically.
Feel confident that your contact list is always fresh and ready for your next big campaign with this reliable n8n workflow!