Integration Guide

How to Connect InstantDM with Mailchimp (Step-by-Step Guide)

Learn how to connect InstantDM with Mailchimp to automatically add Instagram DM leads to your email audience. Step-by-step guide for syncing Instagram leads to Mailchimp lists, tags, and automations.

Meta Business Partner
30,000+ creators
$9.99/mo flat

Mailchimp is one of the most widely used email marketing platforms. Connecting InstantDM to Mailchimp automatically adds Instagram DM leads to your audience - when someone shares their email through a DM flow, they're added to your Mailchimp list with tags, merge fields, and automation triggers intact.


Why Connect InstantDM to Mailchimp?

  • Auto-add to audience - Instagram leads join your Mailchimp list instantly
  • Tag contacts - segment by Instagram campaign, flow, or interest
  • Trigger automations - start welcome series or drip campaigns automatically
  • Merge fields - store name, phone, Instagram handle alongside the email
  • Massive ecosystem - Mailchimp integrates with everything else in your stack

Common Use Cases

  • Add someone to your Mailchimp audience when they share their email via DM
  • Tag contacts based on which Instagram post or flow they came from
  • Start a welcome automation when a new Instagram lead is added
  • Segment your audience by Instagram campaign for targeted emails
  • Sync phone numbers and Instagram handles as merge fields

What You'll Need

Requirement Details
InstantDM account Trendsetter, Trendsetter Pro, or any Multi plan
Mailchimp account Free or paid plan
InstantDM API key Found at Settings → API in your InstantDM dashboard
Mailchimp API key Found at Account → Extras → API keys
Automation platform (optional) Make.com or Zapier for no-code setup

Method 1: Via Make.com (Recommended)

Step 1: Set Up the Webhook

Follow Steps 1-4 in the Make.com integration guide to create a webhook scenario.

Step 2: Add a Mailchimp Module

  1. After the webhook trigger, add a Filter: event equals flow_completed.
  2. Click "+" and search for Mailchimp.
  3. Select Add/Update a Subscriber.
  4. Connect your Mailchimp account.
  5. Select your Audience (list).

Step 3: Map Fields

Mailchimp Field Make.com Mapping
Email Address {{data.response_variables.email}}
Status subscribed (or pending for double opt-in)
FNAME (merge field) {{data.response_variables.full_name}}
PHONE (merge field) {{data.response_variables.phone}}
Tags instagram-lead, {{data.flow_name}}

Note: Use subscribed for immediate subscription or pending to trigger Mailchimp's double opt-in confirmation email.

Step 4: Test and Activate

  1. Run once in Make.com.
  2. Trigger a test event from InstantDM.
  3. Check Mailchimp - the contact should appear in your audience with tags.
  4. Activate the scenario.

Method 2: Via Zapier

Step 1: Create the Zap

Follow the Zapier integration guide to set up a webhook trigger.

Step 2: Add Mailchimp Action

  1. Add a Filter: event exactly matches flow_completed.
  2. Add Mailchimp → Add/Update Subscriber.
  3. Connect your Mailchimp account.
  4. Select your audience.
  5. Map email, name, and other fields.
  6. Add tags in the Tags field.

Step 3: Test and Activate

  1. Test with sample data.
  2. Verify in Mailchimp.
  3. Turn the Zap on.

Method 3: Direct API Integration

Step 1: Get Your Mailchimp API Key and Server

  1. In Mailchimp, go to Account → Extras → API keys.
  2. Create a new API key and copy it.
  3. Note your server prefix - it's the usX part of your Mailchimp URL (e.g., us21).
  4. Get your Audience ID: go to Audience → Settings → Audience name and defaults and find the Audience ID.

Step 2: Build a Webhook Receiver

const express = require('express');
const crypto = require('crypto');
const app = express();
app.use(express.json());

const MC_API_KEY = process.env.MAILCHIMP_API_KEY;
const MC_SERVER = 'us21'; // Your server prefix
const AUDIENCE_ID = 'abc123def4';

