Evitando el double opt-in de MailChimp

Actualizado por hace 1 año

mailchimp_logo

La semana pasada un cliente nos pidió implementar en un landing page una forma que utilizara MailChimp para ir generando una lista de correos y de nombres para luego ya sea mandarles boletines con promociones o simplemente ponerse en contacto con las personas de manera más personal. Para ello nos pidieron que de ser posible, las personas solamente dejaran sus datos, los enviaran y listo Por default MailChimp utiliza un sistema de double opt-in en el que el usuario tiene que confirmar primero su correo electrónico para poder suscribirse a la lista de correo.

Afortunadamente hay una manera de evitar que el usuario tenga que confirmar su correo electrónico (aunque obviamente con las desventajas que eso conlleva, como la posibilidad de recibir cantidades brutales de spam).

Para ello es necesario crear un API Key1 y descargar un MailChimp API Wrapper en el lenguaje que ustedes quieran (en mi caso fue PHP) y el wrapper que yo utilicé fue MCAPI.class.php (descargar).

Luego hay que hacer la conexión a el API de MailChimp, para eso yo creé un archivo llamado subscribe.php, el cual es referenciado en la forma de contacto en el markup de nuestro proyecto:

  
     <form action="path-to/subscribe.php" method="POST">
  

Les muestro mi subscribe.php para que vean como quedó:

  
    require_once 'MCAPI.class.php';
    
    // API Key
    $apikey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxx';
    
    // List Unique ID: http://admin.mailchimp.com/lists/ (Hacer clic en "settings")
    $list_id = 'xxxxxxxxxx';
    
    $api = new MCAPI($apikey);
    
    $MERGE0 = $_POST['MERGE0']; // Email
    $MERGE1 = $_POST['MERGE1']; // Nombre
    $MERGE6 = $_POST['MERGE6']; // Teléfono
    
    // Variables en nuestra forma que coinciden con las variables en nuestra lista de suscripción
    $merge_vars = array('EMAIL'=>$MERGE0,
                        'FNAME'=>$MERGE1,
                        'MMERGE6'=>$MERGE6,
                        'GROUPINGS'=>array(
                            0 => array(
                                'name' => "Areas", // Este nombre lo encontramos vía Admin Panel
                                'groups' => "Eventos",
                            )
                        )
                    );

// Disabling double opt-in.              
    $double_optin = FALSE;
    
    // Enviamos los datos a MailChimp
    // Consultar http://apidocs.mailchimp.com/api/1.3/listsubscribe.func.php para documentación sobre los parámetros
    $retval = $api->listSubscribe( $list_id, $MERGE0, $merge_vars, $double_optin );
    
    if ($api->errorCode){
        echo "

Hubo un problema, lo más probable es que la dirección de correo que usted introdujo ya se encuentre registrada en nuestro sistema.

"; } else { echo "

Muchas gracias por contactarnos, nos pondremos en contacto con usted a la brevedad.

"; }

Si se fijan lo importante aquí es el parámetro $double_optin (que es booleano) y el cual agregamos a $api->listSubscribe() como cuarto parámetro para que sea reconocido por el API. Al ponerle FALSE básicamente le estamos diciendo a MailChimp que evite el double opt-in2:

  
     $double_optin = FALSE;
  

Recuerden, se lo pasamos a $api->listSubscribe() como mencioné anteriormente.

  
     $retval = $api->listSubscribe( $list_id, $MERGE0, $merge_vars, $double_optin );
  

Este es un ejemplo muy muy básico que me funcionó a la perfección, ya si quieren hacer algo más fancy pueden usar AJAX en la forma pero en este tutorial no estamos interesados en eso.

Si alguna vez llegan a tener la necesidad de hacer algo como esto (que la veo muy difícil) pues esta es la manera de hacerlo.

  1. Pueden generar una aquí.
  2. Oh, si, spam, ven a mi… Los clientes se pasan con sus solicitudes a veces.