IT & Engineering

Fechando o ciclo entre os dados de clientes e os dados de e-mail

Uma das frases do momento no mundo da tecnologia é "big data". Depois que você coloca algo na internet, você (esperançosamente) terá muitos dados para escolher – a parte difícil é unificar dados de fontes distintas em insights práticos. É nisso que o "big data" deve ajudar... eu acho.
Imagem para Fechando o ciclo entre os dados de clientes e os dados de e-mail

Uma das frases do momento no mundo da tecnologia é “big data”. Depois que você coloca algo na internet, você (esperançosamente) terá muitos dados para escolher – a parte difícil é unificar dados de fontes distintas em insights práticos. É nisso que o “big data” deve ajudar… eu acho.

Nesta postagem, mostraremos uma maneira fácil de vincular dados de e-mail ao banco de dados de clientes, para que você possa tirar conclusões significativas. Não sei se isso é complicado o suficiente para se enquadrar na categoria de big data… talvez seja um small data… de qualquer forma, espero que seja útil.

mindthegap

Vincular e-mail a dados de análises da web nem sempre é o suficiente

Uma das maneiras mais fáceis de vincular dados de e-mail a dados de clientes é usando links gerados pelo provedor de análises do seu site. É bem simples gerar e usar strings de consulta como a abaixo de provedores como o Google Analytics em seus e-mails:

                                

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

Eles até oferecem criadores de URL para facilitar o processo. Quando um dos seus clientes clica neste url, seu provedor de análises do site pode informar quantos cadastros você obteve do seu e-mail.

No entanto, há uma série de coisas que você quer conseguir rastrear sobre seus clientes, além de saber se o cadastro foi feito. Por exemplo, se você oferece um serviço baseado em API para a equipe de desenvolvimento, como o Stripe ou Urban Airship, você pode querer saber se a newsletter aumentou a média de chamadas de API por dia três meses após o cadastro. Esses dados precisam estar vinculados ao seu banco de dados de clientes ou aplicativos, e não isolados em um armazenamento de dados de análises da web separado (já que as análises da web não são criadas para rastrear chamadas de API), portanto, as strings de consulta por si só não ajudam.

Existem soluções alternativas um pouco complicadas para ajudar a vincular campanhas a usuários e ótimos serviços como o Kiss Metrics e Mixpanel que ajudam a facilitar isso. Recomendamos muito testar esses serviços se você leva a sério as análises da web.

Outra maneira fácil de associar sua atividade de e-mail a um perfil individual no banco de dados de clientes é usando os webhooks do Mailgun e variáveis personalizadas.

Uso de variáveis de e-mail personalizadas para unir dados comportamentais granulares

Sempre que um usuário abre, clica ou cancela a inscrição de um e-mail, o Mailgun pode informar você sobre isso por meio de webhooks. Um webhook é simplesmente um HTTP POST no seu aplicativo, com base em uma determinada ação. Essas ações podem ser configuradas no painel de controle do Mailgun.

Digamos que você queira acompanhar quais clientes clicaram em uma oferta específica na sua newsletter mensal, para que você possa medir se essa newsletter gerou um aumento na média de chamadas de API, por cliente, após três meses.

Com a proliferação de serviços pagos conforme o uso baseados em API, vincular o e-mail marketing diretamente ao uso real é um problema muito real a ser resolvido, e quem conseguir resolvê-lo tem potencial para ganhar muito dinheiro.

Para medir isso, você precisará saber quais usuários clicaram em qual oferta (o Mailgun pode informar isso) E vincular isso ao seu banco de dados onde os dados sobre o uso da API de cada cliente ficam armazenados. Veja como fazer isso.

Configuração de webhooks

Primeiro, você precisa configurar o Mailgun para repassar informações quando um usuário clica em um link em um de seus e-mails. Você faz isso no painel de controle do Mailgun, na guia de rastreamento:

Quando o Mailgun faz o POST do webhook, você receberá dados sobre o evento de clique, incluindo o destinatário do e-mail, o url clicado e um carimbo de data/hora (consulte a documentação para obter uma lista completa dos parâmetros do webhook de clique). Em alguns casos, usar simplesmente “recipient” como um valor exclusivo para associar essa atividade de e-mail ao seu banco de dados de clientes será suficiente para armazenar qual cliente clicou no seu e-mail – mas nem sempre. Para modelos de dados complexos, como quando um único cliente tem várias contas ou vários clientes compartilham uma única conta, será necessário especificar um ID exclusivo mais detalhado.

Variáveis personalizadas para salvar o dia!

Configuração de variáveis personalizadas

O Mailgun permite que você especifique variáveis personalizadas para cada e-mail enviado. Você pode pensar nessas variáveis como metadados exclusivos no nível da mensagem. Quando um usuário clica no seu e-mail, essas variáveis personalizadas são repassadas a você no webhook, junto com os outros parâmetros.

Neste exemplo, queremos associar um destinatário de e-mail à sua conta usando o número da conta. Além disso, queremos repassar o ID da campanha de e-mail, para podermos testar qual campanha foi mais eficaz no aumento do uso médio da API.

                                

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

Implantação do seu e-mail

Esperamos que sua empresa seja um sucesso e que você tenha muitos clientes. Se sua empresa é de fato bem-sucedida, provavelmente é porque você toma decisões com base em dados e está sempre fazendo testes A/B em campanhas diferentes. Isso pode criar muitas permutações.

Não tem problema – veja como implantar seu e-mail com um script simples que agrupa os destinatários e seus dados 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
                                
                            

No código de exemplo acima, o método postBatchToMailgun() não espera mais do que 1.000 linhas do seu banco de dados. Você precisará determinar a quantidade de loops necessários para iterar no banco de dados de clientes e, em seguida, repassar a tupla “customers” ao método postBatchToMailgun().

Abaixo está um exemplo de iteração no seu banco de dados 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
                                
                            

Configuração do seu aplicativo para receber os webhooks

Depois que você enviar e-mails para seus clientes e eles começarem a abrir e clicar nos seus e-mails incríveis, você precisará capturar os parâmetros enviados com os webhooks. Aqui está um pequeno aplicativo Flask que mostra o básico:

                                

                                    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 exemplo lista especificamente alguns dos parâmetros que podem ser do seu interesse. Você pode encontrar uma lista completa de parâmetros de webhook em nossa documentação. Basta adicionar os que você deseja.

Associação de dados de e-mail aos dados de clientes

Depois que os dados do webhook forem repassados para o aplicativo, é só uma questão de associar o e-mail ao cliente com base na variável account_number e adicionar o ID da campanha ao registro do cliente.

Agora você tem a capacidade de medir o efeito de longo prazo das suas campanhas de e-mail sem ter que depender de cookies persistentes e de outros métodos de rastreamento da web menos sofisticados.

Bons envios!

Mailgunners