How to Maximize Pardot Dynamic Content for Personalization

Share this article...

Dynamic content is how you can use Pardot to personalize marketing assets such as emails, landing pages, forms, and your website.

Why use dynamic content? From a basic standpoint, you can improve your click-through rates by providing suggested content based on known or unknown prospect information. Your conversion rates can improve with just the right kind of dynamic content placement, whether it’s above a form, below a form, or on a landing page. You can incentivize list subscriptions through targeting interests, in other words, being able to figure out what might interest one prospect over another and prompting them to subscribe to different lists.


When I’m working with clients who want to use Pardot to its full capabilities, they always ask how they can best use dynamic content. Through the process, we’ll run into some “limitations”. These 4 limitations I see often are some that you have maybe run into, or could run into in the future. Let’s take a deeper dive and figure out how to possibly overcome them to ultimately not look at them as a limitation, but as just a unique way to build your Pardot org.

This talk was originally broadcast at the London Marketers (Pardot) Group. You will find the recording below, with time stamps included in the post so that you can follow along.

Dynamic Content Rules and Limitations

  1. Only One Prospect Field: when creating dynamic content, you can only use one prospect field at a time to base the variations on.
  2. No Custom Object Data: you can’t use custom object data directly from the object in dynamic content.
  3. No ‘Is Empty’ Option: you’re unable to set a variation using “is empty” or ‘is blank’. So when you’re specifying a dynamic content variation, actual field values are required.
  4. 25 variation limit: the number of variations is limited to 25 (26 if you count the default value).

1. Only One Prospect Field

@ 04:36

As dynamic content is based on one prospect field, when we’re creating the variations, there’s only one field we can use.

So how do we solve for this? There’s a creative, unique way to get around the one field limitation, and by doing so, base dynamic content on multiple field values.

You have an unlimited amount of automation rules and custom prospect fields that you can create in Pardot – so having these at your disposal is kind of your best friend.

Say you have multiple field values in existing fields, by creating a new field in Pardot and using automation rules, you can combine the values from the existing fields into one, and using that new field as the basis for the dynamic content.

Maybe it’s not about fields. Maybe it’s the fact that a prospect belongs to a specific list, or they’ve completed a certain form and they have a piece of valuable information that you want to use. All you need is an automation rule to populate that new field.

I have a couple of examples we can walk through.

In this first example, I matched states to a specific US region, and then I set up an automation rule to match for each region. In this use case, they weren’t using regions or territories across the organisation but marketing wanted to use that information. So I populated each of the US regions based on the state, here’s the automation rule that was populating these regions (right-hand side):

Now a slightly more complex example. We want to build dynamic content off of the region field value. Let’s say have two prospects, one has profile X and they live in the Northeast region vs. whereas the other has a profile of Y in a different region and you want to send them two different pieces of dynamic content. Maybe given how your profiles are currently structured, this isn’t a significant enough use case for you to create new profiles that align with this region criteria.

We already have the region field populated, so take the same approach as the previous example – use automation rules to build out that new field variation. I’m combining where the profile is X and the region is Northeast so that I can populate the new field value of “Northeast profile X”. You can see the different variations that we can use on the right-hand side in the image above.

2. No Custom Object Data

@ 07:58

When you go to create dynamic content you can select default prospect fields or custom prospect fields. There’s no sign of custom object fields!

So how do we solve for this? This is an interesting solution. You may know in Pardot that you can pull custom object data directly from Salesforce, but it’s a one-way sync. The rule of thumb is, as long as you can put that data into a field on the prospect record, then you can use it in Pardot features, including dynamic content.

There are two ways to approach this:

Option 1:

In Salesforce, create a formula field on the lead or contact object that then pulls that data from the custom object. Map that formula field to a prospect custom field in Pardot.

Here’s an example where we want to use the contract status field from the custom contract object. In Salesforce, I created a text formula field on the contact record to show the contract status picklist field as a text field. Then in Pardot, I created a field to hold this information which can then be used for the dynamic content.

