【问题标题】:Marketo REST API to add to leads db. Successful result, but cannot see lead and no confirmation emailMarketo REST API 添加到潜在客户数据库。成功的结果,但看不到潜在客户并且没有确认电子邮件
【发布时间】:2018-09-24 19:57:08
【问题描述】:

我正在使用 Marketo REST API 添加潜在客户。一切似乎都运行良好,但我找不到线索最终的去向。该表单已设置为向提交者发送一封确认电子邮件,但并未发送。

首先,我使用/rest/asset/v1/form/FORMID.json 端点获取表单的数据。接下来,我使用/rest/asset/v1/form/FORMID/fields.json 端点获取所有表单字段。然后我为所有字段呈现自定义 HTML 并将其显示在网站的前端。表单提交是使用 AJAX 完成的,我将数据从 PHP 发送到 Marketo REST API。这一切都很好。

Marketo 在使用已提交的电子邮件地址时返回成功的updated 响应:

stdClass Object
(
    [requestId] => f015#155f21eba78
    [result] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 1035656
                    [status] => updated
                )

        )

    [success] => 1
)

如果是新电子邮件,它会返回成功的created 响应。一切似乎都应该完美运行,但是我找不到提交的内容。

这些提交可能会结束的任何想法,以及为什么它们没有显示为表单中的线索?为什么每次成功提交都应该发送的确认电子邮件没有发送?

【问题讨论】:

  • 您发布到 Marketo REST API 的确切潜在客户字段是什么?另外,到哪个端点?
  • @dferenc 我使用/rest/asset/v1/form/XXXX/fields.json 从 API 获取字段列表,并基于这些字段构建表单。提交表单后,我使用 /rest/v1/leads.json 将这些字段的值发送到 REST API。

标签: php marketo


【解决方案1】:

我相信,表单和表单字段 API 端点的用途完全不同。 这些应该用于管理来自远程系统的表单,而不是帮助编写或呈现表单。

不直接使用这些端点查询表单字段的另一个原因是这些请求也计入您的每日API usage limits。在更大的 Marketo 实例中,这是一种宝贵的资源。

如果您的后端只是接收 AJAX 请求并将值传递到 Sync Leads 端点 (POST /rest/v1/leads.json),我宁愿在客户端使用嵌入式 Marketo 表单。 嵌入代码的html代码是这样的:

<script src="//app-lon06.marketo.com/js/forms2/js/forms2.min.js"></script>
<form id="mktoForm_{{FORM_ID}}"></form>
<script>MktoForms2.loadForm("//app-abc01.marketo.com", "{{MUNCHKIN_ID}}", {{FORM_ID}});</script>

实际上,这也是调试当前进程的好方法。 (如果该表单提交的结果正确显示在您的 Marketo 中,则问题很可能出在后端代码中。)另外,请注意,当以这种方式呈现表单时,提交的数据集将包含一些额外的字段,例如 _mkt_trk和_mktoReferrer,可能会影响处理结果。

至于发布到/rest/v1/leads.json:请求正文中input 数组中表示潜在客户的字段不必匹配任何形式的字段集。其实就像documentation states

请求还必须有一个输入参数,它是一个潜在客户记录数组。 每条潜在客户记录都是一个带有任意数量潜在客户字段的 JSON 对象。记录中包含的键对于该记录应该是唯一的。

说了这么多,现在应该清楚了,为什么将潜在客户推送到/rest/v1/leads.json 端点不会触发Form Fillout 事件。 一种解决方法是使用Push Lead 端点(POST /rest/v1/leads/push.json),您还可以使用它设置programNameprogramStatus 参数。这不仅会创建潜在客户记录,还会将潜在客户与定义的程序相关联。在您的 Marketo 实例中,您唯一需要修改的是您的广告系列的智能列表,该列表现在可以观察表单填写。

还有一点需要注意:不过,所有这些请求都计入您的 API 限制。考虑改用上面提到的嵌入式表单。通过利用javascript API,您还可以设置类似 AJAX 的行为。像这样:

MktoForms2.loadForm("//app-abc01.marketo.com", "{{MUNCHKIN_ID}}", {{FORM_ID}}, function(form) {
    // Add an onSuccess handler
    form.onSuccess(function(values, followUpUrl) {
        // Get the form's jQuery element and hide it
        form.getFormElem().hide();
        // Return false to prevent the submission handler from taking the lead to the follow up url
        return false;
    });
});

【讨论】:

  • 感谢您的详细回复。听起来他们的 API 确实不是为处理您自己的表单提交而设计的。遗憾的是,他们不允许您自定义其嵌入表单的 HTML 输出,因为这是我尝试自己提交表单的唯一原因。现在我正在使用 jQuery 来解析其嵌入表单的 HTML 并重组所有元素。这绝对不理想。
猜你喜欢
  • 1970-01-01
  • 2018-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-15
相关资源
最近更新 更多