Hello,
We're embedding the Marketo forms on our Website and would like to prefill the form for returned/known users. Whats your recommendation for embed form prefill on external site (not on Marketo Landing pages)?
Thanks!
Solved! Go to Solution.
Sandy's prefill solution is the way to go. Here's the link to his blog post where he has explained his form prefill method in detail.
Sandy's prefill solution is the way to go. Here's the link to his blog post where he has explained his form prefill method in detail.
Hi!
I'm working with one of our developers to implement @SanfordWhiteman 's prefill solution and we've run into an issue. The developer does not have access to Community so I'm posting as a proxy. Any help would be appreciated!
------
I followed the instructions closely from the post and am using the updated SimpleDTO2, but have been running into issues.
I set up a Guided Landing page and have the associated DTO with the configured html. However, when I open a Marketo form from the destination site I receive the following error: “Message receive preflight failed, origin: https://uat.example.com and https://pages.e.example.com cannot exchange messages. I realize this is a CORS error but if I visit https://pages.e.example.com directly it re-routes me to another page, so I am unable to set the Headers on that page to allow the origin request. (https://pages.e.example.com is the Marketo landing page CNAME)
Following the instructions in the blog post, I would not expect a CORs error to be occurring. I was hoping you might have an on what I could be doing wrong or potential workarounds I could try? I am not able to create a proxy server to get around CORs.
The configuration I have on my receiving site is below (the teknkl-formsplus-core-1.0.8.js and teknkl-simpledto-2.0.4.js script files both are set in a CDN and appear to be loading correctly):
const DTO = new SimpleDTO({
debug: true,
mode: 'receive',
transport: 'message',
messageSource: 'https://pages.e.example.com',
messageTarget: ['https://uat.example.com'],
dataSrc: 'https://pages.e.example.com/dtp-104.html',
cb: function (instance: any, mktoFields: any) {
MktoForms2.whenReady(function (form: { setValuesCoerced: (arg0: any) => void }) {
form.setValuesCoerced(mktoFields);
});
DTO.cleanup();
},
});
And then in my Marketo instance I have:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>DTP</title>
<script
id="teknkl-FormsPlus-Core-1.x"
src=“https://path_to_CDN_stored/teknkl-formsplus-core-1.0.8.js"
></script>
<script
id="teknkl-SimpleDTO-2.x"
src=“https://path_to_CDN_stored/teknkl-simpledto-2.0.4.js"
></script>
<script
type="text/xml"
class="dto-xml"
data-field-collection="mktoPreFillFields_01"
>
<mktoPreFillFields>
<mktoField inputName="FirstName">{{Lead.First Name}}</mktoField>
<mktoField inputName="LastName">{{Lead.Last Name}}</mktoField>
<mktoField inputName="Email"><!--email_off-->{{Lead.Email Address}}<!--/email_off--></mktoField>
<mktoField inputName="Country">{{Lead.Country}}</mktoField>
<mktoField inputName="State">{{Lead.State}}</mktoField>
<mktoField inputName="Title">{{Lead.Job Title}}</mktoField>
<mktoField inputName="Industry">{{Company.Industry}}</mktoField>
<mktoField inputName="Company">{{Company.Company Name}}</mktoField>
<mktoField inputName="Company">{{Lead.Marketing Consent Date}}</mktoField>
<mktoField inputName="Company">{{Lead.Marketing Consent Reason}}</mktoField>
</mktoPreFillFields>
</script>
<script>
var DTO = new SimpleDTO({
debug: true,
mode: "send",
transport: "message",
messageSource: " https://pages.e.example.com",
messageTarget: ["https://uat.example.com"],
dataSrc: "https://pages.e.example.com/dtp-104.html",
});
DTO.parse("mktoPreFillFields_01");
</script>
</head>
<body></body>
</html>
No CORS headers are necessary for SimpleDTO. Would need to look at the actual page to troubleshoot further.
P.S. If you’re supplying what’s supposed to be a placeholder domain, please use the standard example.com! I edited your post for clarity.