HubSpot Forms → Mailchimp Integration Guide

I see this integration request about once a week, and it’s usually because someone’s trying to use HubSpot Forms as their landing page builder while keeping Mailchimp as their email marketing hub. The problem? HubSpot really wants you to use their marketing tools, so they make it just annoying enough to sync elsewhere that most people give up halfway through.

Here’s the thing — this integration is totally doable, but 60% of the setups I audit are missing leads because someone skipped the webhook verification step or mapped the wrong audience ID.

What You’ll Have Working By The End

Prerequisites

Step 1: Set Up The Native HubSpot → Mailchimp Integration

HubSpot has a built-in Mailchimp integration, but it’s buried in the App Marketplace and has some quirks you need to know about.

Go to Settings → Integrations → App Marketplace and search for “Mailchimp”. Click “Install app” and you’ll need to authenticate both sides.

Key configuration settings:

The native integration syncs all HubSpot contacts, not just form submissions. If you only want form leads in Mailchimp, you’ll need the Zapier approach instead.

Field mapping for the native integration:

HubSpot Property → Mailchimp Merge Field
Email → EMAIL (required)
First Name → FNAME
Last Name → LNAME
Company → COMPANY
Phone → PHONE

The integration runs every 15 minutes, so don’t expect instant syncing.

This is my preferred method because it gives you granular control over which forms sync and how contacts are tagged in Mailchimp.

Create the Zap:

  1. Trigger: “HubSpot” → “New Form Submission”
  2. Action: “Mailchimp” → “Add/Update Subscriber”

Trigger configuration:

Action configuration:

Advanced Zapier settings:

The Zapier method processes leads in 1-2 minutes instead of 15, which is crucial for follow-up timing.

Step 3: Configure Webhook + API Integration (For Advanced Users)

If you need real-time syncing or have complex field mapping requirements, webhooks give you the most control. This requires some technical setup but handles 1,000+ submissions per day better than Zapier.

Set up the HubSpot webhook:

// In HubSpot Forms settings, add this to "What should happen after someone submits this form?"
// Set to redirect to a thank you page with tracking code

// Or use the global form listener for embedded forms:
window.addEventListener('message', function(event) {
    if (event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormSubmitted') {
        var formData = {
            email: event.data.submissionValues.email,
            firstname: event.data.submissionValues.firstname,
            lastname: event.data.submissionValues.lastname,
            company: event.data.submissionValues.company,
            form_id: event.data.id
        };
        
        // Send to your webhook endpoint
        fetch('https://your-webhook-endpoint.com/hubspot-to-mailchimp', {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify(formData)
        });
    }
});

Webhook endpoint (Node.js example):

app.post('/hubspot-to-mailchimp', async (req, res) => {
    const { email, firstname, lastname, company, form_id } = req.body;
    
    try {
        const mailchimpData = {
            email_address: email,
            status: 'subscribed',
            merge_fields: {
                FNAME: firstname || '',
                LNAME: lastname || '',
                COMPANY: company || ''
            },
            tags: [`Form-${form_id}`]
        };
        
        const response = await mailchimp.lists.addListMember(AUDIENCE_ID, mailchimpData);
        res.status(200).json({ success: true });
    } catch (error) {
        console.error('Mailchimp sync failed:', error);
        res.status(500).json({ error: error.message });
    }
});

This approach syncs leads in under 5 seconds and gives you complete control over error handling.

Step 4: Configure Field Mapping and Tags

Regardless of which method you choose, proper field mapping prevents data loss and keeps your Mailchimp lists organized.

Standard field mappings:

Custom field handling: If you collect custom data in HubSpot Forms, create corresponding merge fields in Mailchimp first. Go to Audience → Settings → Audience fields and |MERGE| tags.

Tagging strategy:

Tags help segment your email campaigns later. I recommend using consistent naming conventions across all your forms.

Testing & Verification

Test the integration end-to-end:

  1. Submit a test form with your email address
  2. Check Mailchimp audience for the new contact (refresh may take 1-15 minutes depending on method)
  3. Verify all mapped fields populated correctly
  4. Confirm tags were applied as expected

Check the numbers:

Red flags that indicate problems:

Debug checklist:

✓ Form submissions show in HubSpot contact activity
✓ Integration credentials are still valid
✓ Mailchimp audience ID is correct
✓ Required fields are mapped properly
✓ No integration error notifications

Troubleshooting

Problem: Contacts sync to Mailchimp but custom fields are empty Solution: Check that custom merge fields exist in Mailchimp and match the field names exactly (case-sensitive). The integration won’t create new fields automatically.

Problem: Duplicate contacts created for the same email Solution: Enable Mailchimp’s “Update existing contacts” option. In Zapier, use “Add/Update Subscriber” instead of “Add Subscriber”. For webhooks, use PUT instead of POST to the Mailchimp API.

Problem: Integration worked initially but stopped syncing Solution: Check API credentials haven’t expired. HubSpot tokens need refresh every 6 hours, Mailchimp keys expire if account becomes inactive. Re-authenticate the connection.

Problem: Some form submissions sync, others don’t Solution: Usually a field validation issue. Check that required fields in Mailchimp (like email format validation) match what HubSpot is sending. Empty required fields will cause the sync to fail silently.

Problem: Webhook returns “Audience not found” error Solution: Double-check your Mailchimp audience ID. It’s the alphanumeric string in your audience URL, not the audience name. IDs look like “a1b2c3d4e5” and are case-sensitive.

Problem: Zapier zap turns off automatically Solution: This happens when error rate exceeds 50% over 24 hours. Check your field mappings and re-enable after fixing the underlying issue. Enable error notifications so you catch this early.

What To Do Next

Once your HubSpot Forms → Mailchimp integration is running smoothly, you might want to:

This guide is part of the Mailchimp Integrations Hub — connecting Mailchimp with your lead sources, forms, and tracking tools.