Personalizing emails in Marketing Cloud Account Engagement (formerly Pardot) can significantly boost engagement, but going beyond default fields into custom data sets adds complexity. One common request from marketing and revenue teams is to personalize using data from Salesforce custom objects – think product start dates, subscription levels, or event registrations.
Unfortunately, Pardot doesn’t natively support merge fields from custom objects. But with the right workaround, it’s entirely possible to bring this data into your outbound communications.
Why Custom Object Personalization Matters
As B2B marketers, we know that personalization is no longer optional – it’s expected. And while Pardot offers solid native functionality with standard Lead, Contact, and Account fields, many B2B buying journeys leave valuable insights tucked away in custom objects. These could be:
- Training or onboarding schedules tied to a product or service
- Subscription tiers or renewal dates
- Project milestones or deliverables
Bringing that data into Pardot emails or landing pages requires a workaround – but one that can deliver truly customized, high-impact experiences.
Two Options for Using Custom Object Data in Pardot HML
Pardot HML (Handlebars Merge Language) lets you dynamically personalize content using field values. The catch: it only supports data found on the Prospect, User, or Account level – not custom objects. To work around this, you need to sync the desired data from the custom object into a Prospect field. There are two primary ways to do this:
Option 1: Use a Formula Field on Lead/Contact
This approach uses Salesforce-native functionality to expose custom object data via a formula field on either the Lead or Contact, which then syncs with a Pardot Prospect custom field.
Here’s how it works:
| Step | Description |
| 1 | Create a formula field on the Lead or Contact object that references the custom object field |
| 2 | Map that formula field to a custom Prospect field in Pardot (text type) |
| 3 | Use the mapped Prospect field in HML merge tags |
For example, if you’re working with a custom object called Subscription that has a Renewal Date field, your formula might look something like:
- Subscription__r.Renewal_Date__c
This pulls the renewal date into a read-only text field on the associated Contact or Lead, which can then be synced with Pardot.
Important Considerations:
- Formula field changes don’t trigger a Pardot sync. Be cautious – updates to formula fields won’t automatically push data into Pardot. Use dynamic lists or CSV exports to verify accuracy before campaign sends.
- Record relationships matter. Make sure the custom object is related only to one parent (Lead or Contact), or you’ll need to segment your list accordingly using the “Prospect CRM status” criteria in Pardot.
- One-to-many relationships create ambiguity. If a Contact has multiple related records, which one should Pardot use? You may need a formula that selects the latest or earliest record for clarity.
Option 2: Use Pardot Custom Objects
This second path works only if you’re using Pardot Advanced Edition or have purchased the custom object add-on. It allows custom object data to be synced directly into Pardot’s data model, albeit with a few limitations.
Here’s how it works:
| Step | Description |
| 1 | Sync the Salesforce custom object with Pardot using the Custom Object feature |
| 2 | Create an Automation Rule in Pardot that checks the value on the custom object |
| 3 | Set the matching Prospect custom field to a defined value based on conditions |
Limitations to Watch:
- Data is read-only in Pardot. You can’t manipulate the value directly in Pardot – only use it as-is or copy it.
- Automation rules require static values. You need to enter specific values in your rule logic. This is workable for picklists or flags, but tedious for dynamic data like dates or free-form text.
- More control, less code. This can shift processing out of Salesforce and reduce load, which helps if you’re bumping up against governor limits.
When to Use This Option:
If you’re working with a limited set of values (like “Bronze”, “Silver”, or “Gold” tiers) and want to reduce reliance on Salesforce Admin bandwidth, the Custom Object method can make sense – especially in environments where efficiency and scalability are critical.
Choosing the Right Path for Your Team
So which should you use – formula fields or custom objects? It depends on your scenario:
| Criteria | Use Formula Field Option | Use Custom Object Option |
| Your Edition | All Pardot editions | Pardot Advanced or with add-on |
| Volume of Data | Low to moderate | High or at scale |
| Data Dynamism | Frequently changing values | Fixed values like tiers or flags |
| Salesforce Load | Acceptable | Needs offloading |
Still unsure? Start with a pilot campaign for a small segment. Monitor sync behavior, data validation, and end-user impact. Once the template is stable, scale it across similar campaigns or programs.
Wrapping Up
Pardot doesn’t make it easy to use custom object data out-of-the-box, but you’ve got solid options. Whether you choose to leverage Salesforce formula fields or Pardot’s custom object feature, the endgame is the same: delivering smarter, more relevant personalization to your prospects.
Need help deciding which strategy fits your data model and campaign goals? We work with B2B teams every day to build scalable personalization in Pardot – get in touch and let’s solve it together.