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

Form Pre-Fill Feature Upgrade

  • April 4, 2019
  • 142 replies
  • 55076 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.

142 replies

Jared_Eliason1
New Participant
October 18, 2019

#alwaysreadtothebottom thanks, lol, jumped the gun. 

SanfordWhiteman
New Participant
October 17, 2019

My last response literally contains exactly what you're asking!

Jared_Eliason1
New Participant
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?

SanfordWhiteman
New Participant
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.

SanfordWhiteman
New Participant
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.

Ishita_Chawra
New Participant
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
New Participant
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.

Hassan_Ali8
New Participant
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
New Participant
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.

Ishita_Chawra
New Participant
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