MailChimp API: Updating Member Email Address

I was recently a little puzzled about how to change the email address of a current subscriber to your MailChimp list via an API command.

I went slightly astray after reading a answer but ultimately it was a relatively simple procedure.

Whilst I’m using the Laravel-MailChimp bundle to process the API calls, the important part is the structure of the JSON array you send to MailChimp.

In my case the Laravel Mailchimp class processes a PHP array and sends it to MailChimp. Please note that the Mailchimp class adds my API key later. You’ll need to specify your API key for this to work.

$member_details = array(
    // I'm passing the ID in from a function
    'id' => $id,
    // Here you need to specify the user's old email
    // It must correspond to a current subscriber on your MailChimp list
    'email_address' => $old_email,
    'merge_vars' => array(
        // Specify the NEW email address for the subscriber
        'EMAIL' => $new_email,
    'replace_interests' => FALSE,

$response = Mailchimp::listUpdateMember($member_details);

And that’s it.

I’m a little perplexed as to why the MailChimp API documents merge_vars called EMAIL and NEW-EMAIL as they both appear to do the same thing 1. It seems like they could just have a single merge_var called “NEW-EMAIL” and that would cover it and make more sense at the same time! Still, I’ve got it working now so I’m happy!

  1. I believe NEW-EMAIL is for batch updates