A word of advice: changes to formula fields do not trigger syncs between Pardot and Salesforce! If you decide to use this method be cognizant of your data and how it’s being updated, and running a check before sending an email. Also, what are the data rules for that field? In this use case, we’re talking about contract status – what if you have more than one contract status related to a specific individual? Know what’s your source of truth for updating that field.

Option 2:

Or, you could pull in your custom object data into Pardot and then transform it in Pardot using automation rules to populate a field value. Although, I think the first option is much cleaner!

3. No ‘Is Empty’ Option:


I think this third limitation is my favorite. You’re unable to set a variation using “is empty” or ‘is blank’. So when you’re specifying a dynamic content variation, actual field values are required.

In these two screenshots, we have a score as the dynamic content field. You have:

  • is,
  • is between,
  • is greater than,
  • “contains” (when it’s a dropdown field)


Nowhere is there an “Is empty” option.

So how do we solve for this? It’s as simple as going into the admin set up for that specific dropdown field and making sure that you have the blank value selected:

Even if you add that blank value on a form, and it’s a required field, Pardot still considers it to be an empty value. Pardot will kick back an error, asking a prospect to pick a different option.

4. 25 Variation Limit

@ 12:38

The number of variations is to 25 (26 if you count the default value). Hopefully it will be increased one day because I know this is a popular topic!

What if you need more than 25 variations? Or, what if your personalization is split between multiple dynamic contents and you want to make sure that you have accounted for all scenarios and data combinations?

If you have HML enabled in your Pardot org, that’s the first step! From there, you can leverage the IF/ELSE statements that HML opens up to you. And just like that, you will be able to utilize more values than that 25 limit.

I kept this example short and sweet. It’s a dynamic sentence that says, thank you for your interest in [blank]. There are two groups I have here: group A and group B, where we have collected their product interest, let’s just say ‘product A’ and ‘product B’. The default text is our company to have a default text if we don’t know their product interest value.

When placing the dynamic content in an email, for example, you’re going to add your dynamic content strings, followed by an IF/ELSE statement that contains the field you from the dynamic content which in this case, is the recipient program field.

Then you’ll want to place the dynamic text you wish to appear in case neither dynamic content matches, which as we said, is our company. This means that we have something there rather than showing a blank space. Remember to end that HML statement with a closing IF.

One caveat for the statement is to make sure that you have the string formatted in this order, since placing the dynamic content inside of HML, IF won’t always consistently work.

Here’s the full example.

  • If the prospect matches group A it would say: “thank you for your interest in mergers and acquisitions.
  • If it matches group B it would say: “thank you for your interest in wealth management”.

If it matches neither: “thank you for your interest in [company].

Dynamic Content Best Practices

When building any dynamic content always keep best practices in mind.

1. Have a strategy:

The number one priority! Ask yourself questions like: what’s the end goal for the content? What do you wish to achieve with it? Where will you use it?

2. Order your dynamic content:

Think from the most restricted to the least. In your list of variations, Pardot will select the variation it first matches with. Whether it’s in one block or multiple strings, you need to ensure that you’re providing the most specific, targeted variation.

3. Keeping variations simple:

So that you know when your dynamic content might need to be updated. It’s best to put content that has some longevity, and if not, when would it need to be updated?

4. Content over styling:

When placing dynamic content into an email, landing page, etc., the content will adjust itself to the styling of the page. So focus more so on the content itself and less so the styling. Finally, only use HTML or text when developing variations.


If you want to use dynamic content to its full capabilities, being aware of the “limitations” will mean that you can plan accordingly and extend dynamic content to your needs. Ultimately, you will begin to not look at them as a limitation, but as just a unique way to build your Pardot org.

This talk was originally broadcast at the London Marketers (Pardot) Group, listen to the recording here.



Leave a Reply