How to import Mailchimp data into HubSpot
Export your Mailchimp audience and bring those subscribers into HubSpot. This template maps email, name, phone, and the full address to HubSpot contact properties. The MEMBER_RATING and OPTIN_TIME values are combined into the Notes field as 'Mailchimp rating: <1-5> | Opted in: <date>' so reps see engagement context anchored to its label. Mailchimp exports also include TAGS and NOTES columns that don't have a default HubSpot home. The section below explains what to do with each one if you need it.
Field-by-field mapping
This is the complete column mapping from Mailchimp to HubSpot. The left column is the header in your CSV export. The right column is the HubSpot field it should map to.
| Email Address | Emailemail TransformLowercased and trimmed | |
| First Name | First Namefirstname | |
| Last Name | Last Namelastname | |
| Phone Number | Phone Numberphone TransformStandardized to international format (+1, +44, etc.) | |
| Address | Street Addressaddress | |
| City | Citycity | |
| State | State/Regionstate | |
| Zip | Postal Codezip | |
| Country | Country/Regioncountry | |
| MEMBER_RATING, OPTIN_TIME | Notesnotes Each value is prefixed with its label ('Mailchimp rating: <1-5>', 'Opted in: <date>') and joined with ' | ', so reps see the source context in the Notes field. TransformCombined with ' | ' separator and label prefixes |
Columns we don't use
Your Mailchimp export includes 2 columns this template doesn't map. Each one below explains why, plus the workaround if you want the data in HubSpot.
- TAGS
Mailchimp tags export as a comma-separated string in the TAGS column. HubSpot uses static lists rather than free-form tags.
If you need it. After import, create HubSpot static lists matching your Mailchimp tags and add contacts in bulk using a saved view.
- NOTES
Mailchimp's NOTES column holds free-text annotations you've added to each subscriber. A push attaches this as a note on each contact it creates, which is a better home for this kind of context than a field. A contact already in your CRM keeps the notes it has.
If you need it. None needed if you push: the column is kept in your file and the push screen offers to attach it as a note on each contact the push creates. A contact already in your CRM keeps the notes it has, so pushing the same file twice does not add a second copy. If you are importing the CSV by hand instead, create a custom multi-line text property in HubSpot and map this column to it.
Formatting and cleanup
Mailchimp exports rarely match the format HubSpot expects. Fix these first.
- 1.Lowercases and trims email addresses
- 2.Standardizes phone numbers to international format (+1, +44, etc.)
- 3.Combines MEMBER_RATING and OPTIN_TIME into the Notes field as 'Mailchimp rating: <1-5> | Opted in: <date>'
- 4.Maps Mailchimp's single Address column to HubSpot's address property
Or skip the manual work
Operelio runs this cleanup and mapping for you. Upload your Mailchimp export and download a clean file for HubSpot, or connect HubSpot and push the records straight in. You see what will be created and updated before anything is written.
Mailchimp to HubSpot FAQ
How do I export my audience from Mailchimp?
In your Mailchimp audience, go to All Contacts > Export Audience and download the CSV file. The export includes all subscriber fields and metadata.
What happens to unsubscribed contacts?
Mailchimp includes unsubscribed contacts in the export with a status column. This template maps the contact fields but does not set email opt-out status in HubSpot. Check the subscription status column and update HubSpot opt-in settings separately.
Does the Mailchimp star rating (MEMBER_RATING) transfer?
Yes. The MEMBER_RATING value (1 to 5 stars) lands in the Notes field as 'Mailchimp rating: <score>', combined with the opt-in date using a ' | ' separator. If you want it as a numeric property for segmentation, create a custom HubSpot property called Member Rating and re-run this template.
What happens to Mailchimp tags and segments?
The TAGS column doesn't map to a default HubSpot property. See 'Columns we don't use' below for how to recreate them as HubSpot static lists.
Will this create duplicates if contacts already exist in HubSpot?
Operelio decides this, not the importer. A push matches on email, including the additional addresses a merge left behind on a contact, so a row lands on the existing contact rather than beside it. Updates fill blank fields only unless you choose otherwise, and the report shows the split before anything is written. Importing the file by hand follows HubSpot's own rule instead. HubSpot uses email as the unique identifier. Contacts with matching emails update the existing record. New emails create new contacts.