Cómo interactuar con MailChimp usando PHP

Inicio / Cómo hacer para... / Cómo interactuar con MailChimp usando PHP

Uno de mis SaaS favoritos es MailChimp (El que uso para el envío de mis campañas de e-mail marketing y para algunos clientes también). Si bien su interface es algo rústica (A veces cuesta encontrar el modo de realizar ciertas tareas, sobre todo al comienzo cuando no se conoce bien), es sumamente funcional (Hasta tiene workflows automatizados).

Pero, como siempre, las posibilidades que brinda de fábrica son más limitadas de lo que a un desarrollador le gustaría… afortunadamente, cuenta con una API muy buena que permite manipular todos los objetos del sistema y lograr algunas cosas que desde la interfaz web son complejas (o directamente imposibles).

Algo que me sucedió recientemente (y que dio origen a este post) fue la necesidad de realizar un mismo envío (el cual incluyera el disparo de nuevos envíos dependiendo del comportamiento del usuario ante la lectura del envío original) en forma periódica.

La parte de los envíos condicionales los resolví en forma bastante simple usando las automatizaciones propias de MailChimp. El problema que tenía era cómo realizar los envíos en forma periódica.

Hurgando un poco en la documentación de la API llegué a la solución :).

Lo primero fue buscar alguna librería php que me ayudara en la interacción con la API. Para ello dirigí mi browser hacia packagist.org y busqué “MailChimp” y encontré:

Como no tenía ninguna otra referencia (ni estaba usando ningún framework en particular), decidí probar con la primera opción.

Armé mi proyecto usando composer:

mkdir mc
cd mc
composer init

Y aproveché para declarar la dependencia en forma interactiva:

Y una vez terminado el consabido composer install para que todo tenga sentido…

Y ahora sí… ¡a codear!

require_once 'vendor/autoload.php';

use \DrewM\MailChimp\MailChimp;

$MailChimp = new MailChimp('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-us15');

Lo primero que se necesita para usar la API es autenticarse, para eso necesitás conocer tu API-Key. Ese dato lo sacás de la sección Extras de la configuración de tu cuenta:

Si no tenés una API Key creada usá el botón de abajo, en mi caso ya la tenía, así que fue sólo copiar el contenido de la columna API key.

Y ahí es empezar a jugar un poco.

Por ejemplo, para saber qué listas tengo definidas:

$result = $MailChimp->get('lists');

print_r($result);

Da algo como:

Array
(
    [lists] => Array
        (
            [1] => Array
                (
                    [id] => 897874fd1b
                    [web_id] => 133557
                    [name] => Testing list
...
                )
        )
)

Lo importante (entre todos los datos que devuelve la llamada) es el id de la lista (897874fd1b en este caso). Con este dato vamos a poder operar, por ejemplo, para obtener el listado de miembros:

$result = $MailChimp->get('lists/897874fd1b/members');

Una vez obtenida la lista de miembros, lo que quería hacer era sumarlos a la cola del envío automatizado. Para eso necesitaba hacer una llamada tipo POST (Estaba por agregar información en lugar de obtenerla), pero requería un par de ids (el del circuito de automatización y el de su primer correo):

$result = $MailChimp->get('automations');

Me dió el número 29f30d8f7a.

Y:

$result = $MailChimp->get('automations/29f30d8f7a/emails');

Me dió el da174ffbca.

Un punto importante, para que todo esto funcione, es la configuración de la automatización en MailChimp. El primer correo debe dispararse a partir de una llamada a la API:

Una vez obtenidos todos los datos, sólo quedaba ingresar los mails en la cola:

foreach ( $result['members'] as $member) {
    $email_address = $member['email_address'];
    echo "Enviando primer mail a ". $email_address;
    $MailChimp->post(
        'automations/29f30d8f7a/emails/da174ffbca/queue',
        [
            'email_address' => $email_address,
        ]
        );
}

Y dejar que MailChimp hiciera el resto.

Conclusión

La API de MailChimp es bastante simple de usar, adhiere de cerca al estándar RESTFul, logrando una interface limpia y muy funcional.

El soporte para PHP está muy bien logrado, con lo cual, es muy sencillo integrar una aplicación desarrollada en este lenguaje con este potente motor de email marketing, así que… ¿para qué reinventar la rueda?

Aclaración

Claramente, para sacarle el máximo jugo hace falta conocer en profundidad MailChimp (y luego ver cómo integrarlo mediante la API), pero si ya conoces un poco la herramienta, esta posibilidad seguramente te abrira nuevas oportunidades.

mchojrin

CEO at Leeway
Mauro es Lic. en Ciencias de la Computación.
Su carrera como docente de programación se inició en el año 1997 en la Escuela Técnica ORT.
Actualmente coordina el desarrollo de proyectos web en Leeway y los cursos dictados en la Leeway Academy

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *