Zoom + Mailchimp: clean webinar leads, no exports
Your webinar ends, and then the real work starts. CSV exports, messy columns, duplicate emails, and that one internal teammate who registered “just to test” but still ends up on your marketing list.
This Zoom Mailchimp leads automation hits marketing managers first, but agency owners and founders running webinars feel it too. You will keep your audience clean, push registrants into Mailchimp automatically, and stop redoing the same cleanup after every event.
Below, you’ll see exactly what the workflow does, what it saves you, and how to adapt it for recurring webinars and different filtering rules.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Zoom + Mailchimp: clean webinar leads, no exports
flowchart LR
subgraph sg0["When clicking ‘Execute workflow’ Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/mailchimp.dark.svg' width='40' height='40' /></div><br/>Update a member"]
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Webinar Attendees from Z.."]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Extract Registrant Emails"]
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Out Internal Emails", pos: "b", h: 48 }
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>MD5 Hash Email"]
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If ID doesn't exist", pos: "b", h: 48 }
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Mailchimp - Send Double Opt .."]
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Mailchimp - Add Leads Tag"]
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: "Type in IDs", pos: "b", h: 48 }
n9@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n8 --> n1
n4 --> n6
n0 --> n5
n5 --> n4
n2 --> n3
n3 --> n0
n1 --> n2
n6 --> n7
n9 --> n8
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n9 trigger
class n3,n5 decision
class n1,n6,n7 api
class n2,n4 code
classDef customIcon fill:none,stroke:none
class n0,n1,n2,n4,n6,n7 customIcon
The Problem: Webinar leads get messy fast
Webinars create great leads, but the handoff into your email platform is where things quietly fall apart. A simple export/import turns into a recurring mini-project: you download registrants, clean the file, remove coworkers, try to avoid duplicates, and then remember to tag or segment the new people so follow-ups actually make sense. Miss one small step and you’ll pay for it later with bounces, annoyed subscribers, or a list you can’t trust. Honestly, the worst part is that it repeats every single webinar.
It adds up fast. Here’s where it usually breaks down.
- Exporting registrants and formatting the CSV steals about 30 minutes per webinar, even when nothing “goes wrong.”
- Internal test emails slip into Mailchimp, which contaminates segmentation and makes reporting look better than it really is.
- Duplicates creep in because “import” and “update” are not the same thing, and Mailchimp is picky about identifiers.
- Double opt-in gets skipped when you’re rushing, which is a compliance headache you don’t need.
The Solution: Sync Zoom registrants into Mailchimp automatically
This workflow pulls registrants from a specific Zoom webinar occurrence, cleans the list, and then updates or creates each person in Mailchimp without you touching a CSV. It starts by asking for two inputs (your webinar ID and occurrence ID), then hits the Zoom API to retrieve registrant data. Next, it extracts attendee emails, filters out internal/company domains, and attempts to update each contact in Mailchimp first (so you don’t create duplicates by accident). If Mailchimp doesn’t return a member ID, the workflow treats the person as new, creates them with a pending status, sends the double opt-in email, and tags them as “Leads” for easy segmentation.
The workflow begins with a manual run (or a schedule, if you prefer). Zoom provides the registrants, n8n cleans and checks them, and Mailchimp receives only the right contacts, tagged and ready for follow-up.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you run one webinar each week and you typically get about 200 registrants. Manually, you export from Zoom, clean the sheet, remove internal emails, import into Mailchimp, dedupe, then tag, which is usually about 30 minutes (sometimes more when columns don’t match). With this workflow, you paste the webinar ID and occurrence ID, run it, and wait for the sync to finish. That’s closer to 5 minutes of your time, and you’re done for the week.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Zoom account for webinar registrant API access
- Mailchimp account to create/update audience members
- Zoom OAuth2 credentials (create in the Zoom App Marketplace)
- Mailchimp API key (get it from Mailchimp Account → Extras → API keys)
Skill level: Beginner. You’ll paste IDs, connect accounts, and edit one filter rule for your internal domain.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
You enter the webinar identifiers. The workflow starts with a manual trigger and a simple input step where you add the Zoom webinar_id and occurence_id for the session you want to sync.
Zoom registrants are retrieved and cleaned. n8n calls the Zoom API, then a code step extracts registrant emails and shapes the data so it’s usable downstream.
Internal emails are removed and Mailchimp is checked. A filter excludes your company domain (for example, anything containing @yourcompany.com). Then the workflow attempts to update a Mailchimp member by email, which is a simple way to avoid duplicates.
New contacts get double opt-in and tagging. If Mailchimp doesn’t return a member ID, the workflow generates the MD5 email hash Mailchimp expects, creates the member as “pending” (which triggers double opt-in), and applies a “Leads” tag for segmentation.
You can easily modify the internal-domain filter to handle multiple domains, or change the “Leads” tag to match your campaign naming. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual Trigger
Start the workflow manually so you can validate webinar IDs and registrant parsing before enabling it in production.
- Add and open Manual Start Trigger.
- Leave all parameters as default (no configuration required).
- Confirm the flow connects from Manual Start Trigger to Enter Webinar Identifiers.
Step 2: Connect Zoom and Define Webinar Identifiers
Provide webinar identifiers and pull Zoom registrants using the configured Zoom API request.
- Open Enter Webinar Identifiers and set webinar_id to
add ID of webinar seriesand occurence_id toadd Occurence ID. - Open Fetch Zoom Registrants and confirm the URL is set to
=https://api.zoom.us/v2/webinars/{{ $json.webinar_id }}/registrants?occurrence_id={{ $json.occurence_id }}&page_size=300. - Set Authentication to
predefinedCredentialTypeand Credential Type tozoomOAuth2Api. - Credential Required: Connect your
zoomOAuth2Apicredentials in Fetch Zoom Registrants.
⚠️ Common Pitfall: The Zoom API request will fail if occurence_id is missing or mismatched. Verify the occurrence ID in Zoom before testing.
Step 3: Parse and Filter Attendee Emails
Extract registrant emails and remove internal addresses before syncing to Mailchimp.
- Open Parse Attendee Emails and keep the JavaScript Code as provided to return one item per email.
- Open Exclude Internal Addresses and confirm the condition uses Left Value
={{ $json.email }}with OperationnotContainsand Right Value@yourcompanydomain.com. - Ensure Parse Attendee Emails connects to Exclude Internal Addresses as shown in the workflow.
Tip: Update the internal domain in Exclude Internal Addresses to match your organization before activating the workflow.
Step 4: Configure Mailchimp Update and Member Check
Update or create the Mailchimp contact, then check for a missing member ID before triggering double opt-in.
- Open Update Mailchimp Contact and set List to
LIST_ID_HERE. - Set Email to
={{ $json.email }}and Operation toupdate. - Set Authentication to
oAuth2. - Credential Required: Connect your Mailchimp OAuth2 credentials in Update Mailchimp Contact.
- Open Check Missing Member ID and confirm the condition uses Left Value
={{ $json.id }}with OperationnotExists.
⚠️ Common Pitfall: If the Mailchimp node has no credentials, Check Missing Member ID will never receive a valid response. Ensure Mailchimp authentication is connected first.
Step 5: Generate Hash, Send Opt-In, and Apply Tags
Generate the Mailchimp member hash, send a double opt-in request, and apply a “Leads” tag.
- Open Generate Email MD5 and keep Mode set to
runOnceForEachItemwith the provided MD5 hashing script. - Open Send Opt-In Request and confirm Method is
PUTand URL is=https://us4.api.mailchimp.com/3.0/lists/LIST_ID_HERE/members/{{$json.hash}}. - Set the JSON Body to
={ "email_address": "{{ $('Exclude Internal Addresses').item.json.email }}", "status_if_new": "pending", "status": "pending" }. - Credential Required: Connect your
httpBasicAuthcredentials in Send Opt-In Request. - Open Apply Leads Tag and confirm Method is
POSTwith URL=https://us4.api.mailchimp.com/3.0/lists/LIST_ID_HERE/members/{{ $('Generate Email MD5').item.json.hash }}/tags. - Set the JSON Body to
={ "tags": [ { "name": "Leads", "status": "active" } ] }. - Credential Required: Connect your
httpBasicAuthcredentials in Apply Leads Tag.
Tip: The hash in Apply Leads Tag is sourced from Generate Email MD5, so make sure the MD5 node runs after Check Missing Member ID in the sequence.
Step 6: Test and Activate Your Workflow
Run the workflow manually to verify registrant parsing and Mailchimp updates before activating it.
- Click Execute Workflow to trigger Manual Start Trigger and follow the execution path through Enter Webinar Identifiers → Fetch Zoom Registrants → Parse Attendee Emails → Exclude Internal Addresses.
- Verify that Update Mailchimp Contact returns data and Check Missing Member ID correctly routes items to Generate Email MD5.
- Confirm successful opt-in requests in Send Opt-In Request and tag application in Apply Leads Tag.
- When results are correct, toggle the workflow to Active for production use.
Common Gotchas
- Zoom credentials can expire or require the right scopes for webinar registrants. If things break, check the Zoom app permissions and token status first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Mailchimp list settings matter: double opt-in behavior depends on audience configuration and status fields. If “pending” contacts are not receiving emails, check your Mailchimp audience and confirmation email settings.
Frequently Asked Questions
About 30 minutes if you already have Zoom and Mailchimp access.
No. You’ll connect credentials, paste your webinar identifiers, and adjust a simple internal-domain filter.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Zoom and Mailchimp API access (usually included with paid plans).
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and it’s a common upgrade. Swap the manual trigger for a Schedule Trigger to run after each webinar, and update the “Enter Webinar Identifiers” step to pull the latest webinar/occurrence via a Zoom API call. Many teams also tweak “Exclude Internal Addresses” to block multiple domains (subsidiaries, agencies, test inboxes). You can also replace the “Leads” tag with tags per campaign, like “Webinar-Jan” or “Product-Demo.”
Usually it’s an expired OAuth token or missing webinar scopes in your Zoom app. Re-check the app permissions in Zoom, then reconnect the credential in n8n so it refreshes cleanly. If the webinar ID or occurrence ID is wrong, Zoom will also return an error that looks like an auth issue, so verify those inputs too.
For most small business webinars (hundreds or a few thousand registrants), it’s fine.
It depends on how strict you need the logic to be. n8n makes it easier to do “update first, then create if missing,” plus custom filtering and hashing, without paying extra for multi-step branching. It’s also easier to self-host if you run a lot of webinars and don’t want to think about task limits. Zapier or Make can be quicker for a simple “new registrant → add to audience” flow, but you’ll often bolt on extra steps to handle duplicates and internal emails. If you want a clean, compliance-friendly list without babysitting it, this workflow is a strong fit. Talk to an automation expert if you’re not sure which fits.
Your webinars already do the hard part by generating interest. Let this workflow handle the boring cleanup so your Mailchimp audience stays trustworthy week after week.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.