app.post('/instantdm-webhook', async (req, res) => {
  const { event, data } = req.body;
  
  if (event !== 'flow_completed' || !data.response_variables?.email) {
    return res.status(200).json({ status: 'skipped' });
  }
  
  const email = data.response_variables.email.toLowerCase();
  const subscriberHash = crypto.createHash('md5').update(email).digest('hex');
  
  const subscriber = {
    email_address: email,
    status_if_new: 'subscribed',
    merge_fields: {
      FNAME: data.response_variables.full_name || '',
      PHONE: data.response_variables.phone || '',
    },
    tags: ['instagram-lead', data.flow_name || 'unknown-flow'],
  };
  
  try {
    const response = await fetch(
      `https://${MC_SERVER}.api.mailchimp.com/3.0/lists/${AUDIENCE_ID}/members/${subscriberHash}`,
      {
        method: 'PUT', // PUT creates or updates
        headers: {
          'Authorization': `apikey ${MC_API_KEY}`,
          'Content-Type': 'application/json',
        },
        body: JSON.stringify(subscriber),
      }
    );
    
    const result = await response.json();
    res.status(200).json({ status: result.status, id: result.id });
  } catch (error) {
    res.status(500).json({ status: 'error', message: error.message });
  }
});

app.listen(3000);

Why PUT instead of POST? The PUT method on the member endpoint creates the subscriber if they don't exist, or updates them if they do. This handles duplicates automatically.


Setting Up Merge Fields

Merge fields store additional data on each subscriber.

Creating Merge Fields in Mailchimp

  1. Go to Audience → Settings → Audience fields and |MERGE| tags.
  2. Add fields:
Field Label Merge Tag Type
First Name FNAME Text (usually exists by default)
Phone PHONE Phone
Instagram INSTA Text
Interest INTEREST Text
Flow Name FLOWNAME Text

Mapping Merge Fields

In the API:

{
  "merge_fields": {
    "FNAME": "John Doe",
    "PHONE": "+1234567890",
    "INSTA": "@johndoe",
    "INTEREST": "Premium Plan",
    "FLOWNAME": "Lead Capture Flow"
  }
}

Triggering Email Automations

Classic Automations

  1. Go to Automations → Classic Automations → Create.
  2. Select Tag-based trigger.
  3. Trigger when the tag instagram-lead is added.
  4. Build your email sequence.

Customer Journeys (Recommended)

  1. Go to Automations → Customer Journeys → Create.
  2. Set the starting point: Tag is addedinstagram-lead.
  3. Add journey steps:
    • Send email: Welcome message with promised content
    • Wait: 1 day
    • Send email: Follow-up with value
    • If/Else: Check if they opened the first email
    • Send email: Different content based on engagement

Segmentation for Targeted Campaigns

Create segments based on tags:

  • instagram-lead AND interest-pricing → Send pricing-focused emails
  • instagram-lead AND flow-name-freebie → Send nurture sequence
  • instagram-lead AND NOT opened-email → Send re-engagement

Troubleshooting

Issue Solution
Subscriber not appearing Check that the email is valid. Verify the Audience ID is correct. Check if double opt-in is enabled (subscriber may be in "pending" status).
Tags not applied Mailchimp's API applies tags separately from the member upsert in some cases. Use a second API call to add tags if they're not appearing.
"Member exists" error Use PUT instead of POST to upsert. Or use status_if_new instead of status to only set status for new subscribers.
Merge fields empty Ensure the merge tags match exactly (e.g., FNAME, not fname or First Name). Create the merge fields in Mailchimp first.
API returning 401 Verify your API key. The Authorization header format is apikey YOUR_KEY (not Bearer).
Automation not triggering Check that the automation is active and the trigger matches (tag added, form submitted, etc.).
Compliance warning Mailchimp enforces anti-spam compliance. Ensure you have consent to email the subscriber. Using pending status triggers double opt-in.

Frequently Asked Questions

Should I use "subscribed" or "pending" status?

Use subscribed if your DM flow already includes consent (e.g., "Would you like to receive emails from us?"). Use pending if you want Mailchimp to send a double opt-in confirmation email. For GDPR compliance, pending is safer.

Does Mailchimp handle duplicate emails?

Yes, when you use the PUT method on the member endpoint. It updates the existing subscriber with new tags and merge fields instead of creating a duplicate.

Can I add leads to multiple audiences?

Yes, but Mailchimp recommends using a single audience with tags and segments instead of multiple audiences. This avoids counting the same subscriber multiple times against your plan limit.

What's the difference between tags and groups?

Tags are applied by you (or your automation) and are invisible to subscribers. Groups are subscriber-facing categories they can choose. For InstantDM integration, use tags.

How many contacts can I have on the free plan?

Mailchimp's free plan allows up to 500 contacts and 1,000 email sends per month. For higher volume, upgrade to the Essentials plan.


What's Next

Ready to Automate Your Instagram DMs?

Join 30,000+ creators and brands using InstantDM today.

Start Your Free Trial

No credit card required. Setup in under 15 minutes.