I want to add a tag to a specific user on a mailchimp list
$email = "[email protected]";
$tag="test";
$userid = md5( strtolower( $email ) );
$data = array(
    'apikey'        => $mailchimp_api_key,
    'email_address' => $email,
    'tags' => array(
        'name' => $tag,
        'status' => 'active'
        )
    );
$json_data = json_encode($data);
$url = 'https://'.$mailchimp_datacenter.'api.mailchimp.com/3.0/lists/'.$mailchimp_list_id.'/members/' . $userid . '/tags';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json',
    'Authorization: Basic '.$auth));
curl_setopt($ch, CURLOPT_USERAGENT, 'PHP-MCAPI/2.0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
if ($displaytaglist!="") {
    curl_setopt($ch, CURLOPT_POST, true);   
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
}
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
Do you know what is the issue ? I have this return :
stdClass Object
(
    [type] => http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/
    [title] => Invalid Resource
    [status] => 400
    [detail] => Expected argument of type "array or Traversable and ArrayAccess", "string" given
    [instance] => XXXXX-XXXXX-XXXXX
)
I had to use a nested array for the tags to work:
$data = array(
  'tags' => array(
    array(
      'name' => $tagname,
      'status' => 'active' 
    )
  )
);
Without the nested array( array('name' => $tagname,'status' => 'active' ) ) MailChimp returns the following error message:
'Invalid Resource', 400, 'Expected argument of type "array or Traversable and ArrayAccess", "string" given'
Multiple tags can be set this way:
$tagname1 = "TAG_NAME_1";    
$tagname2 = "TAG_NAME_2"
$data = array(    
  'tags' => array(    
    array(    
      'name' => $tagname1,    
      'status' => 'active'     
    ),    
    array(    
      'name' => $tagname2,    
      'status' => 'active'     
    )    
  )    
);
Say:
$tagname1 = "TAG_NAME_1";
$tagname2 = "TAG_NAME_2";
This will give the following JSON representation of the $data variable:
{"tags":[{"name":"TAG_NAME_1","status":"active"},{"name":"TAG_NAME_2","status":"active"}]}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With