Añadir la suscripción a Mailchimp en un formulario de contacto

MailChimp es un servicio de marketing por email fabuloso con un panel de control muy sencillo de utilizar y funciones como: gestión de campañas, estadísticas, auto-responder y conjunto de herramientas de gestión verdaderamente útiles. Ofrecen diversos métodos a la hora de poner un formulario de suscripción en tu sitio web o blog. Si deseas agregar la función de suscripción de MailChimp en tu formulario de contacto debes agregar algo de código.

Un casilla de suscripción en tu formulario de contacto es un gran oportunidad para ganar más suscriptores para tu newsletter. La mayoría de la gente utilizará esta pequeña casilla mucho más rápido que si utilizase el formulario estándar de MailChimp de suscripción.

En este tutorial veremos cómo agregar la casilla de suscripción de Mailchimp dentro de un formulario de contacto ya existente. No te preocupes si tu nivel de programación no es muy alto, este tutorial es lo suficientemente sencillo como para añadir el código a tu formulario de contacto por tu cuenta, incluso si no eres un desarrollador de PHP.

Preparativos

  • Si no tienes una cuenta en MailChimp, antes que nada, regístrate en la plataforma. Cuenta con una cuenta gratuita para aquellos que no superen los 2.000 miembros en sus listas de correo, y que tampoco superen los 12.000 mensajes al mes.
  • Crea una lista de correo a través del panel de control MailChimp y obtén su ID único (a través de Lists -> Your List -> Settings).
  • Lo siguiente que necesitas es una clave de la API de MailChimp. Obtén la tuya desde el panel de control (Account -> Extras -> API Keys)
  • Opcionalmente puedes crear un campo personalizado (Lists -> Your List -> Settings -> List Fields and *|MERGE|* Tags) y nombrarlo como subscription_via. No cambies las otras variables. Utilizaremos este campo para almacenar la información cuando haya una suscripción con el formulario de contacto que construimos en este tutorial.

HTML del formulario de contacto

Lo primero que necesitas es un formulario de contacto con los típicos campos de nombre, dirección de correo electrónico, una casilla para la suscripción y, por supuesto, un textarea para el mensaje del emisor. Utilizaremos un ejemplo básico en HTML para que todo se comprenda mejor. En el ejemplo de abajo, el formulario es procesado por un script cuyo nombre es process.php.

<form action="process.php" method="post">
	<div>
		<label for="name">Name</label>
		<input type="text" value="" name="name" />
	</div>
	<div>
		<label for="email">E-mail</label>
		<input type="text" value="" name="email" />
	</div>
	<div>
		<label for="message">Message</label>
		<textarea name="message" cols="30" rows="4"></textarea>
	</div>
	<div>
		<input type="checkbox" value="yes" name="newsletter" />
		<label for="newsletter">Subscribe to newsletter</label>
	</div>
	<div>
		<input type="submit" value="Register" name="subscribe" />
	</div>
</form>

API de Mailchimp

La API de MailChimp te ofrece varias maneras de comunicarte con la plataforma de MailChimp. Si trabajas con PHP, puedes utilizarel wrapper oficial de la API. Yo, para este tutorial utilizaré el wrapper de la API de MailChimp desarrollado por Drew McLellan, ya que es muy sencillo de utilizar. Agrega el siguiente código en tu script PHP que se encargue de procesar tu formulario de contacto, en mi caso sería el archivo "process.php". Elige un lugar en el código justo después de que se envíe el correo, es decir, después de utilizar la función mail(), o después de enviar el correo mediante el método Send() con PHPMailer.

include_once 'MailChimp.php';
 
