Form Pre-Fill Feature Upgrade | Community
Skip to main content
Roxann_McGlump1
Level 5
April 4, 2019

Form Pre-Fill Feature Upgrade

  • April 4, 2019
  • 142 replies
  • 55124 views

With the evolving best practices and awareness around data privacy, Marketo will be upgrading how we handle form pre-fill.

What change is being made?

Starting April 24, 2019, Marketo will only pre-fill form fields if the URL used to navigate to the Marketo landing page contains a valid mkt_tok URL parameter value (which occurs when users click tracked links in Marketo emails). What that means is, any time a person is viewing a Marketo landing page with a form, the URL being used must contain the mkt_tok token in the query string, otherwise the form on that landing page will not be pre-filled. If the URL in the browser window does have a valid mkt_tok tracking token, then the form within the page will pre-fill as expected with data corresponding to the person record associated with that mkt_tok.

Also note that if you are embedding Marketo Landing Pages within other web pages using an <iframe>, the mkt_tok would need to be passed from the parent page to the <iframe> URL if you intend for form prefill to work within the <iframe>

​How did it work before?

Previously, Marketo landing pages would rely on Munchkin tracking cookies to identify known person records, and forms would pre-fill based on that cookie. Form pre-fill did not require being linked to a Marketo landing page from a tracked email link.

Why is this changing?

This upgrade is being made to provide a more consistent and more secure experience with Marketo’s forms. We have identified that, in the past, people have experienced scenarios where data pre-filled into a form didn’t always correspond with the actual person viewing the page. For example, people using a shared computer or those who may have been cookied incorrectly by clicking through a forwarded email, could end up viewing incorrect data associated with a different person.

To provide a more consistent customer experience, and as a security enhancement, Marketo is upgrading the conditions under which the form pre-fill will display known customer information. In short, pre-fill will only work when users clickthrough links in Marketo emails, demonstrating that they have ownership of the email address associated with the known person record. Below is a list of different scenarios and how form pre-fill will work moving forward.

Please note, these changes to form pre-fill will not affect any other functionality of Marketo Forms, including the progressive profiling feature.

ScenarioWill the form pre-fill?Notes
Clicking a tracked link in a Marketo email to a Marketo landing page with a form which has pre-fill enabledYesThe email link must have mkt_tok enabled. Links that are not tracked or that have mkt_tok disabled will not work.
Navigating directly to a Marketo landing page with a form which has pre-fill enabledNoA direct link to the landing page will not have the mkt_tok present in the HTTP request.
Refreshing a Marketo landing page with a form which has pre-fill enabledNoThe mkt_tok is stripped from the URL after Marketo Landing Pages load so refreshing the page will not include the mkt_tok in the URL. As a result, pre-fill will not work.
Clicking a link in a sample email to a Marketo landing page with a form which has pre-fill enabledNoThe sample email will not have a valid mkt_tok attached to the link and so will not pre-fill the form. If you wish to test form pre-fill you will need to use a real email from a Marketo campaign.

Navigating to a non-Marketo page that includes an embedded Marketo form which has pre-fill enabled

NoThis behavior does not change with the upgrade. Pre-fill has never been supported for Marketo forms that are embedded on non-Marketo pages.
Navigating to a non-Marketo page that includes an <iframe> pointing to a Marketo Landing Page that includes a form with pre-fill enabledWith custom implementationThe form within the Marketo Landing Page that is being loaded in the <iframe> will pre-fill if the mkt_tok value from the original HTTP request is passed along to the <iframe> URL
Visiting a Marketo page with a mkt_tok that is not associated with the same person record as an existing Marketo Munchkin cookie currently stored on the browserNoThis will prevent the wrong person’s information from being displayed in cases where a computer is shared, or an email with a mkt_tok tracked link is forwarded to another person that may already be cookied as a known person in your database.
Copying a Marketo tracked link from an email and sharing/pasting it externally (email, blog, chat, social media post, etc.) that enables another individual to click the tracked linkYesThe tracked link in a Marketo email will redirect to a URL with the mkt_tok included, so anyone clicking this link will reach a page and see pre-fill data associated with the known person record from the “to” line of the email.
This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.

