Enviar una campaña de MailChimp desde PHP

Enviar una campaña de MailChimp desde PHP

Veremos un ejemplo sobre cómo enviar una campaña de MailChimp desde PHP para integrarlo en nuestros proyecto web de clientes o propios, te mostraremos código para obtener listas de suscriptores, obtener plantillas predefinidas y varias cosillas más relacionadas con la integración PHP con MailChimp.

Hace poco tuve la necesidad de Integrar MailChimp con PHP.

Afortunadamente MailChimp ofrece una excelente API y una aun mejor documentación por lo que no fue tan complicado conectar ambos.

Ya hemos hablado antes en este blog cómo obtener listas de MailChimp con PHP y ahora seguiremos adelante con este tema.


¿Sabías que?

¿Necesitas hosting wordpress? WebEmpresa te ofrece un servicio super rápido, excelente soporte en español y certificado SSL gratuito:

WebEmpresa

Lo más importante de este primer post es sin lugar a dudas la función para comunicarse con MailChimp.

Hoy veremos cómo enviar una campaña de MailChimp desde PHP para lo cual haremos varias cosas.

Antes que nada repasaremos la función para conectar a MailChimp para los que no han ido al post anterior.

Posteriormente también repasaremos el código para obtener tus listas de suscriptores en un combo.

Adicional a esto veremos también cómo:

  • Obtener miembros de una lista
  • Obtener etiquetas en la que esta un miembro
  • Obtener plantillas de correo predefinidas por nosotros
  • Crear una nueva campaña
  • Enviar una campaña

Antes que nada recuerda que debes de contar con una cuenta en MailChimp y obtener una API KEY para poder vincular.

Conectar con MailChimp desde PHP