$name = filter_var($_POST['name'], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
 
$mc = new DrewmMailChimp('YOUR_MC_API_KEY');
$mvars = array('optin_ip'=> $_SERVER['REMOTE_ADDR'], 'FNAME' => $name, 'MMERGE3' => 'VALUE_FOR_OPT_MERGEFIELD');
$result = $mc->call('lists/subscribe', array(
		'id'                => 'UNIQUE_LIST_ID',
		'email'             => array('email'=>$email),
		'merge_vars'        => $mvars,
		'double_optin'      => true,
		'update_existing'   => false,
		'replace_interests' => false,
		'send_welcome'      => false
	)
);

El código de arriba a abajo:

  • Incluimos el wrapper de MailChimp (usa la ruta correcta para evitar un error de PHP)
  • Chequeamos los inputs del formulario utilizando la función filter_var()
  • Crea un nuevo objeto con la clave de la API de MailChimp como argumento
  • Define la distintas variables: dirección IP, el nombre y el campo opcional que hemos creado antes en MailChimp
  • Se realiza la llamada a la API para "lists/subscribe" utilizando las variables de antes y otros valores del array. No olvides introducir aquí el ID único de la lista de correo que has creado antes. Los otros valores que puedes ver tienen sus valores por defecto, pero si lo deseas puedes cambiarlos.

Una vez hemos llamado a la API, el script recibirá una respuesta de MailChimp. Esta respuesta se almacena como un array dentro de la variable $response.

Mediante el código que puedes ver abajo seremos capaces de verificar/validar la respuesta.

if (!empty($result['euid'])) {
	echo 'Thanks, please check your mailbox and confirm the subscription.';
} else {
	if (isset($result['status'])) {
		switch ($result['code']) {
			case 214:
			echo 'You're already a member of this list.';
			break;
			// check the MailChimp API if you like to add more options
			default:
			echo 'An unknown error occurred.';
			break;
		}
	}
}

Si la respuesta contiene un elemento de matriz con la key "euid", la suscripción se ha realizado correctamente. El suscriptor recibirá un email con el enlace de confirmación (de doble suscripción voluntaria). De lo contrario, utilizaremos el código de error que nos vendrá también en la respuesta para decidir qué (error) mensaje debe mostrar el script. Comprueba la documentación de la API de MailChimp para comprobar los mensajes de error.

Código completo del tutorial

Como he dicho antes, este tutorial es para agregar la casilla de suscripción de Mailchimp dentro de un formulario de contacto ya existente. El siguiente código es sólo un concepto de cómo integrarlo en un formulario HTML.

<?php
include_once 'MailChimp.php';
 
if (isset($_POST['Submit'])) {
	if (empty($_POST['name']) || empty($_POST['email'])) {
		echo 'Please enter a name and email address.';
	} else {
		$name = filter_var($_POST['name'], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);
		$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
		/*
		 * Place here your validation and other code you're using to process your contact form.
		 * For example: mail('[email protected]', 'Subject: contact form', $_POST['message']);
		 * Don't forget to validate all your form input fields!
		 */
		if (!empty($_POST['newsletter'])) {
			$mc = new DrewmMailChimp('YOUR_MC_API_KEY');
			$mvars = array('optin_ip'=> $_SERVER['REMOTE_ADDR'], 'FNAME' => $name, 'MMERGE3' => 'VALUE_FOR_OPT_MERGEFIELD');
			$result = $mc->call('lists/subscribe', array(
					'id'                => 'UNIQUE_LIST_ID',
					'email'             => array('email'=>$email),
					'merge_vars'        => $mvars,
					'double_optin'      => true,
					'update_existing'   => false,
					'replace_interests' => false,
					'send_welcome'      => false
				)
			);
			if (!empty($result['euid'])) {
				echo 'Thanks, please check your mailbox and confirm the subscription.';
			} else {
				if (isset($result['status'])) {
					switch ($result['code']) {
						case 214:
						echo 'You're already a member of this list.';
						break;
						// check the MailChimp API docs for more codes
						default:
						echo 'An unknown error occurred.';
						break;
					}
				}
			}
		}
	}
}

Fuente: web-development-blog.com

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP