IT & Engineering
Verknüpfung Ihrer Kundendaten mit Ihren E-Mail-Daten
Eines der neuesten Schlagworte in der Tech-Branche lautet „Big Data“. Sobald Sie etwas im Internet veröffentlichen, stehen Ihnen (hoffentlich) unzählige Daten zur Auswahl – die Schwierigkeit besteht darin, Daten aus verschiedenen Quellen zu verwertbaren Erkenntnissen zu verknüpfen. Genau dabei soll „Big Data“ helfen … glaube ich zumindest.
In diesem Beitrag zeigen wir Ihnen eine einfache Möglichkeit, E-Mail-Daten mit Ihrer Kundendatenbank zu verknüpfen, damit Sie aussagekräftige Schlüsse daraus ziehen können. Wir sind nicht sicher, ob dies komplex genug ist, um unter den Begriff Big Data zu fallen … vielleicht ist es eher Small Data … wie auch immer, hoffentlich ist es hilfreich.

Die Verknüpfung von E-Mail- und Webanalyse-Daten reicht nicht immer aus
Eine der einfachsten Methoden, E-Mail-Daten mit Kundendaten zu verknüpfen, ist die Verwendung von Links, die von Ihrem Webanalyse-Anbieter generiert wurden. Es ist ziemlich unkompliziert, Query-Strings wie den unten stehenden von Anbietern wie Google Analytics zu generieren und in Ihren E-Mails zu verwenden:
http://www.mystartup.com/?utm_source=newsletter&utm_medium=email&utm_campaign=offer1
Diese bieten sogar praktische URL-Builder an, um den Prozess zu erleichtern. Wenn jemand aus Ihrer Kundschaft auf diese URL klickt, kann Ihr Webanalyse-Anbieter Ihnen mitteilen, wie viele Anmeldungen über Ihre E-Mail generiert wurden.
Es gibt jedoch noch viele weitere Aspekte, die Sie bezüglich Ihrer Kundschaft nachverfolgen möchten, abgesehen von der bloßen Anmeldung. Wenn Sie beispielsweise einen API-basierten Dienst für Entwicklungsteams anbieten, wie Stripe oder Urban Airship, möchten Sie vielleicht wissen, ob Ihr Newsletter die durchschnittlichen API-Aufrufe pro Tag drei Monate nach der Anmeldung erhöht hat. Diese Daten müssen mit Ihrer Kunden- oder Anwendungsdatenbank verknüpft werden und dürfen nicht isoliert in einem separaten Webanalyse-Datenspeicher liegen (da Webanalysen nicht für die Erfassung von API-Aufrufen ausgelegt sind). Query-Strings allein sind also nicht hilfreich.
Es gibt etwas kompliziertere Workarounds, um Kampagnen mit der Nutzerschaft zu verknüpfen, sowie großartige Dienste wie Kiss Metrics genannt, und Mixpanel , die dies erleichtern. Wir empfehlen definitiv, diese Dienste auszuprobieren, wenn Sie Webanalysen professionell betreiben möchten.
Eine weitere einfache Möglichkeit, Ihre E-Mail-Aktivitäten einer bestimmten Person in Ihrer Kundendatenbank zuzuordnen, ist die Verwendung von Mailgun-Webhooks und benutzerdefinierten Variablen.
Benutzerdefinierte E-Mail-Variablen zur Verknüpfung granularer Verhaltensdaten
Jedes Mal, wenn eine Person eine E-Mail öffnet, darauf klickt oder sich davon abmeldet, kann Mailgun Sie über Webhooks darüber informieren. Ein Webhook ist einfach ein HTTP-POST an Ihre App, der auf einer bestimmten Aktion basiert. Diese Aktionen lassen sich im Mailgun-Control-Panel konfigurieren.
Nehmen wir an, Sie möchten nachverfolgen, welche Personen aus Ihrer Kundschaft auf ein bestimmtes Angebot in Ihrem monatlichen Newsletter geklickt haben, damit Sie messen können, ob dieser Newsletter nach drei Monaten zu einem Anstieg der durchschnittlichen API-Aufrufe pro Person geführt hat.
Angesichts der Verbreitung API-basierter Pay-as-you-go-Dienste ist die direkte Verknüpfung von E-Mail-Marketing mit der tatsächlichen Nutzung eine echte Herausforderung. Wer diese löst, kann davon enorm profitieren.
Um dies zu messen, müssen Sie wissen, wer auf welches Angebot geklickt hat (das kann Mailgun Ihnen mitteilen), UND dies mit Ihrer Datenbank verknüpfen, in der Sie die Daten zur API-Nutzung Ihrer Kundschaft speichern. Und so funktioniert es.
Einrichtung von Webhooks
Zunächst müssen Sie Mailgun so einrichten, dass Informationen an Sie weitergeleitet werden, wenn jemand auf einen Link in einer Ihrer E-Mails klickt. Dies erledigen Sie im Mailgun-Control-Panel auf der Registerkarte „Tracking“:
Wenn Mailgun den Webhook per POST sendet, erhalten Sie Daten zum Klick-Ereignis, einschließlich der Empfängeradresse, der angeklickten URL und eines Zeitstempels (siehe Dokumentation für eine vollständige Liste der Parameter für Klick-Webhooks). In einigen Fällen reicht es aus, einfach „recipient“ als eindeutigen Wert zu verwenden, um diese E-Mail-Aktivität mit Ihrer Kundendatenbank abzugleichen und zu speichern, wer auf Ihre E-Mail geklickt hat – aber nicht immer. Bei komplexen Datenmodellen, beispielsweise wenn eine Person mehrere Konten besitzt oder sich mehrere Personen ein Konto teilen, müssen Sie eine detailliertere, eindeutige ID angeben.
Benutzerdefinierte Variablen sind die Lösung.
Benutzerdefinierte Variablen einrichten
Mailgun bietet Ihnen die Möglichkeit, für jede gesendete E-Mail benutzerdefinierte Variablen festzulegen. Sie können sich diese Variablen als eindeutige Metadaten auf Nachrichtenebene vorstellen. Wenn jemand auf Ihre E-Mail klickt, werden Ihnen diese benutzerdefinierten Variablen zusammen mit den anderen Parametern im Webhook übermittelt.
In diesem Beispiel möchten wir eine E-Mail-Adresse anhand der Account Number (Kontonummer) wieder ihrem Konto zuordnen. Darüber hinaus möchten wir die E-Mail-Kampagnen-ID übergeben, um zu testen, welche Kampagne bei der Steigerung der durchschnittlichen API-Nutzung effektiver war.
Custom-Variables: {"name": "Awesome Customer", "account_number": "12345", "email_campaign_id": "30 Day Follow-up"}rn
Ihre E-Mail bereitstellen
Hoffentlich ist Ihr Unternehmen erfolgreich und verfügt über eine große Kundschaft. Wenn Ihr Unternehmen tatsächlich erfolgreich ist, liegt das wahrscheinlich daran, dass Sie datengesteuert arbeiten und stets A/B-Tests für verschiedene Kampagnen durchführen. Dies kann zu vielen Permutationen führen.
Kein Problem – so stellen Sie Ihre E-Mail mit einem einfachen kleinen Skript bereit, das die Zieladressen und deren benutzerdefinierte Daten im Batch verarbeitet:
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
Im obigen Beispielcode erwartet die Methode postBatchToMailgun() maximal 1.000 Zeilen aus Ihrer Datenbank. Sie müssen die Anzahl der Schleifen ermitteln, die erforderlich sind, um Ihre Kundendatenbank zu durchlaufen, und dann das Tuple „customers“ an die Methode postBatchToMailgun() übergeben.
Im Folgenden finden Sie ein Beispiel für die Iteration durch Ihre Kundendatenbank.
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
Ihre App für den Empfang von Webhooks einrichten
Sobald Sie Ihre Kundschaft per E-Mail kontaktiert haben und diese beginnt, Ihre herausragenden E-Mails zu öffnen und darauf zu klicken, müssen Sie die mit den Webhooks gesendeten Parameter erfassen. Hier ist eine kleine Flask-App, die Ihnen die Grundlagen zeigt:
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
Dieses Beispiel listet speziell einige der Parameter auf, die für Sie von Interesse sein könnten. Sie finden eine vollständige Liste der Webhook-Parameter in unserer Dokumentation. Fügen Sie einfach die gewünschten Parameter hinzu.
E-Mail-Daten mit Kundendaten abgleichen
Sobald die Webhook-Daten an die Anwendung übergeben wurden, geht es lediglich darum, die E-Mail anhand der Variablen account_number der entsprechenden Person zuzuordnen und die Kampagnen-ID zum Kundendatensatz hinzuzufügen.
Nun können Sie die langfristige Wirkung Ihrer E-Mail-Kampagnen messen, ohne auf persistente Cookies und andere, weniger ausgereifte Methoden zum Web-Tracking angewiesen zu sein.
Viel Erfolg beim E-Mail-Versand.
Ihr Mailgun-Team