IT & Engineering

Cómo cerrar el círculo entre los datos de los clientes y los del email

Una de las últimas expresiones de moda en tecnología es el “big data”. Una vez que pones algo en internet, (con suerte) tendrás un montón de datos entre los que elegir; lo difícil es unir los datos de fuentes dispares para obtener información procesable. Se supone que para esto sirve el “big data”... creo.
Imagen para Cómo cerrar el círculo entre los datos de los clientes y los del email

Una de las últimas expresiones de moda en tecnología es el “big data”. Una vez que pones algo en internet, (con suerte) tendrás un montón de datos entre los que elegir; lo difícil es unir los datos de fuentes dispares para obtener información procesable. Se supone que para esto sirve el “big data”… creo.

En este artículo te explicamos una forma sencilla de vincular los datos de tus emails con tu base de datos de clientes para que puedas sacar conclusiones relevantes. No sé si esto es lo suficientemente complicado como para entrar en la categoría del “big data”… a lo mejor es “small data”… en cualquier caso, esperamos que te sea útil.

mindthegap

Vincular el email con los datos de las analíticas web no siempre es suficiente

Una de las formas más sencillas de vincular los datos de los emails a los datos de los clientes es usar enlaces generados por el proveedor de analíticas de tu sitio web. Es bastante sencillo generar y usar cadenas de consulta como la siguiente de proveedores como Google Analytics en tus emails:

                                

                                    http://www.mystartup.com/?utm_source=newsletter&utm_medium=email&utm_campaign=offer1
                                
                            

Incluso ofrecen prácticos generadores de URL para facilitar el proceso. Cuando uno de tus clientes hace clic en esta URL, el proveedor de analíticas de tu sitio web te puede decir cuántos registros obtuviste de tu email.

Sin embargo, hay un montón de cosas que querrás poder rastrear sobre tus clientes, además de si se registraron. Por ejemplo, si ofreces un servicio basado en API para el equipo de desarrollo, como Stripe o Urban Airship, puede que quieras saber si tu newsletter aumentó la media de llamadas a la API por día 3 meses después de registrarse. Estos datos deben estar vinculados a tu base de datos de clientes o aplicaciones, no aislados en un almacén de datos de analíticas web independiente (ya que las analíticas web no están diseñadas para rastrear llamadas a la API), por lo que las cadenas de consulta por sí solas no ayudan.

Existen soluciones un tanto complicadas para ayudar a vincular las campañas a tu base de usuarios y fantásticos servicios como Kiss Metrics y Mixpanel que ayudan a facilitar esto. Sin duda recomendamos probar esos servicios si te tomas en serio las analíticas web.

Otra forma sencilla de relacionar la actividad de tus emails con una persona concreta de tu base de datos de clientes es usar los webhooks de Mailgun y variables personalizadas.

Uso de variables de email personalizadas para vincular datos de comportamiento granulares

Cada vez que alguien abre, hace clic o se da de baja de un email, Mailgun te lo notifica a través de webhooks. Un webhook es simplemente un HTTP POST a tu aplicación, basado en una determinada acción. Estas acciones se pueden configurar en el panel de control de Mailgun.

Imagina que quieres realizar un seguimiento de qué clientes hicieron clic en una oferta concreta de tu newsletter mensual, para poder medir si esa newsletter produjo un aumento en el promedio de llamadas a la API, por cliente, pasados 3 meses.

Con la proliferación de los servicios de pago por uso basados en API, vincular el email marketing directamente con el uso real es un problema muy habitual y quienes logran resolverlo pueden ganar mucho dinero.

Para medir esto, necesitarás saber qué personas de tu base de datos hicieron clic en qué oferta (Mailgun te lo puede decir) Y vincularlo a tu base de datos donde almacenas los datos sobre el uso de la API de cada cliente. A continuación te explicamos cómo hacerlo.

Configurar webhooks

En primer lugar, tienes que configurar Mailgun para que te envíe información cuando alguien haga clic en un enlace de uno de tus emails. Puedes hacerlo en el panel de control de Mailgun, en la pestaña de seguimiento:

Cuando Mailgun envía el POST del webhook, recibes datos sobre el evento de clic, incluyendo la persona destinataria del email, la URL en la que se hizo clic y una marca de tiempo (consulta la documentación para ver la lista completa de parámetros de los webhooks de clic). En algunos casos, bastará con usar “recipient” como valor único para hacer coincidir esta actividad del email con tu base de datos de clientes para almacenar quién hizo clic en tu email; pero no siempre. Para modelos de datos complejos, como cuando un mismo cliente tiene varias cuentas o si varios comparten una sola, tendrás que especificar un ID único más detallado.

¡Variables personalizadas al rescate!

Cómo configurar variables personalizadas

Mailgun te ofrece la posibilidad de especificar variables personalizadas para cada email que envíes. Puedes considerar estas variables como metadatos únicos a nivel de mensaje. Cuando alguien hace clic en tu email, recibes estas variables personalizadas en el webhook, junto con el resto de parámetros.

En este ejemplo, queremos relacionar la persona destinataria de un email con su cuenta a través del número de cuenta. Además, queremos transferir el ID de la campaña de email para poder probar qué campaña fue más eficaz a la hora de aumentar el uso medio de la API.

                                

                                    Custom-Variables: {"name": "Awesome Customer", "account_number": "12345", "email_campaign_id": "30 Day Follow-up"}rn
                                
                            

