An emergency workaround for app-𝑛𝑛𝑛𝑛.marketo.com form embeds after next week’s Marketo URL change

I was reluctant to provide a short-term workaround for the notably downplayed major change coming next week to Marketo URLs. But there’s a sense of impending doom that won’t go away, so here we go.

You want to put these two scripts as high as possible in the <head> of all pages, of course replacing pages.example.com in both places with your LP domain:

<script src="//pages.example.com/js/forms2/js/forms2.min.js"></script>
<script>
   "use strict";

   MktoForms2.loadForm = new Proxy(MktoForms2.loadForm, {
      apply(target, thisArg, [instanceURL, ...rest]) {
         return Reflect.apply(target, thisArg, ["//pages.example.com", ...rest]);
      }
   });
</script>

By “as high as possible” I mean literally right after your last <meta> tag if you can. The scripts must run before anything else related to Marketo forms, including GTM (which might inject Marketo form tags).

If you have this in place, you don’t have to worry about finding all the occurrences of the Forms 2.0 library and loadForm() calls throughout your code.

The right thing to do long-term is, of course, find and permanently fix all form embeds and Forms 2.0 API calls that use the old domains. But the “finding” part can be tricky, as can getting the right IT contact to implement the fix.

P.S. I’ll update this post with more info about why the above works, for the JS learners.