I haven’t written about email marketing in a while. I used to do this a lot more. But what I’ve learned is too good not to share.

I started using Mailchimp nine years ago and ran four different newsletters (I currently run one on creativity).

I’m not super happy with the recent change in the way audiences work. The difference between a contact and a subscriber has existed on the platform for a while, but it is now extremely hard to delete an unsubscribed contact.

Actually, extremely hard is an understatement since there is nothing in the user interface that allows you to delete contacts forever.

Why is this a problem?

Because MailChimp charges based on contacts and it doesn’t matter if those contacts are subscribed or not. If your audience is larger than 2,000 contacts (the limit for a free account), you pay for people you never email.

I understand MailChimp’s logic: if your contacts were to subscribe again, you would retain their history. But in my case, that’s not very important. If you’re in the same boat, I’ve got something for you.

Illustration of a person running a script to delete their MalChimp contacts!

Drop the unsubscribed contacts

There is a way to remove an unsubscribed contact: through the MailChimp API.

Thankfully, for people like me, there are a lot of API wrappers available on GitHub. I’ve been using this one successfully, and I would like to share a Python script with you so you can also remove unsubscribed contacts from your audiences.

To run this script, you’ll need access to a terminal on your machine, and be comfortable typing commands. If that’s not you, skip this section—I have another solution for you!

This solution assumes that you have Python 3+ installed on your machine (see Downloads if you don’t).

First, you will need to obtain the following items from MailChimp:

  • your Audience ID (a unique code for your email list)
  • your API key
  • your username (it should be listed under on your profile page)

When you have this info available, open your terminal:

  1. clone my repo: git clone https://github.com/tdnvl/delete-mailchimp-contact.git
  2. cd into the cloned repo directory
  3. python -m venv venv to make the virtual environment
  4. python venv/bin/activate to activate the virtual environment
  5. pip install mailchimp3 to install Python MailChimp the required package
  6. edit the script: nano delete.py (or Vim if that’s your thing) and replace the placeholders with your own values: Audience ID, API key, and username.
  7. save your changes and run the script: python delete.py

You’ll be asked for the email address of the contact you’d like to delete. Enter it, hit enter, and voilà!

This script will delete one contact at a time, but you could delete contacts recursively by adding them to a segment and looping through the segment members. See MailChimp’s API documentation on Segment Members.

There is now a service for that

If typing commands on a terminal is not your thing, there is now a service that can remove lapsed contacts for you.

The kind people who built SendAdvisor a few years ago are back with a new product: Unaudience. From their website:

Unaudience begins by identifying the inactive subscribers based on their recency. It then sorts the subscribers based on their open & click rate, signup date, and others to classify the least active contacts. Finally, it archives only the required number of subscribers to maintain the maximum contact count of your Mailchimp plan. Unaudience’s bottom-up approach of archival gives you the best value for your Mailchimp cost.

You’ll notice that Unaudience goes further on two fronts: They archive the contacts instead of just deleting them (nice), but they also do this based on engagement.

Removing inactive subscribers is important for your list hygiene and for your open/click rates, but I would advise sending regular re-engagement campaigns before removing people from your list.

Sometimes people just need a little nudge.


About Thomas Deneuville

Thomas lives in Freeville, NY with his wife and two sons, where he reads, codes, and plays the bagpipe.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.