Я использую Marketo REST API для добавления потенциальных клиентов. Кажется, что все работает нормально, но я не могу найти, где в конечном итоге приводит. Форма предназначена для отправки отправителю подтверждающего электронного письма, которое не отправляется.
Сначала я получаю данные формы, используя /rest/asset/v1/form/FORMID.json
конечная точка. Затем я получаю все поля формы, используя /rest/asset/v1/form/FORMID/fields.json
конечная точка. Затем я отображаю пользовательский HTML-код для всех полей и отображаю его на интерфейсе веб-сайта. Отправка формы осуществляется с помощью AJAX, и я отправляю данные из PHP в API REST Marketo. Это все отлично работает.
Маркето возвращается успешным updated
ответ при использовании адреса электронной почты, который уже был представлен:
stdClass Object
(
[requestId] => f015#155f21eba78
[result] => Array
(
[0] => stdClass Object
(
[id] => 1035656
[status] => updated
)
)
[success] => 1
)
И если это новое письмо, оно возвращает успешное created
ответ. Кажется, все должно работать идеально, однако я не могу найти материалы.
Любые идеи, где эти представления могут заканчиваться, и почему они не отображаются в виде отрывков из формы? И почему электронное письмо с подтверждением, которое должно быть отправлено для каждой успешной отправки, не отправляется?
Я верю, что конечные точки API Form и Form Fields служат для совершенно другой цели.
Вместо того, чтобы помогать составлять или воспроизводить формы, эти следует использовать для управления формами из удаленных систем.
Еще одна причина, по которой эти конечные точки не используются явно для запроса полей формы, заключается в том, что эти запросы также относятся к вашим ежедневным Ограничения использования API. В большем экземпляре Marketo это ценный ресурс.
В случае, если ваш бэкэнд просто получает запросы AJAX и передает значения Синхронизация ведет конечная точка (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
массив в теле запроса не должен совпадать с набором полей любой формы. На самом деле, как состояние документации
Запрос также должен иметь входной параметр, который представляет собой массив записей о потенциальных клиентах. Каждая ведущая запись представляет собой объект JSON с любым количеством ведущих полей. Ключи, включенные в запись, должны быть уникальными для этой записи.
Сказав все это, теперь должно быть ясно, зачем настаивать на /rest/v1/leads.json
конечная точка не вызывает Form Fillout
событие.
Обходным путем может быть использование Push Lead конечная точка (POST /rest/v1/leads/push.json
) с помощью которого вы также можете установить programName
а также programStatus
параметр. Это не только создаст запись Lead, но также свяжет Lead с определенной программой. В вашем экземпляре Marketo единственное, что вам нужно изменить, — это «умный» список вашей кампании, который теперь отслеживает заполнение формы.
Еще одно примечание: тем не менее, все эти запросы учитываются в пределах вашего API. Попробуйте вместо этого использовать встроенную форму, упомянутую выше. Используя API JavaScript Вы также можете настроить 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;
});
});
Других решений пока нет …