Increase Email Response Rates Using Personalization with Custom Object Data

TRI Pointe Group (NYSE:TPH) is a regional homebuilder based out of southern California. The company places a high value on a customer-driven approach to designing their communities based upon a deep understanding of what their homebuyers want and how they live. In order to better serve their customers, information for key interactions, such as property interest, is gathered.

By visiting a property or visiting a community website, prospective homebuyers have two ways to express interest in a home or community. TRI Pointe Group was interested in creating a highly personalized experience to engage their homebuyers, and through the use of custom SFDC objects and the Velocity scripting language in Marketo’s email script tokens, we were able to make this happen for them.

For example, a homebuyer visiting a model home in Arvada, Colorado would receive an email thanking them for visiting the community. This branded email would be sent from, and have the contact information for, the New Home Advisor. Follow up emails could include questions like, “What was your favorite floor plan?” and highlight specific features of the community visited by the homebuyer and other key information about the site visit in order to better understand and serve the needs of the homebuyer.

From a technical perspective, Digital Pi was tasked with finding a way to sync Salesforce (SFDC) custom object data to Marketo, and then access this data on both lead and contact records. While the creation of personalized emails in Marketo is not new, the configuration that enables SFDC custom object to be used was an interesting challenge. One limitation, for example, is that a SFDC object can be synced only to a lead or a contact in Marketo, but not both. The goal was to have various personalized emails that have dynamic data about homes and communities that prospects are interested in. In addition, TRI Pointe Group’s SFDC instance already had multiple related objects and current processes that we had to consider without disturbing.

Let’s dig into the process for using custom objects in Marketo.

Digging in to the process

STEP ONE: Configure SFDC Custom Objects

With the need to access the custom objects on both leads and contacts, we first had to make what we called a “Shell” object related to the Lead. This Shell object would then have copies of the relevant data from the custom objects. This way when synced to Marketo, Marketo would have access to the data from both the lead and the contact records.

We created SFDC triggers to automatically update data on the Shell object whenever it was updated on the main custom object. We also created a backfill process to update all existing leads with the relevant data. You’ll want to do all of this in your SFDC sandbox first and get it all worked out before migrating to your production instance. You’ll also need to work very closely with your SFDC admin and developers to make sure you have this working correctly and ensure that it’s not breaking any existing processes.

STEP TWO: Update SFDC Custom Object sync settings in Marketo

For the most part, syncing SFDC custom objects to Marketo is simple, but there are a few things that must be configured to ensure that Marketo can access everything it needs.

  1. You will first need to disable the SFDC Sync in Marketo. (Admin > Salesforce)
  2. Next, you need to click on the Salesforce Object Sync, and then click the “Refresh Schema” button at the top. This will refresh the schema and all your SFDC object changes will now be visible to Marketo.
  3. After that, you’ll need to select each custom object that you want Marketo to have access to. You click on each object in the list on the right and then the “Enable Sync” button at the top.
    enable sync
  4. This next step is very important. After you sync each object, you must tell Marketo if you want to use any of the fields in triggers. For each object, you click the “Edit Visible Fields” button at the top and then choose the fields that you want to be able to trigger on.
    Edit Visible Fields
  5. Finally, when you’ve configured each of your custom objects, go back and re-enable your SFDC Sync.

STEP THREE: Create Email Script Tokens and Smart Campaigns

Once the custom object information is synced over to Marketo, the email script tokens can be used to insert the custom object information into personalized emails. The trickiest part is that you need to know whether the person is a lead or a contact, and then grab the data from the object related to either the lead or the contact.

For this project, there were many tokens used throughout the emails. The dynamic data, in the form of tokens, included the from and reply-to email addresses, the body content, and the footer. Since Marketo Email Script Tokens all get evaluated in one namespace, it was best evaluate if a record is a lead or contact one time, and then store the values for when that record is processed. The values set for each token can be used in all other email script tokens for the same email.

The Marketo smart campaigns should be straightforward if you’ve configured your SFDC custom objects correctly in the sync. In this project, we triggered a process to execute when a contact is added to the main object in SFDC, or when a lead is added to the Shell object in SFDC.


There were many unknowns at the beginning of the project, but the project went from specification to final testing in less than a month. This approach to Marketo + SFDC Custom Objects + Velocity scripting provides tremendous value into personalization and can make your communication even more meaningful and engaging.

Your marketing technology experts.

At Digital Pi, we use technology to connect revenue to marketing efforts. We fuse marketing strategies, processes, data and applications to make marketing technology solutions work for clients' businesses.

Learn More
Share this resource

Cookies help us keep the site running smoothly and inform some of our advertising, but if you’d like to make adjustments, you can visit our Cookie Notice page for more information.