Draft/unsent campaigns lack meaningful report data
When using
fields
parameter on LIST_CAMPAIGNS, explicitly request
send_time
and
report_summary
subfields
Pagination defaults are low (10 records); iterate with
count
and
offset
until
total_items
is covered
send_time
is ISO 8601 with timezone; parse carefully
Common Patterns
ID Resolution
Always resolve names to IDs before operations:
Audience name -> list_id
:
MAILCHIMP_GET_LISTS_INFO
and match by name
Subscriber email -> subscriber_hash
Compute MD5 of lowercase email in code
Campaign name -> campaign_id
:
MAILCHIMP_SEARCH_CAMPAIGNS
with query
Segment name -> segment_id
:
MAILCHIMP_LIST_SEGMENTS
with list_id
Pagination
Mailchimp uses offset-based pagination:
Use
count
(page size, max 1000) and
offset
(skip N records)
Continue until collected records match
total_items
from the response
Default
count
is 10; always set explicitly for bulk operations
Search endpoints max at 10 pages (300 results for 30/page)
Subscriber Hash
Many endpoints require
subscriber_hash
(MD5 of lowercase email):
import hashlib
subscriber_hash = hashlib.md5(email.lower().encode()).hexdigest()
Known Pitfalls
ID Formats
list_id
(audience ID) is a short alphanumeric string (e.g., "abc123def4")
campaign_id
is an alphanumeric string
subscriber_hash
is an MD5 hex string (32 characters)
Segment IDs are integers
Rate Limits
Mailchimp enforces API rate limits; use batching for bulk subscriber operations
High-volume use of GET_MEMBER_INFO and ADD_OR_UPDATE_LIST_MEMBER can trigger throttling
Use
MAILCHIMP_BATCH_ADD_OR_REMOVE_MEMBERS
for bulk segment operations
Parameter Quirks
Nested parameters use double-underscore notation:
settings__subject__line
,
recipients__list__id
avg_open_rate
and
avg_click_rate
are 0-1 fractions, not percentages
status_if_new
only applies to new contacts in upsert operations
subscriber_hash
must be MD5 of lowercase email; wrong casing creates phantom records
Campaign
type
is required for creation; most common is "regular"
MAILCHIMP_SEND_CAMPAIGN
returns HTTP 204 on success (no body)
Content and Compliance
Campaign HTML must include unsubscribe link and physical address (merge tags)
Content must be set via
MAILCHIMP_SET_CAMPAIGN_CONTENT
before sending
Test emails require campaign to have content already set
Quick Reference
Task
Tool Slug
Key Params
List audiences
MAILCHIMP_GET_LISTS_INFO
count
,
offset
Get audience details
MAILCHIMP_GET_LIST_INFO
list_id
Create campaign
MAILCHIMP_ADD_CAMPAIGN
type
,
recipients__list__id
,
settings__subject__line
Set campaign content
MAILCHIMP_SET_CAMPAIGN_CONTENT
campaign_id
,
html
Send test email
MAILCHIMP_SEND_TEST_EMAIL
campaign_id
,
test_emails
Send campaign
MAILCHIMP_SEND_CAMPAIGN
campaign_id
Schedule campaign
MAILCHIMP_SCHEDULE_CAMPAIGN
campaign_id
,
schedule_time
Get campaign info
MAILCHIMP_GET_CAMPAIGN_INFO
campaign_id
Search campaigns
MAILCHIMP_SEARCH_CAMPAIGNS
query
List campaigns
MAILCHIMP_LIST_CAMPAIGNS
status
,
count
,
offset
Replicate campaign
MAILCHIMP_REPLICATE_CAMPAIGN
campaign_id
List subscribers
MAILCHIMP_LIST_MEMBERS_INFO
list_id
,
status
,
count
,
offset
Search members
MAILCHIMP_SEARCH_MEMBERS
query
,
list_id
Get member info
MAILCHIMP_GET_MEMBER_INFO
list_id
,
subscriber_hash
Add subscriber
MAILCHIMP_ADD_MEMBER_TO_LIST
list_id
,
email_address
,
status
Upsert subscriber
MAILCHIMP_ADD_OR_UPDATE_LIST_MEMBER
list_id
,
subscriber_hash
,
email_address
,
status_if_new
Batch members
MAILCHIMP_BATCH_ADD_OR_REMOVE_MEMBERS
list_id
,
segment_id
List segments
MAILCHIMP_LIST_SEGMENTS
list_id
Campaign report
MAILCHIMP_GET_CAMPAIGN_REPORT
campaign_id
All reports
MAILCHIMP_LIST_CAMPAIGN_REPORTS
count
,
offset
Link click details
MAILCHIMP_LIST_CAMPAIGN_DETAILS
campaign_id
,
count
Subscriber activity
MAILCHIMP_GET_SUBSCRIBER_EMAIL_ACTIVITY
campaign_id
,
subscriber_hash
Member recent activity
MAILCHIMP_VIEW_RECENT_ACTIVITY
list_id
,
subscriber_hash
Campaign content
MAILCHIMP_GET_CAMPAIGN_CONTENT
campaign_id
Powered by
Composio