One of our team members needed to delete Mailchimp list members signed to the list before given date.
<?php
date_default_timezone_set(‘UTC’);
function mailchimpRequest($type, $target, $data = false) {
$api = array(
‘login’ => ‘anyuser‘,
‘key’ => ‘27fd0105d2d0f76aa68405e4daecc028-us3‘, //here should be your API KEY
‘url’ => ‘https://us3.api.mailchimp.com/3.0/‘
);
$ch = curl_init($api[‘url’] . $target);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
‘Content-Type: application/json’,
‘Authorization: ‘ . $api[‘login’] . ‘ ‘ . $api[‘key’]
));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $type);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, ‘YOUR-USER-AGENT’);
if ($data)
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$response = curl_exec($ch);
if ($response === false) {
echo curl_error($ch);
die();
}
curl_close($ch);
return json_decode($response, true);
}
function getMembersToDelete($listId, $breakingDate) {
$offset = 0;
$toDelete = array();
while (true) {
$subscribers = mailchimpRequest(‘GET’, ‘/lists/’ . $listId . ‘/members?count=100&offset=’ . $offset);
foreach ($subscribers[‘members’] as $member) {
if (strtotime($member[‘timestamp_opt’]) < strtotime($breakingDate)) {
echo ‘Schedule to DELETE: ‘ . $member[’email_address’] . “n”;
$toDelete[] = $member[‘id’];
} else {
return $toDelete;
}
}
if (count($subscribers[‘members’]) == 0) {
return $toDelete;
}
$offset += 100;
}
return $toDelete;
}
//THIS IS THE LIST ID YOU WANT TO CLENUP
$listId = ‘cd17909729‘;
//MODIFY THE DATE
foreach (getMembersToDelete($listId, ‘2015-01-01’) as $id) {
mailchimpRequest(‘DELETE’, ‘/lists/’ . $listId . ‘/members/’ . $id);
echo ‘Deleted ‘ . $id . “n”;
}