Marketo REST API添加到销售线索数据库。成功的结果,但看不到潜在客户,也没有确认电子邮件

时间:2018-09-24 19:57:09

标签: php marketo

我正在使用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响应。一切似乎都应该工作正常,但是我找不到提交的内容。

有什么想法可以解决这些提交的内容,为什么不将其显示为表单的线索?为何没有发送应该为每次成功提交发送的确认电子邮件?

1 个答案:

答案 0 :(得分:2)

我相信,Form和Form Fields 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中,则问题很可能出在后端代码中。)此外,请注意,以这种方式呈现表单时,提交的数据集将包含一些其他字段,例如< em> _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;
    });
});