top of page

Using Gravity Forms with Pardot on a Multi-Select Field

Form Handlers are a really powerful tool in Pardot because they give you the option of using all kinds of other ways to built and execute a form, and then still collect your data in Pardot.

What makes them challenging, though, is that there are so many different tools to build forms and each one has their own little tricks and quirks.

One popular form creator for Wordpress is Gravity forms. Jenna Molby wrote an excellent summary of how to do basic set up a Gravity Form with a Pardot form handler on her website, the details of which I won't reproduce-- the details are here and they are still accurate as of this writing.

Our concern today is advanced usage of a multi-select field input. I'm going to avoid calling out the field for the moment, because we're going to work backward from Salesforce to describe the use-case.

Sometimes as Pardot admins we don't have control over how the Salesforce team decided to implement fields. One common thing that trips us up is the Salesforce mult-select picklist. This is exactly what it sounds like-- a picklist where you can select more than one element as valid. The marketing application that it's commonly used for is product interest (I am interested in more than one thing).

So you should match it up with the Pardot multi-select dropdown field type, right?

Actually no. And here's why. When a multi-select picklist field in Pardot contains more than one value, it syncs with the Salesforce multi-select picklist as a delimited list of values: item1, item2, item3-- not as three distinct values.

So, depending on how your admins have set up field validation rules, you may get a sync failure (sending a delimited list is not valid), or you will get these flyer values in your data sets containing random strings of delimited results. So in reporting you get these combined items based on the delimited options, as shown in the pie chart.

What to do instead?

If you want to send the individual selections as discrete values to Salesforce, you use the Pardot checkboxes field type synched to the Salesforce multi-select picklist. (Here's how) This allows more than one selection (even multiple selections captured at different points in time) to sync as individual items.

Which brings us to Gravity Forms, and the reason we started with Salesforce. If we're not using the multi-select picklist in Pardot, neither should we use it in Gravity Forms, for the same reasons. Gravity forms will submit a delimited list of values from the multiselect picklist field type to your Pardot Form Handler, even if the field type is checkbox.

So instead, we should use the checkboxes option in Gravity Forms to capture multiple responses. This is the only way to get the discrete data we want over to Salesforce.

But there's another little wrinkle in it as well. We can't just blindly follow the normal formula to construct the URL string of &pardot_field={checkboxes} or we will get the same result of a delimited list. Instead, we must add a url item for each individual checkbox option. Gravity forms allows you to do this in the interface with the drop-down option-- so don't choose the field name, choose each individual item, and make one for each individual option. Simply repeat the Pardot external field name for each option as such: &pardot_field={checkboxes item 1}&pardot_field={checkboxes item 2} and so on.

By doing this, each checkbox shows up in the Pardot checkbox field as an individual option, and will sync to Salesforce's multi-select field as individual items.

This leads us to our bonus form handler tip, which is: you can submit multiple values to the same Pardot field in a single form handler submission. This has other uses beyond the one described here, which I covered in this post on form handler tricks.

So remember: If you want to populate a multi-select picklist in Salesforce: use these field types:

Gravity Form: Checkboxes --> Pardot: Checkbox --> Salesforce: Mult-Select Picklist

One additional note with Gravity Forms. When submitting a field to a Pardot form handler using the URL redirect method, even though Gravity Forms allows a Label and Value option on a field, by default it's sending the Label to Pardot. The value field is ignored. So if your field values on your Pardot checkbox don't match the label on your Gravity form, you must use this workaround to get Gravity Forms to pass the value and not the label:

Instead of this (the default merge field):


use instead:




Andrew Donnan
Andrew Donnan
Dec 13, 2021

Thank you for making this article. Goodness, this was more intricate than I thought it would be.


Oct 01, 2021

Thanks so much for this post, Bill! Although this exact approach does not work with Contact Form 7/CF7, your post helped point me in the right direction. I wanted to share here what I discovered about how to integrate properly with CF7 form (since I couldn't find anything about this anywhere else on the web).

It's mostly the same process to record discrete checkbox values from a CF7 to Pardot Form Handler, with one key difference: you must create separate Pardot External Field Names for each checkbox value, and map the CF7 checkbox values to the corresponding External Field name.

Pardot Form Handler

Create separate/discrete Form Field Mappings for each Checkbox value, but map them all to the same Pardot…

*As of April 2022, Pardot has been renamed Marketing Cloud Account Engagement, as part of Salesforce's effort to organize all the marketing products under the same platform umbrella. "MCAE" is simply the same Pardot we know and love under a new name. The product is temporarily being referred to as "Marketing Cloud Account Engagement powered by Pardot."   

Did you find this article useful?  Buy me a coffee. 🙂

Want more tips? Subscribe and be the first to know of new coffee-worthy content.

Thanks for Subscribing!

Need some help?

Consultations offered on a pay-as-you-go basis by the hour.  Buy hours below and I will schedule a session at your convenience.

bottom of page