
Mailchimp CLI
FreeManage Mailchimp campaigns and audiences from your terminal.
Free · Opens the source repo
What Mailchimp CLI does
The Mailchimp CLI is a command-line interface specifically designed for interacting with the Mailchimp Marketing API v3.0. It provides a comprehensive set of commands that allow developers and marketers to manage various aspects of their Mailchimp accounts directly from the terminal. With 303 commands spanning 30 resource groups, users can efficiently handle tasks related to audiences, campaigns, reports, automations, e-commerce, and more.
This CLI tool enables users to create, update, and delete audiences, manage campaign workflows, and retrieve detailed reports on campaign performance. Each command is structured to facilitate easy interaction with the API, supporting both JSON output for integration with other tools and an interactive REPL mode for quick command execution. This makes it suitable for both automated scripts and manual operations.
For developers and marketers who prefer working in a terminal environment, this CLI offers a powerful way to streamline Mailchimp operations. It is particularly beneficial for those who manage large email lists or run multiple campaigns, as it allows for batch operations and detailed reporting without the need for a graphical interface.
To use this CLI, you need to have Python 3.10 or higher installed, along with your Mailchimp API key configured as an environment variable. This setup ensures that you can quickly access all functionalities provided by the Mailchimp API, making it a valuable addition to any marketing toolkit.
When to use it
Use this tool when you need to automate Mailchimp tasks, manage large audiences, or run campaigns directly from your command line.
When not to use it
This CLI is not suitable for users who prefer a graphical interface or those who need to perform complex visual design tasks within Mailchimp.
What you can build with it
Automating Campaign Management
Use the Mailchimp CLI to schedule, send, and manage multiple email campaigns without manual intervention.
Managing Large Audiences
Quickly create, update, and manage large lists of subscribers using command-line commands for efficiency.
Generating Reports
Retrieve detailed reports on campaign performance and subscriber activity directly from your terminal.
How to install Mailchimp CLI
View source1. Install with the skills CLI
npx skills add hkuds/cli-anything/skills --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by hkudscli-anything-mailchimp
Identity
An agent-native CLI for the Mailchimp Marketing API v3.0, built on the CLI-Anything framework.
What This CLI Does
- Manage audiences (lists) — create, update, delete lists; add/update/archive members; manage merge fields, segments, tags, and webhooks.
- Run campaigns — create, schedule, send, pause, replicate, and analyse email campaigns.
- Read reports — open rates, click rates, bounce stats, unsubscribes, email activity, geographic data.
- Control automations — create and manage automated email workflows.
- Manage e-commerce — stores, orders, customers, products, carts, and promo codes.
- Use templates, file manager, landing pages, SMS campaigns, surveys, and all other Marketing API resources.
Prerequisites
- Python 3.10+
MAILCHIMP_API_KEYenvironment variable set to your API key (including datacenter suffix, e.g.abc123-us8)
Installation
# From the CLI-Anything repo (once merged):
pip install git+https://github.com/HKUDS/CLI-Anything.git#subdirectory=mailchimp/agent-harness
# During development:
cd mailchimp/agent-harness && pip install -e .
Command Reference
Root
| Command | Description |
|---|---|
cli-anything-mailchimp ping | Health check — confirms API connectivity |
cli-anything-mailchimp root list | Get account info |
cli-anything-mailchimp --json <cmd> | Output any command as JSON |
cli-anything-mailchimp | Launch interactive REPL |
Lists (Audiences)
| Command | Description |
|---|---|
lists list | List all audiences |
lists get <LIST_ID> | Get audience info |
lists create --data '<json>' | Create audience |
lists update <LIST_ID> --data '<json>' | Update audience |
lists delete <LIST_ID> | Delete audience |
lists list-lists-id-members <LIST_ID> | List members |
lists get-lists-id-members-id <LIST_ID> <SUBSCRIBER_HASH> | Get member by MD5 hash |
lists create-lists-id-members <LIST_ID> --data '<json>' | Add member |
lists list-lists-id-merge-fields <LIST_ID> | List merge fields |
lists create-lists-id-merge-fields <LIST_ID> --data '<json>' | Add merge field |
lists list-lists-id-segments <LIST_ID> | List segments |
lists list-list-member-tags <LIST_ID> <SUBSCRIBER_HASH> | List member tags |
lists create-list-member-tags <LIST_ID> <SUBSCRIBER_HASH> --data '<json>' | Add/remove member tags |
lists list-lists-id-webhooks <LIST_ID> | List webhooks |
lists create-lists-id-webhooks <LIST_ID> --data '<json>' | Add webhook |
Campaigns
| Command | Description |
|---|---|
campaigns list | List campaigns |
campaigns get <CAMPAIGN_ID> | Get campaign info |
campaigns create --data '<json>' | Create campaign |
campaigns update <CAMPAIGN_ID> --data '<json>' | Update campaign settings |
campaigns delete <CAMPAIGN_ID> | Delete campaign |
campaigns send <CAMPAIGN_ID> | Send campaign immediately |
campaigns schedule <CAMPAIGN_ID> --data '<json>' | Schedule campaign |
campaigns cancel-send <CAMPAIGN_ID> | Cancel scheduled send |
campaigns pause <CAMPAIGN_ID> | Pause RSS campaign |
campaigns resume <CAMPAIGN_ID> | Resume RSS campaign |
campaigns replicate <CAMPAIGN_ID> | Duplicate campaign |
campaigns list-content <CAMPAIGN_ID> | Get campaign content |
campaigns list-send-checklist <CAMPAIGN_ID> | Pre-send checklist |
Reports
| Command | Description |
|---|---|
reports list | List all campaign reports |
reports get <CAMPAIGN_ID> | Get campaign summary report |
reports list-email-activity <CAMPAIGN_ID> | Per-subscriber open/click activity |
reports list-click-details <CAMPAIGN_ID> | Link click breakdown |
reports list-open-details <CAMPAIGN_ID> | Per-subscriber opens |
reports list-unsubscribed <CAMPAIGN_ID> | Unsubscribers |
reports list-locations <CAMPAIGN_ID> | Geographic breakdown |
reports list-domain-performance <CAMPAIGN_ID> | Per-domain stats |
Automations
| Command | Description |
|---|---|
automations list | List automations |
automations get <WORKFLOW_ID> | Get automation info |
automations create --data '<json>' | Create automation |
automations pause <WORKFLOW_ID> | Pause automation |
automations start <WORKFLOW_ID> | Start automation |
automations archive <WORKFLOW_ID> | Archive automation |
automations list-emails <WORKFLOW_ID> | List automation emails |
E-commerce
| Command | Description |
|---|---|
ecommerce list-ecommerce-stores | List stores |
ecommerce get <STORE_ID> | Get store info |
ecommerce create --data '<json>' | Add store |
ecommerce list-ecommerce-stores-id-orders <STORE_ID> | List orders |
ecommerce list-ecommerce-stores-id-products <STORE_ID> | List products |
ecommerce list-ecommerce-stores-id-customers <STORE_ID> | List customers |
ecommerce list-ecommerce-stores-id-carts <STORE_ID> | List carts |
ecommerce list-ecommerce-stores-id-promocodes <PROMO_RULE_ID> <STORE_ID> | List promo codes |
Other Resources
| Group | Description |
|---|---|
templates | Email templates (list, get, create, update, delete) |
template-folders | Template folders |
campaign-folders | Campaign folders |
file-manager | Files and folders in the file manager |
landing-pages | Landing pages (list, create, publish, unpublish) |
sms-campaigns | SMS campaigns (10 operations) |
surveys | Surveys (list, get, publish) |
reporting | Facebook ad and landing page reporting |
search-campaigns | Search campaigns by query |
search-members | Search members across all audiences |
batches | Batch API operations |
batch-webhooks | Batch operation webhooks |
verified-domains | Email domain verification |
authorized-apps | OAuth connected apps |
connected-sites | Connected site integrations |
conversations | Inbox conversations |
activity-feed | Account activity feed |
account-exports | Account data exports |
JSON Output
All commands support --json at the root level:
# List all audiences as JSON
cli-anything-mailchimp --json lists list
# Get a campaign report as JSON
cli-anything-mailchimp --json reports get abc123def
# Pipe to jq — use the native Mailchimp field name for the resource
cli-anything-mailchimp --json lists list | jq '.lists[].name'
cli-anything-mailchimp --json campaigns list | jq '.campaigns[].id'
Envelope shapes (native Mailchimp API response — use the resource-specific key):
// List endpoints — key matches the resource name (lists, campaigns, members, etc.)
{"lists": [...], "total_items": 42, "_links": [...]}
{"campaigns": [...], "total_items": 10, "_links": [...]}
// Single resource GET / POST / PATCH
{"id": "abc123", "name": "My List", ...}
// DELETE
{"ok": true, "message": "Deleted."}
// Error
{"ok": false, "message": "Resource Not Found: ...", "data": {...}}
Common Agent Patterns
# Get account health
cli-anything-mailchimp --json ping | jq '.health_status'
# List all audience IDs and names
cli-anything-mailchimp --json lists list | jq '.lists[] | {id, name}'
# Find all subscribed members in an audience
cli-anything-mailchimp --json lists list-lists-id-members <list_id> --status subscribed | jq '.members[].email_address'
# Create a campaign and get its send checklist
cli-anything-mailchimp --json campaigns create --data '{"type":"regular","settings":{"subject_line":"Hello","from_name":"Me","reply_to":"me@example.com"}}' | jq '.id'
cli-anything-mailchimp --json campaigns list-send-checklist <campaign_id> | jq '.items[] | select(.result == false)'
# Get unsubscribes for a sent campaign
cli-anything-mailchimp --json reports list-unsubscribed <campaign_id> | jq '.unsubscribes[].email_address'
# Add a member to an audience (subscriber hash = MD5 of lowercased email)
cli-anything-mailchimp --json lists create-members <list_id> --data '{"email_address":"user@example.com","status":"subscribed"}'
# Search for a member across all audiences
cli-anything-mailchimp --json search-members list --query "user@example.com" | jq '.exact_matches.members[]'
Interactive REPL
Run cli-anything-mailchimp with no arguments to enter the REPL:
◆ cli-anything · Mailchimp
v0.1.0
Type help for commands, quit to exit
◆ mailchimp ❯ ping
✓ {"health_status": "Everything's Chimpy!"}
◆ mailchimp ❯ --json lists list
{"lists": [...], "total_items": 3, "_links": [...]}
◆ mailchimp ❯ quit
Notes
- Subscriber hash: Mailchimp identifies members by the MD5 hash of their lowercased email. Compute with
python -c "import hashlib; email='email@example.com'; print(hashlib.md5(email.strip().lower().encode()).hexdigest())". - Body payloads: All POST/PATCH/PUT commands accept
--data '<json>'. See Mailchimp API docs for the schema of each endpoint. - Datacenter: Your API key ends in
-us8,-eu2, etc. The CLI extracts this automatically — include it inMAILCHIMP_API_KEY. - Rate limits: The Marketing API rate-limits at 10 concurrent connections and a rolling per-account limit. For bulk operations, use the
batchesgroup.
Frequently asked questions about Mailchimp CLI
Similar skills
Agent-Browser Core
Efficient browser automation for AI agents.
Setup My IQ
Effortlessly create and update your personal context portfolio.
CRM Maintenance
Automate HubSpot updates from your calendar and emails.
Zoom MCP
Streamline access to Zoom meeting assets and recordings.
Slack Automation
Automate tasks and extract data from Slack easily.
SMB Onboard
Guides small business owners through initial tool setup.