142 replies

SanfordWhiteman
Level 10
September 5, 2019

C'mon man. If you can't mention it due to Community rules, you're still mentioning it.

Jay_Jiang
Level 10
September 5, 2019

with some javascript you can append the previous page's form values to the URL and the current page can pre-fill using the parameters found in the url

Ishita_Chawra
September 19, 2019

Hi all, 

Has anyone been able to successfully implement the below? if yes, would be really helpful if you could share your working. 

"Also note that if you are embedding Marketo Landing Pages within other web pages using an <iframe>, the mkt_tok would need to be passed from the parent page to the <iframe> URL if you intend for form prefill to work within the <iframe>"

Thanks, 

Ishita

@Sanford Whiteman

SanfordWhiteman
Level 10
September 19, 2019

Of course, nothing hard about it. Add the mkt_tok query param to the IFRAME's src.  Naturally you would want to dynamically inject the IFRAME in this case, otherwise you'd end up reloading the contents of the IFRAME when you change the src, which is a bad look.

Hassan_Ali8
September 19, 2019

Hi All,

I know this upgrade prevents form pre-fill with sender details when an email is forwarded (to a friend etc). But what I have noticed that the pre-fill does not happen only when the person who receives the forwarded email is already cookied on their browser. During testing I found out if the person who received the email (i..e email is forwarded to them) is not cookied on their browser they will still see the sender details in the form. Is there anyone who has come across this scenario and solved it?

Thanks

Hassan

SanfordWhiteman
Level 10
September 19, 2019

There's no way to solve that, because the "correct" recipient cannot be distinguished from the eventual recipient.

The upgrade isn't intended to stop Pre-Fill when the email is forwarded to a brand new person, that's not the goal nor could it be.

Ishita_Chawra
September 19, 2019

Thanks, @Sanford Whiteman for a quick response. 

I'm sure it is simple but would you be having any document or steps on how to add the query param?

I'm not comfortable understanding sources or the query param, it would be helpful if there is a document that I can follow. 

Appreciate your help!

Ishita

SanfordWhiteman
Level 10
September 24, 2019

No solution is possible. If I redirect an email to you, the links do not change. And if neither of us has clicked before, we are indistinguishable.

SanfordWhiteman
Level 10
September 25, 2019
I'm sure it is simple but would you be having any document or steps on how to add the query param?

If you normally have a static IFRAME like so:

<div class="iframe-container">
<iframe src="https://pages.example.com/lp.html"></iframe>
</div>‍‍‍

Then you instead inject the IFRAME dynamically, after copying the querystring (a.k.a. search) from the main document:

<div class="iframe-container">
</div>
<script>
(function(){
  var lpContainer = document.querySelector(".iframe-container"),
      lpIFrame = document.createElement("iframe"),
      lpIFrameLoc = document.createElement("a");

  lpIFrameLoc.href = "https://pages.example.com/lp.html";
  lpIFrameLoc.search = document.location.search;
  lpIFrame.src = lpIFrameLoc.href;
  lpContainer.appendChild(lpIFrame);
})();
</script>
‍‍‍‍‍‍‍‍‍‍‍‍‍‍

The blog comments here are really unfriendly to read though, you should open a new thread if you have more questions about this.

Jared_Eliason1
Level 2
October 17, 2019

The form within the Marketo Landing Page that is being loaded in the <iframe> will pre-fill if the mkt_tok value from the original HTTP request is passed along to the <iframe> URL

How is this (pass original HTTP request to the iframe URL) accomplished? Would appreciate more detail or a Stack Overflow link that provides a solution. Anyone aware of a Wordpress plugin that makes it easy?