首页 > 解决方案 > Marketo REST API 添加到潜在客户数据库。成功的结果,但看不到潜在客户并且没有确认电子邮件

问题描述

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

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

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

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

        )

    [success] => 1
)

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

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

标签: phpmarketo

解决方案


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

不直接使用这些端点查询表单字段的另一个原因是这些请求也计入您的每日API 使用限制。在更大的 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,这可能会影响处理的结果。

至于posting to /rest/v1/leads.json:请求正文中表示数组中潜在客户的字段input不必匹配任何形式的字段集。事实上,正如文档所述

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

说了这么多,现在应该清楚了,为什么将线索推送到/rest/v1/leads.json端点不会触发Form Fillout事件。一种解决方法是使用Push Lead端点 ( POST /rest/v1/leads/push.json),您还可以使用它设置 aprogramNameprogramStatus参数。这不仅会创建潜在客户记录,还会将潜在客户与定义的程序相关联。在您的 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;
    });
});

推荐阅读