如何将 Google Analytics 用于 Mandrill Python API

Posted

技术标签:

【中文标题】如何将 Google Analytics 用于 Mandrill Python API【英文标题】:How to use Google Analytics to the Mandrill Python API 【发布时间】:2015-02-16 17:16:09 【问题描述】:

我无法通过 Mandrill Python API 使用 Google Analytics 广告系列成功设置电子邮件跟踪。我目前有以下代码,但有什么我遗漏的吗?在 Google Analytics 方面,我只是将域添加到我的 Google Analytics 帐户中。

这是我的 Mandrill API 调用代码:

提前谢谢你。

import os
import mandrill

MANDRILL_CLIENT = mandrill.Mandrill(os.environ['MANDRILL_API_KEY'])
DEFAULT_FROM_EMAIL = 'from@example.com'  #purposely anonymize
DEFAULT_FROM_NAME = 'Aaron'

# html / TEXT - fields may be variable
DATA_FILE = 'data.csv'
HTML = 'variable.html'
TEXT = 'variable.txt'

def send(email):
    """
    `email` is an object with attr:
        to - email address to send to
        name - name of person
    """
    with open(HTML,'r') as html:
        with open(TEXT, 'r') as text:
            try:
                message = 'attachments': [],
                 'auto_html': None,
                 'auto_text': None,
                 'bcc_address': None,
                 'from_email': DEFAULT_FROM_EMAIL,
                 'from_name': DEFAULT_FROM_NAME,
                 'global_merge_vars': email.merge_vars(),
                 'merge_vars': [],
                 'google_analytics_domains': ['http://www.example.com'],  # purposely anonymize as example.com
                 'google_analytics_campaign': 'my_email',
                 'headers': 'Reply-To': DEFAULT_FROM_EMAIL,
                 'html': str(html.read()),
                 'images': [],
                 'important': False,
                 'inline_css': None,
                 'merge': True,
                 'merge_language': 'mailchimp',
                 'metadata': 'website': 'hardrockhotel.com',
                 'preserve_recipients': None,
                 'recipient_metadata': [],
                 'return_path_domain': None,
                 'signing_domain': None,
                 'subaccount': None,
                 'subject': 'example subject',
                 'tags': ['password-resets'],
                 'text': str(text.read()),
                 'to': ['email': email.to,
                         'name': email.name,
                         'type': 'to'],
                 'track_clicks': True,
                 'track_opens': True,
                 'tracking_domain': True,
                 'url_strip_qs': None,
                 'view_content_link': None
                result = MANDRILL_CLIENT.messages.send(message=message, async=False, ip_pool='Main Pool')

            except mandrill.Error, e:
                # Mandrill errors are thrown as exceptions
                print 'A mandrill error occurred: %s - %s' % (e.__class__, e)
                # A mandrill error occurred: <class 'mandrill.UnknownSubaccountError'> - No subaccount exists with the id 'customer-123'    
                raise


def get_record_as_dict(zipped):
    return k:v for k,v in zipped


class EmailRcpt(object):
    """ Email Recipient Object for each record being read in from the DATA_FILE. """
    def __init__(self, zipped):
        for k, v in zipped:
            setattr(self, k, v)

    def merge_vars(self):
        return ['name': k, 'content': v for k,v in self.__dict__.iteritems()]


def main():
    with open(DATA_FILE,'r') as data:
        header = data.readline().replace('\n', '').split(',')

        for row in data:
            row = row.split(',')
            zipped = zip(header, row)
            email_rcpt = EmailRcpt(zipped)
            send(email_rcpt)

if __name__ == '__main__':
    main()

编辑:

我已添加此代码:

<img src="http://www.google-analytics.com/collect?v=1&amp;tid=UA-57258906-1&amp;cid=CLIENT_ID_NUMBER&amp;t=event&amp;ec=email&amp;ea=open&amp;el=recipient_id&amp;cs=newsletter&amp;cm=email&amp;cn=Campaign_image1" >

根据这篇文章:

http://dyn.com/blog/tracking-email-opens-via-google-analytics/

在我的 Mandrill 电子邮件底部,但我仍然遇到问题,并且在我的 Google Analytics(分析)帐户下看不到任何内容。还有什么我做错了吗?

谢谢

【问题讨论】:

【参考方案1】:

首先,您是否看到将 Google 参数添加到您的 Mandrill 电子邮件中的链接?您可以向自己发送一个包含指向您的域的链接的测试,然后查看重定向/链接是否将您带到 yourdomain.com?utm_campaign... 类型的链接,并附加了 Google Analytics 参数。这将确认问题出在您的 API 调用/Mandrill 代码还是跟踪。

查看 API 调用,您在 google_analytics_domains 参数中传递的不仅仅是一个域 - 它还有协议,应该省略。因此生成的域部分应如下所示:

... 'google_analytics_domains': ['www.example.com'], # purposely anonymize as example.com ...

您还需要确保在电子邮件中包含您链接到的任何/所有子域,因为 Mandrill 严格应用 GA 参数,因为没有 GA 跟踪代码的站点/页面可能会在它们不知道如何处理查询字符串。

确认链接已正确添加参数后,请确保链接到的页面上有 GA 跟踪代码,以便 Google 对其进行跟踪。 Google 有时会在跟踪/显示数据方面出现延迟,因此如果您已确认参数存在,并且页面已配置为跟踪它们,您可能还想给它一点时间在 GA 中显示仪表板/数据。

【讨论】:

Kaitlin-Mandrill,你能检查我上面的“编辑”吗?我补充说,但我仍然无法让它工作。谢谢。 您是否要跟踪打开或点击?如果打开,则需要在电子邮件程序中启用图像,因为大多数默认情况下禁用图像/不会加载它们。除此之外,如果您仍然看到跟踪 clicks 的问题,那么您添加的代码将不会产生任何影响,因为这仅用于跟踪打开。您的原始代码中仍然包含http://,它不能用于自动添加 GA 跟踪参数。 只有域(无协议等)对我有用;谢谢@凯特琳。不确定Python,但php有一个方便的功能来拉主机/域:php.net/manual/en/function.parse-url.php

以上是关于如何将 Google Analytics 用于 Mandrill Python API的主要内容,如果未能解决你的问题,请参考以下文章

无法将类型“NSMutableDictionary”的值转换为强制类型“[NSObject: AnyObject]”以用于 google ios Analytics

用于私有 Intranet 应用程序的 Google Analytics

html 用于Gravity Forms提交的虚拟网页浏览的Google Analytics跟踪代码,不会将用户发送到新网页。

如何以准确和用户友好的方式计算与Google Analytics(分析)的传出链接?

如何动态加载 Google Analytics JavaScript?

BigQuery 中用于 Google Analytics 数据的标准 SQL 还是旧版 SQL?