Cómo desplegar tu email

Esperamos que tu negocio tenga éxito y que cuentes con una amplia clientela. Si tu negocio tiene éxito, probablemente sea porque te basas en los datos y siempre realizas tests A/B en las distintas campañas. Esto puede crear muchísimas permutaciones.

No hay problema, a continuación te explicamos cómo desplegar tu email con un pequeño y sencillo script que procesa por lotes a los destinatarios y sus datos personalizados:

                                

                                    def postBatchToMailgun(customers):rn    batchJson = {}  # Create empty Dictionaryrn    toField = []    # Create empty Listrnrn    for customer in customers:rn        temp = {}  # Create temporary Dictionaryrn        temp['accountNumber'] = customer["id"]rn        temp['name'] = customer["name"]rn        temp['emailCampaignId'] = "30 Day Follow-up"rnrn        # Assign dictionary of attributes to email address dictionary itemrn        batchJson[customer["email"]] = temprnrn        # Populate list with email addresses for To fieldrn        toField.append(customer["email"])rnrn    # Convert Dictionary of attributes to JSONrn    batchJson = json.dumps(batchJson)rnrn    return requests.post(rn        "https://api.mailgun.net/v2/samples.mailgun.org/messages",rn        auth=("api", "key-3ax6xnjp29jd6fds4gc373sgvjxteol0"),rn        data={rn            "from": "Pro User <me@samples.mailgun.org>",rn            "to": toField,rn            "subject": "Hi %recipient.name%, Check This Out!",rn            "html": "Promo HTML Here",rn            "v:Customer-Account-Number": "%recipient.accountNumber%",  # In production, hash this to avoid exposing sensitive datarn            "v:Email-Campaign-Id": "%recipient.emailCampaignId%",rn            "recipient-variables": batchJsonrn        }rn    )rn
                                
                            

En el código de ejemplo anterior, el método postBatchToMailgun() espera un máximo de 1000 filas de tu base de datos. Tendrás que determinar la cantidad de bucles necesarios para iterar a través de tu base de datos de clientes y, a continuación, pasar la tupla “customers” al método postBatchToMailgun().

A continuación te mostramos un ejemplo de iteración a través de tu base de datos de clientes.

                                

                                    import mathrnimport MySQLdbrnrn# Connect to MySQLrndb = MySQLdb.connect(rn    host="localhost",rn    user="myusername",       # your usernamern    passwd="topsecret",      # your passwordrn    db="campaign"            # name of the databasern)rnrncursor = db.cursor(MySQLdb.cursors.DictCursor)rnrn# Get total number of recordsrncursor.execute("""SELECT count(*) as total FROM campaign""")rncount = cursor.fetchone()rntotal = count['total']rnrn# Calculate iterations (1000 records per batch)rnif total < 1000:rn    iterations = 1rnelse:rn    iterations = int(math.ceil(total / 1000))rnrni = 0rnwhile i < iterations:rn    cursor.execute("""SELECT id, name, email FROM campaign LIMIT 1000""")rn    customers = cursor.fetchall()rnrn    # Send batch to Mailgunrn    postBatchToMailgun(customers)rnrn    # Note: Here you need to update your LIMIT with OFFSET or use WHERE to fetch the next batchrn    # Otherwise, you’ll keep sending the same 1000 records each iteration.rn    rn    i += 1rn
                                
                            

Cómo configurar tu aplicación para recibir los webhooks

Una vez que hayas enviado los emails a tu clientela y empiecen a abrirlos y a hacer clic en ellos, tendrás que recopilar los parámetros enviados con los webhooks. Aquí tienes una pequeña aplicación Flask que te muestra los conceptos básicos:

                                

                                    from flask import Flask, requestrnrnapp = Flask(__name__)rnrn@app.route('/mailgun-tracking', methods=['GET', 'POST'])rndef tracking():rn    # Access some of the email parsed valuesrn    request.form['Email-Campaign-Id']rn    request.form['Customer-Account-Number']rn    request.form['recipient']rn    request.form['event']rnrn    # Extended parametersrn    request.form['city']rn    request.form['region']rn    request.form['country']rn    request.form['ip']rn    request.form['device-type']rn    request.form['user-agent']rn    request.form['client-os']rn    request.form['client-type']rnrn    return "Ok"rnrnif __name__ == '__main__':rn    app.run(host='50.56.174.200', port=100, debug=True)rn
                                
                            

Este ejemplo enumera de manera específica algunos de los parámetros que te podrían interesar. Puedes encontrar una lista completa de parámetros de los webhooks en nuestra documentación. Solo tienes que añadir los que quieras.

Cómo vincular los datos de los emails con los de los clientes

Una vez que los datos del webhook se transfieren a la aplicación, solo es cuestión de emparejar el email con cada cliente en función de la variable account_number y añadir el ID de campaña al registro del cliente.

Ahora puedes medir el efecto a largo plazo de tus campañas de email sin tener que depender de cookies persistentes ni de otros métodos de seguimiento web menos sofisticados.

Disfruta de tus envíos.

El equipo de Mailgun