function conectar_a_mailchimp( $url, $peticion, $api_key, $data = array() ) {
	if( $peticion == 'GET' )
		$url .= '?' . http_build_query($data);
 
	$mch = curl_init();
	$headers = array(
		'Content-Type: application/json',
		'Authorization: Basic '.base64_encode( 'user:'. $api_key )
	);
	curl_setopt($mch, CURLOPT_URL, $url );
	curl_setopt($mch, CURLOPT_HTTPHEADER, $headers);
	curl_setopt($mch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($mch, CURLOPT_CUSTOMREQUEST, $peticion); 
	curl_setopt($mch, CURLOPT_TIMEOUT, 200);
	curl_setopt($mch, CURLOPT_SSL_VERIFYPEER, false); 
 
	if( $peticion != 'GET' ) {
		curl_setopt($mch, CURLOPT_POST, true);
		curl_setopt($mch, CURLOPT_POSTFIELDS, json_encode($data) ); 
	}
 
	return curl_exec($mch);
}

A partir de aquí toda referencia a la variable $API_KEY hace referencia a la clave del API requerida.

Obtener listas de suscriptores

$data = array(
	'fields' => 'lists', 
	'count' => 5
);
 
$url = 'https://' . substr($API_KEY,strpos($API_KEY,'-')+1) . '.api.mailchimp.com/3.0/lists/';
$result = json_decode( conectar_a_mailchimp( $url, 'GET', $API_KEY, $data) );
 
if( !empty($result->lists) ) {
	echo '<select>';
	foreach( $result->lists as $list ){
		echo '<option value="' . $list->id . '">' . $list->name . ' (' . $list->stats->member_count . ')</option>';
	}
	echo '</select>';
} elseif ( is_int( $result->status ) ) { 
	echo '<strong>' . $result->title . ':</strong> ' . $result->detail;
}

 

Obtener miembros de una lista

$data = array(
	'offset' => '0',
	'count' => '2000'
);
 
$url = 'https://' . substr($API_KEY,strpos($API_KEY,'-')+1) . '.api.mailchimp.com/3.0/lists/[IDLISTA]/members/';
$result = json_decode( conectar_a_mailchimp( $url, 'GET', $API_KEY, $data) );
 
if( !empty($result->members) ) {
	echo '<select>';
	foreach( $result->members as $member ){
		echo '<option value="' . $member->id . '">' . $member->email_address . '</option>';
	}
	echo '</select>';
} elseif ( is_int( $result->status ) ) { 
	echo '<strong>' . $result->title . ':</strong> ' . $result->detail;
}

Asegúrate de incluir el ID de tu lista, los IDs los obtuvimos con el código anterior.

Obtener etiquetas en la que esta un miembro

$data = array(
	'offset' => '0',
	'count' => '50'
);
 
$url = 'https://' . substr($API_KEY,strpos($API_KEY,'-')+1) . '.api.mailchimp.com/3.0/lists/[IDLISTA]/members/[IDMIEMBRO]/';
$result = json_decode( conectar_a_mailchimp( $url, 'GET', $API_KEY, $data) );

echo '<select>';
echo '<option value="0">Seleccionar Tag</option>';
if( $result->tags_count > 0 ){
	for($i=0;$i<$result->tags_count;$i++){
		echo "<option value='" . $result->tags[$i]->id . "'>" . $result->tags[$i]->name . "</option>";
	}
}
echo '</select>';

Aquí también debes de cambiar el ID de lista y el ID de miembro, ambos los obtenemos en los combos anteriores.

Obtener plantillas de correo predefinidas por nosotros

$data = array(
	'offset' => '0',
	'count' => '50',
        'type' => 'user'
);
 
$url = 'https://' . substr($API_KEY,strpos($API_KEY,'-')+1) . '.api.mailchimp.com/3.0/templates/';
$result = json_decode( conectar_a_mailchimp( $url, 'GET', $API_KEY, $data) );

echo '<select>';
echo '<option value="0">Seleccionar Template</option>';
if( $result->total_items > 0 ){
	for($i=0;$i<$result->total_items;$i++){
		echo "<option value='" . $result->templates[$i]->id . "'>" . $result->templates[$i]->name . "</option>";
	}
}
echo '</select>';

Aquí obtenemos las plantillas de correo disponibles únicamente creadas por nosotros, para ver todas elimina ‘type’ => ‘user’.

Crear una nueva campaña

$subject 	= "Asunto";
$reply_to   = "correo@micorreo.com";
$from_name  = "Mi empresa";

$campaign_id = "";

$data = array(
    "recipients"    => array(
    					"list_id" => "[IDLISTA]",
						"segment_opts" => array(
							"saved_segment_id" => [IDETIQUETA]
						)),
    "type"          => "regular",
    "settings"      => array("subject_line" => $subject,
                            "reply_to"      => $reply_to,
                            "from_name"     => $from_name
                            )
);

$url = "https://" . substr($API_KEY,strpos($API_KEY,"-")+1) . ".api.mailchimp.com/3.0/campaigns/";
$create_campaign = json_decode(conectar_a_mailchimp( $url, "POST", $API_KEY, $data ));

$idCampaña = 0;

if ( $create_campaign ) {
    if ( ! empty( $create_campaign->id ) && isset( $create_campaign->status ) && "save" == $create_campaign->status ) {
        $idCampaña = $create_campaign->id;
    }
}

Sustituimos IDLISTA e IDETIQUETA para crear una campaña para una lista de suscriptores pero además para únicamente los que tengan dicho ID de Segmento, eliminar esta linea para enviar a toda la lista.

La campaña se crea como borrador pero aún no se envia.

Enviar una campaña

$data = array();
 
$url = "https://" . substr($API_KEY,strpos($API_KEY,"-")+1) . ".api.mailchimp.com/3.0/campaigns/".$idCampaña."/actions/send/";
$send_campaign = json_decode(conectar_a_mailchimp( $url, "POST", $API_KEY, $data ));

print_r($send_campaign);

if ( empty( $send_campaign ) ) {
 
       echo "Se ha enviado la campaña";
		 
} elseif( isset( $send_campaign->detail ) ) {
		 
       $error_detail = $send_campaign->detail;
		 
}

Con ayuda del IDCAMPAÑA creado en el paso anterior enviamos la campaña.

Como puedes ver enviar una campaña de MailChimp desde PHP no es complicado de hacer.

Puedes consultar más información sobre el API de MailChimp para aprender a hacer más cosas.

Espero y posteriormente seguir agregando más funcionalidades cómo agregar y eliminar suscriptores desde PHP.

Si esta información sobre cómo enviar una campaña de MailChimp desde PHP te fue de utilidad no olvides compartirla en tus redes sociales o dejarnos un comentario en la sección de abajo para aclararte cualquier duda relacionada al tema.

Hasta luego!

Clic para valorar esta información
[Total: 0 Promedio: 0]