Refreshed and republished on September 3, 2021
This post was originally published on May 29, 2018 and has been revamped and updated for accuracy and comprehensiveness.Want to do something with your Pardot form that is not available in the editor? Try using JavaScript! Enhance your forms by using these 6 advanced Pardot form techniques. Learn how to add text between form fields, how to capture URL parameters in hidden fields and more.
Adding JavaScript to your Pardot forms
Custom JavaScript can be placed within your Pardot forms under Look and Feel > Below Form. Click on the HTML button within the WYSIWYG editor and add in the JavaScript.
1. Add text between form fields
Edit the form field you want to add the text before in the form editor. Click on the advanced tab and add a CSS class with the name “add-text-before”.
Once the class has been added to the form field, you can add the following JS to your form and update the message.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<script type="text/javascript"> function insertBefore(el, referenceNode) { referenceNode.parentNode.insertBefore(el, referenceNode); } var newEl = document.createElement('div'); // replace this line with your message newEl.innerHTML = 'ENTER YOUR TEXT HERE'; var ref = document.querySelector('.add-text-before'); insertBefore(newEl, ref); </script> |
2. Redirect to a thank you page based on field values
This tip is from the Pardot Help Docs, but with a couple updates. The article recommends using JavaScript-encoding for variable tags using {js}. I’ve never had success while using this method. Instead using this JavaScript does the trick.
1 2 3 4 5 6 7 8 9 10 |
<script type="text/javascript"> switch('%%Free_Trial_Live_Demo%%') { case 'Free Trial': document.location='http://www.yoursite.com/thank-you-free-trial/'; break; case 'Live Demo': document.location='http://www.yoursite.com/thank-you-live-demo/'; break; } </script> |
3. Use a hidden field to capture page url
Edit the hidden form field, click on the advanced tab and add a CSS class with the name “get-page-url”.
Insert this JS into your form to capture the page url in the hidden field.
Note: This will not work if you have a iFramed form on a web page.
1 2 3 |
<script> document.querySelector(".get-page-url input").value = window.location.href; </script> |
4. Use a Hidden field to capture page name
Edit the hidden form field, click on the advanced tab and add a CSS class with the name “get-page-name”.
Note: This will not work if you have a iFramed form on a web page.
Insert this JS into your form to capture the page url in the hidden field.
1 2 3 |
<script> document.querySelector(".get-page-name input").value = document.title; </script> |
5. Pass URL parameters to a Pardot form
You can use this script to parse out URL parameters and put them into fields within your Pardot form. In this example, I’m passing utm_source, utm_medium and utm_campaign into hidden form fields.
Learn more about UTM parameters in Pardot in this post
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<script> // Parse the URL function getParameterByName(name) { name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search); return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); } // Give the URL parameters variable names var source = getParameterByName('utm_source'); var medium = getParameterByName('utm_medium'); var campaign = getParameterByName('utm_campaign'); // Put the variable names into the hidden fields in the form. selector should be "p.YOURFIELDNAME input" document.querySelector("p.source input").value = source; document.querySelector("p.medium input").value = medium; document.querySelector("p.campaign input").value = campaign; </script> |
6. Turn your form labels into placeholder text
There’s currently no feature for Pardot forms that allow you to use placeholder text instead of the label text. So, in this tutorial, I will show you how to add a bit of JavaScript to your Pardot forms to use the field labels as placeholders.
Questions?
Send me a tweet @jennamolby, leave a comment below, or book a Peer Chat.
Hi Jenna! Your blog is a real gold mine for a Pardot admin ๐ Thanks for all the work you put in!
I was wondering, would you know how to write a script to validate input for a Phone number field form?
I would want to force prospects to input their phone number as +123456789, and prevent submission if any other format is used.
Thanks!
Hi Jaime, So happy you love my blog! It’s certainly possible to force prospects to input their phone number in a particular format, but I haven’t tried it myself, yet. Cheers, Jenna
Hi Jenna, I was wondering if you could point me to any resources to handle the phone validation that Jaime Lopez commented about. Any help would be appreciated.
Thank you!
Hi Jenna,
thank you for so much for this really useful website.
While I understand how to insert css classes into a Pardot form, would be possible to insert also a URL link of a CSS file inside the form? The for will be embedded into an iframe.
Thank you so much,
Hi Skender, You’re welcome! Yes, you can also insert a URL to link a CSS file within your form. Just make sure that if you are using https:// for your Pardot form that the CSS you use is also https://. Cheers, Jenna
js encoded fields is what broke the dynamic redirect for me as well, removing the js encoding from my field fixed it. Great tips here, will definitely make use of the url parameter hack! Thanks
Jenna,
Thanks for the great info. Any thoughts on how to leverage the ‘Passing URL Parameters to a Form’ within an iframe?
Thx
Brian
Hi Brian, you would need to add a piece of JavaScript to the parent page that will pass the parameters to the iFrame. You would still need to include the JavaScript in this post to your Pardot form. var loc = window.location.toString(),
params = loc.split(‘?’)[1],
iframe = document.getElementById(‘pardot-form’);
iframe.src = iframe.src + ‘?’ + params;โโโโโโโโโโโโโโโโ
For anyone trying to pull through the Page URL when using an iframe and struggling to understand the complicated tech talk on the link above – simply follow Jenna’s (super helpful!) steps above, but use this code in in your javascript instead:
Thank you very much Jenna and Elisha. This solved a big issue for me.
Elisha, that is so helpful. Thank you! How would you modify the JS to pull in the page name with an iFrame form?
Hello, Jenna.
I’ve been using your Landing Pages a lot. I really appreciate that.
About these tips, is it possible to get URL or title of the parent page when I use form as an iframe form?
If it’s impossible, what’s the case to use these scripts to get URL or titles while we could use Completion Action to change the field instead?
Hi Jordan, I haven’t tried it myself, but this article should help you https://www.nczonline.net/blog/2013/04/16/getting-the-url-of-an-iframes-parent/ Cheers, Jenna
How do you go about implementing these features for Pardot Form Handlers?
Have a good now at trying to capture the page URL with an existing form handler but not having much luck.
Hi Mardi, Great question! You would need to figure out what the selector is for your hidden field. It should have an ID or Class which you can use to target the field. Then you would add this script document.querySelector(“.get-page-url input”).value = window.location.href; to your page and replace .get-page-url input with the selector of your hidden field. Cheers, Jenna