Marketing automation

How to Update Marketing Personas Using Salesforce Flow

It’s very common for sales and marketing teams to leverage title-based “personas” to influence their activities. Knowing who you are speaking to can radically alter the message content, type, and frequency needed to progress the buying process. In this post, we’ll address why and how to update marketing persona fields in Salesforce using Flow to assist sales and marketing.

Why Use Flow to Update Marketing Personas?

Let’s start with a very simple question. Why flow? The answer is really based on where your data lives and who needs access to it. I’ve used Engagement Studio in Account Engagement to update persona values in the past, but what happens if the prospect is not in Account Engagement? That’s right — no persona will be updated.

This solution accounts for the fact that all Salesforce data might not be syncing to Account Engagement (or Marketing Cloud Engagement) and that sales still needs persona values. 

Step 1 – Understand Your Buyers and Influencers

Before we can classify records, we first need to understand who is buying from us, who is influential in the purchase decision, and who is not (this is just as important). This is best achieved by analyzing data and speaking to your sales team.

Analyze the data

Create reports based on closed won opportunities and look at the contact roles for job titles that stand out. Odds are there will be clear winners – titles that appear with greater frequency. It’s also likely that you’ll see a mix of the people who actually use your product and a level above them (based on the purchasing authority needed to complete the transaction).

Talk to sales

Chat with some of the top sales representatives to find out where they are having success. Are there certain leads that they cherry-pick based on job titles? Are there certain leads that they deprioritize based on the same criteria? 

Step 2 – Group your data

Now that we know what titles we should be going after (and those that we should avoid), we need to group them into “Persona” (think of these as containers that hold records with similar/related titles). These are the values that we will be populating from our flow and will be used in future segmentation.

It’s important to create values for those that you want to target and those that you do not. An exclusion persona can be just as valuable as a target persona.

Target Personas

Records that are buying from you or are key influencers in the purchase process.

Exclusion Personas

Records that are in your system that do not buy from you and should not be included in campaigns.

  • Examples could include: Marketing, Sales, Students, and Human Resources to name a few.  

Once you have your target and exclusion persona values defined, create custom “Persona” fields (picklist) on the lead and contact objects. I like using global picklists when creating picklists with the same values between objects. Global picklists speed the setup, are great for ensuring consistency, and make maintenance a breeze (should more values need to be added in the future).

Don’t forget to: 

  • Use the same API name on both objects when creating custom fields (this is critical if you want to map the fields back to Account Engagement).
  • Map the lead field to the contact field on conversion.

Example: Global Picklist Value Set

Step 3 – Determine Keywords

Now that we know what titles we should be going after (and those that we should avoid), and we’ve defined the groups that we would like to use for categorization, we need to identify keywords that can be used to query the records (actually – we’ll be using them in formulas). It would be great if titles were standardized, but they are not. Based on this, we are going to look for common factors.

Example: Marketing

Here are some common marketing titles. It would be great if “marketing” was included in all of them, but it’s not. Therefore, we’re going to use keywords like: marketing, brand manager, campaign, content, media relations, product research, SEM, and SEO in our formula to make sure that we properly tag our records.

  • Brand manager
  • Campaign manager
  • Channel marketing director
  • Chief marketing officer
  • Content marketing manager
  • Content specialist
  • Digital marketing manager
  • Director of email marketing
  • Internet marketing specialist
  • Media relations coordinator
  • Product research analyst
  • SEM manager
  • SEO specialist
  • Web marketing manager

Step 4 – Create the Flow (In Sandbox)

We’re going to use a record-triggered flow to update our persona values. The flow will automatically update the persona value when the title field is updated. Since contacts and leads are distinct objects, a flow will need to be created for each object.

Here’s an example of what a very basic flow would look like. This flow is just updating the value to be Marketing, Human Resources, or Other. A full version of this flow would contain many more paths. 

Configure Start

This flow is based on the lead object and is triggered when a record is created or updated. Since we don’t want to trigger the flow whenever a lead is updated, we’re using a formula to set the entry conditions. We want the flow to run only when new leads are created (and the title is not blank) or the title field of existing leads is updated to a non-blank value.

Finally, the flow will be optimized for Fast Field Updates, since we are updating fields on the same object.

Create Persona Formulas

This is probably the hardest part of this process. We are going to need to create formulas for each of our persona groups using the keywords that we’ve already defined. It’s important to note that formulas are case-sensitive by default. This is good in some cases but could cause records to be missed in other situations. Fortunately, we can address this as well.

Sample Formula 1 

This formula selects the marketing keywords that we identified, but it’s case-sensitive. It would evaluate “True” for a lead with the title “digital marketing manager”, but would not for the title “Digital Marketing Manager”.


  /* Title contains any of these title strings */ 

  CONTAINS({!$Record.Title}, “marketing”), 

  CONTAINS({!$Record.Title}, “brand manager”), 

  CONTAINS({!$Record.Title}, “campaign”), 

  CONTAINS({!$Record.Title}, “content”), 

  CONTAINS({!$Record.Title}, “Content marketing manager”), 

  CONTAINS({!$Record.Title}, “media relations”), 

  CONTAINS({!$Record.Title}, “product research”), 

  CONTAINS({!$Record.Title}, “SEM”), 

  CONTAINS({!$Record.Title}, “SEO”) 


Sample Formula 2 

This updated formula evaluates the same keywords that were identified but addresses the case sensitivity issue. Here, we’ve used a function to convert the titles to lowercase and then compared them to a lowercase value. This formula would evaluate “True” for the titles “digital marketing manager”, “Digital Marketing Manager”, or “DIGITAL MARKETING MANAGER”.


    /* Title contains any of these title strings */

    CONTAINS(LOWER({!$Record.Title}), “marketing”),

    CONTAINS(LOWER({!$Record.Title}), “brand manager”),

    CONTAINS(LOWER({!$Record.Title}), “campaign”),

    CONTAINS(LOWER({!$Record.Title}), “content”),

    CONTAINS(LOWER({!$Record.Title}), “content marketing manager”),

    CONTAINS(LOWER({!$Record.Title}), “media relations”),

    CONTAINS(LOWER({!$Record.Title}), “product research”),

    CONTAINS(LOWER({!$Record.Title}), “sem”),

    CONTAINS(LOWER({!$Record.Title}), “seo”)


Sample Formula 3

Sometimes, you are going to need a mix of case sensitivity and case insensitivity. As an example, we would not want to update any job title that contains “hr” to Human Resources. This could lead to a lot of false matches. In this case, only titles that contain “HR” in all capitals will evaluate “True”.


  /* Title contains any of these title strings */

    CONTAINS(LOWER({!$Record.Title}), “human resources”),

    CONTAINS({!$Record.Title}, “HR”)


Sample Formula 4

There are also going to be times when you need to look for a specific value, like CEO, and also look for title strings. We can do that too! 


    /* Title is any of these values */

    {!$Record.Title} = “CEO”,

    /* Title contains any of these title strings */

    CONTAINS(LOWER($Record.Title), “chief executive”),

    CONTAINS(LOWER($Record.Title), “president”)


As you can see, there’s a fair bit of work involved in creating and testing the formulas. That’s why working in a sandbox is critical. If you can get all the formulas to update all the values exactly as you would like on the first try, I encourage you to check out our careers page!

Configure Flow Elements

Each path includes a Decision and an Update Records element (learn more about Flow Elements). We’ll walk through the marketing paths and the same logic can be applied to additional paths. The only difference is that the “No” outcome for the final decision should update the persona value to “Other”. We want to add a value to leads that don’t match any of our formulas for two reasons.

  1. We want to verify that they were processed by the flow.
  2. We want to be able to identify the leads that were not matched by our formulas so we can evaluate and improve. This is VERY important.

Decision Element 

The element is pretty straightforward. The “True” outcome looks for leads where the marketing formula evaluates to “True”. Leads that do not evaluate true progress down the “False” outcome and move to the next decision element.

Update Records 

Leads that match the “True” outcome conditions then proceed to the Update Records element. This is where the magic happens and the record is updated in Salesforce.


The final step before activating your flow is to do some debugging. Test by updating the titles of a few leads to make sure that they progress down the correct path, Be sure to vary the case of the titles to make sure that upper, lower, and mixed cases work as expected.

Step 5 – Rinse and Repeat

Once deployed into production, your flow is not going to be perfect. There are going to be some records that are classified as “Other” that should fall into other categories. That’s OK!

The final step is to do regular reviews and updates of the records that have the “Other” persona. It’s possible that we missed a keyword on our first pass or that a new hot title has emerged. I compare this a lot to scores in Account Engagement. You don’t quit once you define your scoring model, you evaluate and refine it. The same process applies here. 

Give it a Shot! 

We’ve done a lot in a short post. I encourage you to give this a shot in your sandbox. You’ll be surprised by the number of records that you’ll be able to update and the value that it will bring to your sales and marketing teams. If you get stuck, let us know. That’s why we are here! 

Shout out to Heather Rinke and Jason Ventura for their collaboration in building this process!

Original article: How to Update Marketing Personas Using Salesforce Flow

©2023 The Spot. All Rights Reserved.

The post How to Update Marketing Personas Using Salesforce Flow appeared first on The Spot.

By |2023-10-04T15:25:39+00:00October 4th, 2023|Categories: Analytics & Reporting, Data Management, Marketing Automations, Pardot, Pro Tips, revive|

Dreamforce Session Recap: Winter ’24 Marketing Cloud Release Highlights

Dreamforce 2023 has come and gone, and wow, it did not disappoint. Not only was this my first Dreamforce, I had the honor of co-presenting the Marketing Cloud Release Highlights session with two amazing members of Salesforce product team:  Ruth Bolster, product marketing manager, and Whitni Freeman, lead solution engineer.

In this session, we covered key Winter ’24 release highlights across each of the Marketing Cloud products:

  • Data Cloud
  • Intelligence
  • Engagement
  • Account Engagement 
  • Personalization

Here’s a recap of the Marketing Cloud Winter ‘24 release features covered…

Highlight #1: Segment Intelligence (Data Cloud)

Source: Salesforce

A new Data Cloud for Marketing feature, Segment Intelligence connects and harmonizes customer and marketing performance data — like revenue data, first party data, as well as paid media data — so you can understand how your segments are interacting with your marketing.

Using out of the box dashboards, you can see how segments are performing across channels, and gives you an executive understanding of how segments are performing across channels.

Plus, you can use Einstein to optimize existing segments, or create new ones based on performance data.

With all that data in one place this allows marketers to have a more holistic view of how segments are doing, without being bogged down by time consuming data management and reconciliation. And having those insights to optimize channel performance by segment – that level of visibility and adaptability means more impactful and relevant marketing campaigns, which leads to better marketing ROI. 

And the built in dashboards and connections means that marketers can get started right away!

This feature will be available for select customers starting in October, and will be available to all customers later this winter. 

Highlight #2: AI-Powered Segment Creation (Data Cloud)

Source: Salesforce

Another Winter ‘24 feature for Data Cloud for Marketing is Segment Creation. Powered by Einstein, this allows marketers to build complex segments using a descriptive prompt. 

So, for example, I can just tell Einstein “Big spenders in North America who made a purchase in the last 3 months and love hiking”, and it will generate the segment for me, showing what that segment looks like, and the attributes used.  

This means that marketers can build their segments without having to be a data scientist to do it. Being able to pull data based on specific criteria has often required technical knowledge of the data model to know where to look, and SQL skills to query the data to know how to access it. This feature will allow marketers to be more self-sufficient to get the data they need when they need it. 

This will be Generally Available in October for Data Cloud Customers.

Highlight #3: Intelligence GA4 Connector (Intelligence)

Source: Salesforce

As of Winter ‘24, Marketing Cloud Intelligence will have a built-in GA4 connector and pre-defined data sets available to ingest GA4 data. Marketing data is the foundation of Marketing Cloud Intelligence. Its data models, dashboards and guidance are built for marketers. There are already more than 100 native connectors available, and now with GA4 data connector this is a natural addition to the platform to have relevant marketing data in one place.

How this will work: When setting up data streams, GA4 properties will appear under the ‘Website’ dropdown. These new properties will be supported in API connectors as well as Marketplace apps.

Marketplace apps will replace previous UA 360 websites and support the new GA4 web properties, dimensions, and other fields for data retrieval. 

One thing to keep in mind: Due to the differences between GA4 and UA properties, the new connector will pull different, yet very similar, datasets into the platform when the GA4 property is selected, so your visualization may need to be tweaked when setting up the data stream for the first time. Marketplace will discontinue support of UA360 properties after the GA4 support begins. 

Highlight #4: Trigger Action on GA4 Data (Engagement)

Source: Salesforce

Marketing Cloud Engagement has some goodies in the Winter ‘24 Release as well. The first is Google Analytics 4 Integration, which lets marketers activate journeys based on Google Analytics 4 segments and events.

This new integration will include two key features in one:

  • Visual dashboards embedded within Engagement reporting so that marketers can see real time impact on revenue, AOV, and conversion metrics. 
  • Audience activation, which allows marketers to create engagement and re-engagement campaigns based on customer interactions using that GA4 data.
    • So for example, if you had a customer that viewed your product pages for backpacks and hiking boots, then abandon the session, you can use audience activation to trigger an abandoned browse journey.  This also allows you to get cross-channel insights across mobile, web, and email.

There is a fully paid version which includes both Reporting and Audience Activation.  There is also a free version that will feature the Reporting feature only.

Highlight #5: AI-Powered Email Content Creation  (Engagement)

Source: Salesforce

AI is coming to Marketing Cloud Engagement with Email Content Creation, including Typeface partnership!

Marketers can set up and specify personalities with brand voice and tone, and using natural language prompts can get draft ideas on subject, body copy and images. With the ability to give feedback on what works and what doesn’t this lets the model learn and improve over time.  

Marketers can consider this a tool to help them get a first draft in place. They still have control over the content throughout. They’re given choices based on their prompts, which they can use, like or dislike. 

That human element and judgment is a crucial part of the whole process.

Content Creation will be available in Marketing Cloud Engagement this October, and it is currently scheduled to be in Marketing Cloud Account Engagement next February

Highlight #6: Transfer Assets from Sandbox to Production (Account Engagement)

Source: Salesforce

Speaking of Account Engagement… With the Summer ‘23 Release  we saw the ability to move assets between business units, which is fantastic! But that still left a gap with sandboxes. Anyone that has used Salesforce sandboxes has been used to building and promoting configurations, and unfortunately that hasn’t been possible with Account Engagement sandboxes, which has been painful to work around. Any assets built in a sandbox had to be built again in production, which is of course time-consuming and also prone to error if something is missed.

In the Winter ’24 release, marketers can now copy assets from sandbox to production using Salesforce Flow. After installing the flow on your campaign, all you need to do is select your sandbox environment and your production environment, select your assets, and then copy it over. And this supports 8 asset types, including email templates, dynamic content, form handlers, custom redirects, custom fields, landing pages, and more.  

This allows for a more useful Account Engagement sandbox, to perform all asset testing and avoid conflicts – and all that test data – when trying to build in production. Not to mention saving time because you won’t have to build assets multiple times. You can even use this to set up a QA process, giving a subset of users access to build in the Sandbox only and then have another subset of users review the assets and push them to production when approved.

This was first mentioned in Erin Duncan’s post on Winter ‘23 Highlights for Account Engagement. 

Highlight #7: Real-Time Event Stream (Personalization)  

Source: Salesforce

With Winter ‘24 Release, Personalization will now include Real Time Customer Event Stream, a Lightning component that can be added to record pages, giving users a real-time view of the marketing assets that a lead or contact has interacted with. 

This gives sales and service teams better insight into the types of content their customers have been engaging with. They can then have more relevant and informed conversations with them about their current needs and interests, and provide a better overall customer experience.

Learn more about the Marketing Cloud release highlights

If you want to learn more about the Marketing Cloud release features covered, here are a few resources:

What do you think about these Marketing Cloud release highlights? Let us know in the comments.

Original article: Dreamforce Session Recap: Winter ’24 Marketing Cloud Release Highlights

©2023 The Spot. All Rights Reserved.

The post Dreamforce Session Recap: Winter ’24 Marketing Cloud Release Highlights appeared first on The Spot.

By |2023-09-18T21:08:09+00:00September 18th, 2023|Categories: Marketing Cloud, New Features, Pardot, Release Notes, Salesforce Marketing Cloud|

Eliminate Form-Fill Burnout with Account Engagement Progressive Profiling

Marketing Cloud Account Engagement Progressive Profiling is an out-of-the-box functionality and a powerful solution for B2B marketers who want to get detailed prospect data without overwhelming them with a large number of form fields to complete.

This advanced form feature allows marketers to gather additional information about prospects over time, without creating lengthy forms. On one hand, it helps the marketers gain higher conversion rates, while on the other it enhances the user experience and reduces form fill burnout.

How does Progressive Profiling work?

Through Progressive Profiling, Marketing Cloud Account Engagement replaces the form fields for which data is already collected with new fields.

So when a prospect visits your progressive profiling enabled form, it will only present the fields they haven’t

filled out before, unless the ‘Always display even if previously completed’ setting is enabled. By doing so, you gradually collect more information about your prospects over multiple interactions.

  • When a prospect first interacts with your marketing content, Marketing Cloud Account Engagement should display a short form with essential fields such as first name, last name, email address, and company name. The goal is to capture basic prospect data to initiate the engagement.
  • Upon subsequent engagement, Marketing Cloud Account Engagement flips previously completed fields with new ones. For instance, if the prospect has completed the Company Name field, the next time they interact with a form, it could be replaced with the Job title field.
  • Through every interaction, Marketing Cloud Account Engagement will ask the prospect to provide additional data beyond what is collected already.
  • Gradually you can build a comprehensive profile of your prospects, and it can be used to tailor your marketing campaigns to cater to their specific needs and preferences.

Key Benefits of Progressive Profiling

  • Progressive profiling ensures that quality prospect data is collected, as the risk of data entry errors is minimized due to this gradual approach of presenting fields.
  • Since the number of fields displayed at a time is limited, it makes the form submission exercise seamless, reduces burnout and increases the likelihood of getting more form submissions.
  • Segmentation and targeting of prospects also becomes a lot more easier and effective as more and more prospect data is collected.
  • Through better segmentation, marketers can send personalized content to the prospects and improve the chances of conversion.
  • Collecting additional information regarding the needs and preferences of the prospects can aid marketers in channelizing marketing efforts in the right areas.

How to set up progressive profiling in Account Engagement

  • Create Custom Fields:

Before setting up progressive profiling, you need to ensure the custom fields to collect the incremental prospect data are created.

  • Create your Marketing Cloud Account Engagement Form:

This feature requires you to first create the forms you intend to use for capturing prospect data. Create a form and either add new fields or use the existing ones such as First Name, Last Name, Email and Company.

  • Enable progressive profiling for your form:
    • In the form editor, click on the pencil icon adjacent to the form fields you seek to progressively profile.
      (The screenshots below show the example of progressive profiling on the ‘Department’ field, which will be displayed only when the ‘Job Title’ field is already completed.)
  • Then, in the form settings dialogue box, switch to the ‘Progressive’ tab and enable progressive profiling by checking the checkbox labeled as ‘Show this field only if the prospect already has data in the following field(s)
  • When adding multiple progressive profile fields, you can also manage the sequence in which they are displayed.
  • Remember to save the changes you made to the form settings, and click the ‘Confirm and save’ button before exiting the form editor.


Overall, progressive profiling addresses the issue of form fill burnout by creating a dynamic, user-friendly and incremental approach to collect prospect data. It ensures quality data is collected and aids segmentation and targeting. 

This approach also ensures that marketers respect their prospect’s time and effort in the form completion process, while increasing engagement and prospect data quality. When using this approach remember to maintain a balance between asking information and honoring the prospect’s preferences.

Need help creating sophisticated prospect profiles and segmentation strategies? Reach out to the team at Sercante to get the conversation going.

Original article: Eliminate Form-Fill Burnout with Account Engagement Progressive Profiling

©2023 The Spot. All Rights Reserved.

The post Eliminate Form-Fill Burnout with Account Engagement Progressive Profiling appeared first on The Spot.

By |2023-09-18T20:26:13+00:00September 18th, 2023|Categories: Forms & Form Handlers, Getting Started, Pardot, revive, Setup & Admin|

Help! My Account Engagement Email Looks Broken

If your Marketing Cloud Account Engagement (Pardot) email looks broken and you can’t figure out why, then you’re in the right place. In this post, we’ll look at common errors you may uncover when coding your email in Marketing Cloud Account Engagement.

Things to look for when your Account Engagement email looks broken

You may be struggling with these common problems in HTML email code within your Marketing Cloud Account Engagement. But don’t worry, we’re here to guide you through resolving these issues step by step.

Images appear broken

One common issue that marketers face is broken images in their email campaigns. It can be frustrating when images don’t load properly, especially on different devices and email clients. To address this, ensure that your image URLs are correct and properly linked in your HTML code. Additionally, optimize your images for faster loading times and consider using alternative text to provide context if an image fails to load.

Here’s a checklist of things to look for:

Is your image too big? 

Large image file sizes can cause slow loading times or may not display at all. Optimize your images for the web by compressing them without compromising quality. 

Is your image in the correct format? 

Additionally, confirm that the image is in the correct format (e.g., JPEG, PNG, GIF). At the date of this blog, not all email clients will support .webp format.

Are there SSL/HTTPS issues? 

If your Account Engagement account or website is using SSL (Secure Sockets Layer) or HTTPS, ensure that the image URLs are also updated to use HTTPS. Browsers may block or display broken images if there are mixed content warnings due to insecure (HTTP) image URLs on secure (HTTPS) pages.

Is the “pardot-region” inserted in the code correctly? 

When customizing or replacing images in Account Engagement using the WYSIWYG editor, it’s crucial to be mindful of the “pardot-regions” in the HTML code. These regions define editable sections that allow you to modify the content, including images.

When updating your HTML code, it’s important to pay attention to the “pardot-width” and “pardot-height” attributes within the code that correspond to your image holder. By explicitly matching these attributes with your image holder dimensions, you ensure that Account Engagement doesn’t automatically adjust the size, potentially distorting or exceeding the intended size of the image holder. In the example below, by setting the “pardot-height” to be auto will allow the image to automatically adjust and not stretch on a mobile device.

My image appears cut off when adding it using the text editor? 

The template may use an attribute mso-line-height-rule:exactly that controls the line-height of text in Outlook. This can crop the image to be that size. Change the attribute to mso-line-height-rule:at-least to give it more flexibility. It is okay to change all of the attributes to at-least.


Dark mode compatibility is another challenge to consider. With the increasing popularity of dark mode, it’s important to ensure that your emails display correctly in this setting. Test your emails in both light and dark mode to identify any color or readability issues. Use CSS media queries to adjust the styling specifically for dark mode, ensuring a seamless experience for your subscribers.

Here’s a checklist of things to look for:

Do you have dark mode meta tags? 

Dark mode (or light mode) meta tags offer an opportunity to enhance the visual presentation and user experience of your website. These tags provide hints to the browser or email client about how the content should be displayed when the user is in dark mode.

Do you have CSS media queries? 

Dark mode-specific CSS media queries are similar to mobile responsive media queries in the sense that they allow you to target specific conditions and apply different styles accordingly. While mobile responsive media queries focus on adjusting layouts and styles based on screen sizes, dark mode-specific media queries target the user’s preference for dark mode and enable you to modify the appearance of your content accordingly.

When using dark mode-specific media queries, such as (prefers-color-scheme: dark) or @media (prefers-color-scheme: dark), you can detect whether the user has enabled dark mode in their browser or operating system settings. This information helps you adapt the colors, backgrounds, and text within your HTML and CSS code to provide a more suitable and visually appealing experience for users in dark mode. See example code.

Are you swapping your image between dark and light mode? 

Certain images may rely heavily on specific colors or color combinations that work well in light mode but might not be as effective or visually appealing in dark mode. By swapping images, you can create alternative versions that are optimized for each color scheme, enhancing the overall aesthetic and cohesiveness of your email design. See example code.

Is your white text turning black in Outlook? 

Outlook’s dark mode implementation may override the color styles you’ve set for your text, resulting in white text appearing as black. In dark mode, Outlook attempts to adjust the color scheme for better visibility, which can cause unexpected changes to your email’s appearance. You can add the below code to the head tag that will target the Microsoft Outlook email only.

By utilizing this code, you can apply specific CSS styles that will only affect Microsoft Outlook emails. Adjust your desired styles within the provided <style> block.

Here’s an example of how to use a class within an element:

Here is the full tutorial by Nicole Merlin that addresses Outlook emails in dark mode.

Access a complete list of email clients that support dark mode, along with additional tips for optimizing dark mode in your emails, by referring to the following resource.

Preheader text

The preheader text, also known as a preview snippet, is essential for enticing recipients to open your emails. However, it can sometimes get cut off or displayed incorrectly. To avoid this, keep your preheader text concise and within the recommended character limit. Test it across different email clients to ensure it appears as intended.

Here’s a checklist of things to look for:

Do you need this hidden? 

The decision to hide or display preheader text in emails can vary based on several factors, including design preferences, marketing strategies, and the specific goals of the email campaign. If you decide this needs to be hidden on the overall look of the email, you can include a <style> tag within the <head> section of your HTML code. Use CSS selectors to target the desired element and apply the appropriate styling to hide it. See example ‘A’ below.

In this example, the CSS code targets the element with the class name .preview within  the #emailContents container and applies specific styles when the screen width is at least 600 pixels. The #emailContents id is specific to Account Engagement and should allow the editor to edit the content using the WYSIWYG editor. The content within the element is otherwise hidden with the style=”display: none; mso-hide: all” inline style sets the display property to none


Remove unwanted characters from the preheader text

Preheader text should be brief and concise, ideally within the range of 80 to 100 characters. Focus on delivering a clear and compelling message that entices recipients to open your email.

If you prefer not to display any preheader text, you can simply leave the preheader content empty. However, be aware that some email clients may automatically populate the preheader with default content, such as the first line of text from the email body. To mitigate this, consider adding a space or non-breaking space (&nbsp;) in the preheader to override any auto-populated text. See example ‘C’ above.

My link’s not working

Broken links can be frustrating for subscribers and can negatively impact your click-through rates. To avoid this, thoroughly check and test all the links in your email. Double-check the URLs for accuracy and ensure they are properly formatted.

Here’s a checklist of things to look for:

Did you write the correct format? 

Double-check that the URL of the link is accurate and properly formatted. Ensure that the link includes the necessary protocols (e.g., “http://” or “https://”) and does not contain any typographical errors or missing characters.

Is your link broken? 

If the destination page of the link is no longer available or has been moved or removed, the link will not work. Verify that the target webpage is active and accessible.

URL encoding issues 

URLs with special characters or spaces may encounter encoding problems. 

Make sure that the link is correctly encoded using URL encoding standards (e.g., replacing spaces with “%20” or special characters with their corresponding encoded values).

Non-clickable link

If the link is not properly coded as an anchor <a> tag with the appropriate href attribute, it will not function as a clickable link. Ensure that the link is wrapped within the <a> tag and that the href attribute contains the correct URL.

Blocked or filtered by email client

Some email clients may block or filter certain links for security reasons. If the link appears to be working when tested in other environments, it could be due to the specific email client’s settings or policies.

Incompatibility with mobile devices

Links that are designed or formatted in a way that is not mobile-friendly may not work properly on mobile devices or within certain email clients. Optimize your links for mobile responsiveness to ensure they function as intended.

URL redirection issues

If the link involves URL redirection, make sure that the redirection configuration is correct and functioning properly. Incorrect redirection settings can cause the link to fail.

I want to use a custom font

While Account Engagement does not provide font hosting, you can still incorporate custom fonts in your email campaigns by using web-safe fonts or linking to externally hosted font files. You can host the font files on your own server or utilize third-party font hosting services, then reference them in your email’s CSS using @font-face rules. This way, you have more control over the font selection while still working within Account Engagement’s limitations.

Here’s a checklist of things to look for:

Choose a web-safe font or a font that supports email clients

Email clients have limited font support, so it’s best to use web-safe fonts or custom fonts specifically designed for email use. Select a font that is available on most operating systems and widely supported by email clients to ensure consistent rendering.

Host the font files

Upload the font files to your web server or a font hosting service. You’ll typically need the font files in different formats like WOFF, WOFF2, TTF, or EOT to maximize compatibility across email clients. 

Define font-face rules in the CSS

In your CSS code, use the @font-face rule to declare the font family and specify the font file URLs. Include the different font formats to cover a broader range of email clients.

Replace ‘YourCustomFont’ with the desired font name and adjust the file paths in the url() function to reflect the location of your font files.

My font link is being counted as a click

In Account Engagement, links are typically tracked and counted as clicks to provide valuable engagement metrics and insights for your email campaigns. However, when you include a font link in your email, it may unintentionally be counted as a click due to the way Account Engagement tracks link interactions.

This can happen because Account Engagement’s tracking mechanism treats all links as clickable elements by default. When recipients open your email and the email client fetches the font file from the linked source, Account Engagement’s tracking system registers this as a click event.

Here’s a checklist of things to look for:

How are you using custom fonts?

To avoid font links being counted as clicks in Account Engagement, you can use the @import method instead of the traditional <link> method to include custom fonts in your email.

Here’s an example of how to use the @import method:

Background images

Background images in HTML email templates offer creative possibilities for crafting distinctive layouts, adding depth, and showcasing products. They have gained popularity as a design element. However, it is important to consider certain factors when incorporating background images in your Account Engagement email design.

Here’s a checklist of things to look for:

Not all email clients support background images

Some clients may block or ignore background images, resulting in an email that doesn’t display the intended design. Test your email across different email clients to ensure consistent rendering. 

Inline CSS

To maximize compatibility, inline CSS is typically recommended for background images in HTML emails. Use the style attribute directly within HTML elements to define the background image and related properties.

The example includes the necessary code to make the background image show in Microsoft Outlook, as well as most popular email clients.

Image size and optimization

Optimize your background image by compressing it to reduce file size while maintaining acceptable quality. Large image files can increase email size and load time, negatively impacting the recipient’s experience. Aim for an optimized image that doesn’t exceed the recommended file size for emails.

Fallback background color

In case the background image doesn’t load or isn’t supported, provide a fallback background color that complements your design. This ensures that the email still looks visually appealing even without the background image.


Consider accessibility guidelines when using background images. Include alt text for background images so that users with screen readers or email clients that don’t display background images can still understand the context of the email. And of course, it is not recommended or best practice to use text in background images.

Buttons in Outlook

Buttons collapsing or not displaying correctly is another challenge in HTML email coding. To avoid this, use table-based layouts for buttons and set explicit width and height values. Test your buttons across different email clients to ensure they remain consistent and clickable.

Here’s a checklist of things to look for:

I want rounded corners in Outlook. 

VML (Vector Markup Language) can be used to create buttons with rounded corners, especially in older versions of Outlook that don’t fully support modern CSS features like rounded borders (border-radius). VML allows you to make custom shapes and apply rounded corners to elements. 

Check out this example of an HTML button with rounded corners using VML:

We strongly advise against using this method in HTML email templates within Account Engagement, as it requires replacing the link in two separate locations, which can be easily overlooked if not approached with caution.

Why did my button padding get stripped? 

If you’re facing a situation where the padding of your button appears to be removed or stripped, it is likely because of a collapsing issue in Outlook. To troubleshoot this problem, ensure that the link you are testing is an active and valid link, rather than just using a placeholder like “#” or a dummy link. Using inactive or placeholder links can be the root cause of the problem and result in the unexpected removal of padding from your button.

Create error-free Account Engagement emails

At Sercante, we understand the common pitfalls of HTML email code in Account Engagement, and we’re dedicated to solving them for you. 

With our technical expertise and attention to detail, you can rest assured that your email campaigns will be visually appealing, engaging, and seamless across all platforms and devices. 

Say goodbye to HTML email code frustrations and hello to successful email campaigns that captivate your audience. Reach out to us for help creating well-crafted emails and templates in Account Engagement.

Original article: Help! My Account Engagement Email Looks Broken

©2023 The Spot. All Rights Reserved.

The post Help! My Account Engagement Email Looks Broken appeared first on The Spot.

By |2023-09-13T21:17:49+00:00September 13th, 2023|Categories: Emails & Forms, Pardot, Pro Tips, revive, Strategy|

How Inactive Prospects in Account Engagement Impact Your Strategy

Prospect inactivity tells us just as much about a prospect as their activity does. An inactive prospect has a lower interest level and less openness to learn more about your organization than prospects who are active.  

In this blog, we will address what makes a Prospect inactive vs. active, how inactive Prospects can impact your organization, and ways to clean up your database. 

Inactive Prospects in Account Engagement vs. Active Prospects

Inactive Prospects exist in every instance of Account Engagement, but what makes a Prospect inactive? I can tell you what doesn’t change their status to active. 

The following Prospect activities will NOT change a Prospect status from Inactive to Active:

  • Email Sends
  • Email Opens
  • Email Bounces
  • Opportunity Creation

So what does change a Prospect’s status from inactive to active? 

These are the activity indicators we’re looking for:

  • Form Submission
  • Page Visits
  • Link Clicks

Inactive Prospects can also be Prospects who are classified as “Active” but have not taken any action (i.e. form submission, page visit, or link click) in a predetermined amount of time (i.e., 6 months or 1 year). The timeline should be well thought out and considered by the marketing team. You should also adjust accordingly if needed based on the typical time it takes for the sales process to reach completion.

The Impact of Inactive Prospects

Housing inactive prospects in your org can have detrimental results to your instance if not consistently maintained. A couple of big reasons include deliverability and spam complaints, but there are more. See the full list of potential risks below.

Email Deliverability

When speaking to email deliverability, we are assessing the likelihood your email will reach its intended inbox without bouncing or being marked as spam. Prospects who have not opened any emails for a period of time or perhaps have abandoned their mailbox will be sent to spam or bounce This directly impacts your organization’s deliverability.

Furthermore, in alignment with the Account Engagement permission-based marketing policy, emails that are below 90% deliverability may trigger the Account Engagement deliverability team to check with you on your account performance and potentially freeze it.

Diluted Marketing Metrics

By sending emails to inactive Prospects, you are potentially receiving inaccurate metrics on your email performance. If you include inactive Prospects among active Prospects in your campaigns, you are skewing your open, click-through, and conversion rates by bringing them down. This leads to inaccurate portrayal of your campaign’s success.

Paid Prospects

Did you know that you pay for your Prospects? Account Engagement is set up in a way that you pay for your Mailable Prospects. Keep in mind that an inactive Prospect is not necessarily and unmailable Prospect. You can have a multitude of inactive and disengaged Prospects sitting in your account that you are paying for. Cleaning them out allows for more room for highly engaged Prospects to filter in.

Spam Reports

When we reference spam, we are referring to sender reputation, specifically how healthy your IP address is seen by target inboxes. Email services such as Google or Outlook use algorithms to filter out emails as they come in. Senders who have received consistent positive engagements, such as opens and clicks, are accepted without issues. However, senders who have been marked by negative interactions, such as deletion without opens or marking as spam, are automatically filtered into the spam folder, impacting the health of your sending IP address. This ultimately could lead to your IP address being blacklisted.

How to Maintain a Healthy Database

Now that you are aware of the impact inactive Prospects can have on your organization, let’s review ways to manage a healthy Account Engagement database

To begin, this clean up process should be done quarterly or on a routine basis as you see fit. And as a friendly reminder, any Prospect you delete goes to the Recycle Bin and can be pulled out at any time.

Use Dynamic Lists

Build a series of Dynamic Lists using a specific set of criteria to collect Inactive Prospects and then mass delete them via a Table Action, sending them to the recycle bin. 

Such lists may include:

  • Prospect has been emailed at least 1x in the last 90 days AND Prospect time last activity days ago is greater than 90 days. Again, you can set how many days feels best for your organization. You can also build multiple Dynamic Lists based on a variety of time limits.
  • Prospect has been emailed at least 1x in the last 90 days AND Prospect time last activity days ago is greater than 90 days AND Prospect score is below 100. Same thing here, customize the numbers to fit what is best for your organization.

Remove Junk Data

Any test emails you’ve created or spam Prospects who have filled out Forms are also taking up prime real estate in your mailable database. We recommend cleaning out any junk data that is not actively used for testing purposes. 

Read this blog for a complete list of Dynamic List criteria.

Create a Re-engagement Program

After cleaning up your database you may still have Inactive Prospects that you believe are still marketable.

Now, it’s time to enter Engagement Studio. Build a re-engagement program that targets Inactive Prospects in an attempt to nurture them. Anyone who still does not engage by the end of the program, can also be removed from your database. SalesforceBen offers a “Sunset Program” for this exact situation.

Shift your focus to from inactive prospects to active ones

Remember, Prospect inactivity tells us a lot about someone’s interest level in your organization. By being aware of what characteristics represent an Inactive Prospect, being aware of how that can affect your database, and taking actions to clean it up, you will see continued growth.

Need help making hard decisions about inactive prospects? That’s what we’re here for. Reach out to the team at Sercante for help navigating your prospect cleanup and re-engagement efforts.

Original article: How Inactive Prospects in Account Engagement Impact Your Strategy

©2023 The Spot. All Rights Reserved.

The post How Inactive Prospects in Account Engagement Impact Your Strategy appeared first on The Spot.

By |2023-08-10T12:11:54+00:00August 10th, 2023|Categories: Data Management, Emails & Forms, Pardot, Pro Tips, revive, Strategy|

How to Copy Assets Between Account Engagement Business Units

It’s here! It’s finally here! It’s the Account Engagement Business Unit Bulk Asset Copy Flow.

Marketing Cloud Account Engagement (f.k.a. Pardot) Business Units have become my niche over the past few years. I love setting them up and standardizing them, but I don’t love copying over assets when configuring a new Business Unit(BU). 

With the Summer ‘23 release, we can now use Salesforce Flow to copy custom fields, engagement studio programs, files, custom redirects, and email templates between Account Engagement Business Units!

Access the Account Engagement Business Unit Bulk Asset Copy Flow

During the Summer ‘23 release, your org should have received a new flow called “Account Engagement Bulk Asset Copy Flow.” 

To find this Flow: 

  1. In Salesforce, navigate to Setup > Flow
  2. Select the Account Engagement Bulk Asset Copy Flow
  3. From the Flow Builder, select Run

Note: The documentation currently states that you have to add this flow to the Campaign page before you begin. However, I did not find any way to select this flow from the Lightning Page Flow Component, I could only run it in the Flow Builder.

Set up the Flow

The flow itself is pretty straightforward. It will walk you through selecting your assets and setting the new asset details.

  1. Select your Source and Destination Business Units, select Next
  1. Select the assets to copy, select Next

Note: Keep in mind, all assets selected here will be copied to the same Folder, will be assigned the same Campaign, and use the same tracker domain. You may want to run the Flow multiple times if your new assets need to have different settings. 

  1. Confirm the Assets, select Next
  2. Select your Folder, Campaign, and Tracker Domain for your new assets
  1. Select Copy Assets

Bulk Asset Copy Confirmation Screen

If your action was successful, you will see the list of assets created on the Confirmation screen.

You don’t get an error message if your action was unsuccessful, but your confirmation screen won’t have any/all assets listed.

Considerations for Using Business Unit the Bulk Asset Copy Flow

Since this is a brand new capability for Account Engagement, there are some details and settings that do not come over when copied. I thoroughly tested each asset type and below are the considerations that I found. 

Custom Fields

When you copy custom fields from one Business Unit to another, only the following information comes over

  • Field Name
  • Field API Name
  • Field Type

The field’s mapping to Salesforce, Salesforce sync behavior, predetermined values (for dropdowns, radio buttons, etc.), and optional settings will not be configured.

Email Templates

  • When copied, the email sender will be replaced by a General User with the email [email protected]. This applies even if you have a sender hierarchy specified using “Assigned User” and ‘Account Owner.”
  • Email Templates containing Dynamic Content will not copy over.  This is because dynamic content is unique to the Business Unit. Even if you have the same Dynamic Content in each Business Unit, they will have a different asset ID and merge tag. 
  • Watch for email template nuances between BUs. If you copy an email template from Business Unit A to Business Unit B, make changes to Business Unit A’s template, then copy the template from Business Unit A to Business Unit B again, the flow will not update the existing template in Business Unit B. Instead it will create a brand new email template with the updated changes. 


During my testing, I was only able to get image files to copy over view the flow. I tested .pdf, .ics, and .css files with and without Completion actions and was unable to get anything but images to successfully copy. 

Engagement Studio Programs

  • When you copy an Engagement Studio Program (ESP) to a new Business Unit, only the ESP structure is copied. The Recipient List, Suppression lists, Send days/times, and “Allow prospects to enter more than once” settings do not come over and will need to be reconfigured in the new Business Unit.
  • The assets specified in a Trigger or Action node, such as email templates, landing pages, and forms, will need to be reselected in the new ESP. However, the number of wait days specified in the node will copy over. 
  • If an Action node looks at a Prospect field (i.e. Prospect default field “Job Title” is not blank) and that field is in both business units, then the node will be copied to the new ESP with the field and value/settings specified. If the field does not exist in both business units, then the Action node will still be in the ESP but the field and value/settings will need to be reconfigured. 

Custom Redirects

When a Custom Redirect is copied from one Business Unit to another, the redirect’s Completion Actions will not copy over, however, the Google Analytics Parameter values do.

Now it’s even easier to work with Account Engagement Business Units

This new Flow is a huge step toward making Business Units easier to set up and manage. My hope is that the capabilities of this Flow will continue to grow until we can make a near identical copy of an entire Business Unit. 

What other capabilities would you like to see in this Flow? Let us know in the comments!

Original article: How to Copy Assets Between Account Engagement Business Units

©2023 The Spot. All Rights Reserved.

The post How to Copy Assets Between Account Engagement Business Units appeared first on The Spot.

By |2023-07-12T12:09:50+00:00July 12th, 2023|Categories: Emails & Forms, Marketing Automations, Pardot, Pro Tips, Release Notes, revive|

Capturing UTM Parameters: 4 Scripting Paths for Account Engagement Landing Pages

Hey there! So, I wanted to chat with you about something that can be a bit tricky but super important in the world of marketing: capturing UTM parameters. 

You know those little bits of code you see at the end of URLs? They help marketers track where their website traffic is coming from and measure the success of their campaigns. 

Well, capturing and using UTM parameters can sometimes be a real challenge — especially when you’re dealing with UTM capture on Marketing Cloud Account Engagement (Pardot) landing pages. 

But don’t worry. we’ve got your back!

In this post, we’ll cover four ways to use UTMs for capturing the first and last touchpoints on Account Engagement landing pages. If you’re also looking for information on capturing UTM parameters in Salesforce, then check out this post.

4 methods for capturing UTM parameters on landing pages

Let’s dive into four different ways you can script your way to capturing first and last touch UTM parameters on Account Engagement landing pages. This solution works even if the form fields don’t match the UTM exactly or if you need to use cookies

Trust me, it’s not as complicated as it sounds!

1. Map the URL to hidden form fields

Option 1 is all about handling those pesky form field variations. Imagine the form fields on your Pardot landing page don’t exactly match the UTM parameters. No worries! 

With some JavaScript magic, you can extract the UTM values from the URL and map them to the right hidden form fields. It’s like connecting the dots, making sure you capture those first and last touch UTM parameters accurately.

See example and steps to setting this up in the video below.

2. Store UTM values in a session cookie

Now, let’s talk about Option 2. Sometimes you need session-based tracking, and that’s where scripting with session cookies comes in. 

Using JavaScript, you can grab the UTM values from the URL and store them in a session cookie. 

This cookie will keep the UTM data available as the user navigates through different Pardot landing pages. You can then map these UTM values to hidden form fields, ensuring you capture the first and last touch UTM parameters consistently during the session.

See example and steps to setting this up in the video below.

3. Pass UTM parameters to forms embedded in iFrames

Option 3 is for web landing pages that have an Account Engagement (Pardot) iFrame. Here, you can use scripting to set a cookie value that passes the UTM parameter to the iFrame. 

JavaScript to the rescue again — it helps you extract the UTM values from the URL and store them in a cookie. The Pardot iFrame can then grab the cookie value and fill in the hidden form fields. 

Voilà! You’ve captured the first and last touch UTM parameters and can use them in Pardot form submissions.

See example and steps to setting this up in the video below.

4. Capture UTM parameters across multiple website visits

Last but not least, Option 4 involves persistent cookies and hidden form fields. If you want to capture UTM parameters across multiple sessions or visits, this is the way to go. With some clever scripting using JavaScript, you can store the UTM values in a persistent cookie. 

So, even if your visitors come back later, the cookie remembers the UTM data. When they submit a form, the hidden form fields get populated with the UTM values, ensuring you capture the first and last touch UTM parameters consistently.

Get instructions for this method in this blog post.

Go forth and track all the things through UTM capture

So, my friend, there you have it! These four scripting paths will help you capture first and last touch UTM parameters on Account Engagement landing pages like a pro. Whether you’re dealing with form field variations, session-based tracking, iframes, or multiple visits, these options have got you covered. You’ll be able to gather accurate UTM data for analyzing your campaigns and making data-driven marketing decisions within Pardot.

Now go ahead and rock those UTM captures with confidence!
Not sure what to do with the information you’re tracking? Reach out to the team at Sercante for help building a marketing campaign strategy that gets results.

Original article: Capturing UTM Parameters: 4 Scripting Paths for Account Engagement Landing Pages

©2023 The Spot. All Rights Reserved.

The post Capturing UTM Parameters: 4 Scripting Paths for Account Engagement Landing Pages appeared first on The Spot.

By |2023-07-11T18:55:47+00:00July 11th, 2023|Categories: Analytics & Reporting, Data Management, Pardot, Pro Tips, revive, Strategy|

How to Make Sales Fall in Love with Account Engagement

Marketing Cloud Account Engagement (Pardot) offers the opportunity for marketers to give their sales team the information they’ll want, notifications worth paying attention to, and truly actionable insights about their prospects.

But it’s not always easy to get people excited about new software — especially when it involves learning a new process or procedure. 

When I became an accidental admin of Account Engagement in 2015, it took me a while to dig into the underutilized features that make it a great platform. But once I did, I learned how to provide sales with useful, actionable data.

In this post, I’ll share the big things that have helped to get sales teams excited about Account Engagement so they can be more productive with marketing leads.

Show all that Account Engagement goodness in Salesforce — where your sales folks can see it

Your sales and leadership teams are probably not using Account Engagement. But that’s where the marketing team is getting work done, like sending email campaigns, building engagement studio journeys, and reviewing prospect engagement.  

However, since Account Engagement is baked into the entire Salesforce ecosystem, there are a lot of ways to bridge the gap between the two systems and offer visibility into everything Account Engagement is doing. 

Add Engagement History to Contact Page Layout

If I had a dime for every client I met who didn’t have Engagement History added to their Contact page layout, I would have at least enough money for a mocha latte at Starbucks. But I cannot imagine a scenario where you wouldn’t want this information in Salesforce for everyone to see. 

Adding the Engagement History component to your Lightning record page is super-simple and will provide a log of all activities your trackable prospects are doing. For example, the component shows emails they are opening or clicking, landing pages they’re visiting, PDFs they’ve downloaded from your site and all the pages on your domain they have visited. 

Your Salesforce administrator can easily edit the Contact record page in Lightning Builder and drag the Engagement History component onto the page. 

The sales team is going to love this intelligence because it offers them insights into their prospects that they wouldn’t normally have. Furthermore, they’ll know simply by reviewing the history whether or not their prospects are opening marketing emails and what their level of engagement is. 

A couple of caveats

  • Only prospects that are cookied will show engagement history. They must be a prospect that has clicked on an email or previously filled out a Pardot form to be cookied and trackable.
  • Oftentimes emails may show opened or even clicked multiple times. Spam protection software can send a message pack to the sender (Pardot) that an email has been opened or clicked, even if it hasn’t been, which can be confusing. 

Bonus Tip! 

I love Page Actions, which allow you to designate specific pages on your website that trigger an automated action when a cookied prospect visits that page (for example, Add prospect to a list if they visit this particular product page). 

In addition, there is a checkbox on the Page Action that indicates it’s a Priority Page. By checking this box when setting up a Page Action your page will actually show up in the prospect’s Engagement History with the specific page they visited. So, for example, if you created a Page Action for your pricing page and marked it as a Priority Page, when a prospect visited that page it would be very easy for your sales folks to see that on the prospect’s history. 

Don’t forget to connect your campaigns

With the introduction of connected campaigns a few years ago, Account Engagement now syncs relevant email engagement data directly into Salesforce. 

There’s no need for leadership or other stakeholders to ask the marketing team how an email campaign or landing page is doing — that data is available right in Salesforce. 

Similar to the Engagement History component, this needs to be added to the campaign Lightning record page.

A couple of caveats

  • Users will need the Marketing permission checkbox on their profile to be checked to access Campaigns.
  • Emails and landing pages must be associated with the campaign in Account Engagement for the data to flow into the connected Salesforce Campaign.

Bonus Tip! 

Use Campaign Hierarchy to your advantage. On the dashboard you can view just the parent campaign results, or click the toggle to view the child campaigns as well. For example, you may have one main campaign for a Spring Campaign, then create and assign a child campaign to each email wave, or separate landing page.

Let’s add the Account Engagement fields, too

Not everything Account Engagement related can be added with a component. We’ll need to add some fields to the page layouts as well. 

I recommend adding a new Section to the Details area of the Contact page layout. Drag in the Account Engagement fields you wish to display.

At a bare minimum, let’s give your team:

  • Score: Your team will love the Score because it’s an implicit indicator of the level of interest a prospect has in you. It will help guide the sales folks in their prospecting efforts.
  • Grade: Not all organizations have this setup, if you don’t start here to learn about why it’s worth the time and effort.
  • Last Activity: This gives you a good idea of how long it’s been since a prospect has opened/clicked on an email or visited your website. 
  • Created Date: This is different from the contact’s create date. This is when Pardot first created the prospect record.
  • Finally, I like to include the Hard Bounce field so that the sales team is aware if they have a prospect with a bad email address. This will usually prompt them to check to see if they have the correct email on the record, or if the contact has left the company.

Salesforce reports your team will love

It’s nice to have all of the fields and components in Salesforce where your team can easily access them, but let’s talk a bit about reports too. There’s some cool stuff you can do with Salesforce reporting to keep your sales team wanting more. 

Account based marketing (ABM) reports

Instead of looking at the engagement of a single prospect, why not look at the entire account to see how engaged they are as a whole? 

Let’s create a report that will summarize our accounts and give us the Sum and Average of all of the contacts that belong to the given account.

  1. Create a new Contact & Account report. Apply any filters you need.
  2. The report layout should include the contact’s name, Account Engagement Score and whatever other fields you need.
  3. Under Group Rows, add Account Name to add a grouping by Account.
  4. On the Account Engagement Score field, click the down arrow to expand the field options in the layout
  5. Hover over Summarize and check Sum and Average.
  6. Save and Run your new report!

Recently active and highly engaged prospects report

The purpose of this report is to help sales folks identify prospects that are highly engaged and recently active. It creates a call sheet of sorts for your sales team.

To create this report, simply build a normal Contact & Account report but include the fields Account Engagement Last Activity and Score

You can then filter and/or sort the report to see the most recently active prospects with the highest engagement.  I used this type of report to keep an active list of prospects that sales people could call on when they had spare time. 

Note: Your users may already receive a similar report from Account Engagement called their daily prospect activity report. To find out, go to Account Engagement Settings > User Management > Users and click on a user. Then select Edit Preferences in the top right to see what emails they’re subscribed to.

Final thoughts

Hopefully you have found a couple of tidbits you’re ready to implement in your own org. One of the reasons I absolutely love this topic is because I know as a marketer it’s important to prove your value to the organization as a whole. I spent a large portion of my career learning to work with sales teams and leadership to provide them the insights they needed to succeed. 

It wasn’t always easy but good synergy between your sales and marketing teams is essential and will pay dividends. A good relationship includes transparency and Account Engagement offers that through excellent native integration with Salesforce. 

Looking to break down silos and build a stronger relationship between your sales and marketing teams? Contact the team at Sercante to start a conversation and learn about solutions we’ve built and the possibilities that exist.

Original article: How to Make Sales Fall in Love with Account Engagement

©2023 The Spot. All Rights Reserved.

The post How to Make Sales Fall in Love with Account Engagement appeared first on The Spot.

By |2023-07-10T20:54:21+00:00July 10th, 2023|Categories: Analytics & Reporting, Pardot, Pro Tips, revive, Strategy|

The Simple Way to Create Multi-Language Account Engagement Forms

Handling multiple languages with Account Engagement (Pardot) forms has always been complex — especially when it comes to reporting. But there is a way to multi-language Account Engagement forms.

The traditional solution — one form per language — has its drawbacks. But it’s something that’s super important for companies that use Account Engagement on a global scale to do in a logical and user-friendly way. 

Today, we’ll explore a new, more efficient method that improves reporting and streamlines the translation process.

Challenges with traditional solutions for creating multi-language Account Engagement forms

There are a few ripple effects that we have to handle when we use multiple forms to realistically capture one set of data. 

First, we need a way of figuring out which form we want to display. Commonly this is done as a piece of dynamic content driven off a known Prospect field.

Next, we need to handle submissions for a single goal across multiple forms. The approach we take can vary depending on how complex our Automations and Reporting strategies are, and it all can add up.

A new solution for handling multiple languages

We can still work within the constraints of Account Engagement (Pardot) and leverage a common web development pattern of internationalization (or i18n for short). With the power of JavaScript, we can have one Account Engagement form and feel confident that our visitors will be able to have it in their language.

JavaScript and Handlebars.js

Before we dive into the actual code (honestly my favorite), it might be helpful to talk about what we are going to use.  We have a mix of a little bit of custom JavaScript with a common JavaScript library called HandlebarsJS, not to be confused with Account Engagement Handlebars Merge Language (HML).

The custom JavaScript takes the HTML that Account Engagement will render, look for the i18n placeholders and do a real-time replacement with the translations you have set up. This gives you full control over the wording and design in each language for every page.

Both HML and HandlebarsJS (by default) use double curly braces for wrapping placeholders. We’ve chosen to help differentiate between the two easily by specifying square brackets.  

Getting into the details

So as a super simple example, you can use the label [[i18n.firstname]] to have English, French, Spanish (or any other language you want) for the value {{Recipient.first_name}}.

Example of single Account Engagement form supporting 3 languages

Ok, let’s show what this can look like. Here we have a demo form that supports three languages.

Pre-work to do for your multi-language Account Engagement forms

If you’ve previously filled out the form, we will render the form in the language you specified. If you haven’t, we’ll try to use your browser’s language. Form error messages and thank you content are all translated.

Back in Account Engagement, there are a few things that need to be done.

Here’s what to do:

  1. Edit form fields – Each Form Field needs to be edited to use a label in the format [[i18n.TOKEN]] (where the TOKEN can be a field name or anything you like
  2. Edit dropdown field values – Each Dropdown field value needs to be edited to use a label in a similar format
  3. Ensure dropdown fields store language code – The Form should have a Language dropdown field that stores the language code. Language choice labels should use a label in a slightly different format. It should use [[lang.CODE]].
  4. Check submit button text – Submit button text should be edited to use a label in a similar format.
  5. Check thank you content – Thank you content should be edited to use labels in a similar format.

Add JavaScript to the form

Once you have all your labels set up, we need to actually add the JavaScript to the form.  There are a few ways you can do this and the approach will depend on just how reusable (and large) you want your JavaScript to be.

In our example, we’ve placed the JavaScript in the Layout Template, which provides a balance of re-usability (can be used by multiple forms) and maintenance (common, but not all translations for the entire site).

Ok, time for the code. I’ve split this JavaScript into three sections, but it can all be copy and pasted into a single <script> block in your Layout Template.

Define languages the form will support

First, we have a JavaScript object that defines the languages that we will be supporting, as well as the label of that language. Feel free to adjust this as necessary, just keep the structure intact.

// the supported languages by this script
const languages = {
  lang: {
    en: 'English',
    fr: 'Français',
    es: 'Español'

Add the translations

Next we have all of the translations

// the translations for each language
const translations = {
  'en': {
    i18n: {
      firstname: "First Name",
      lastname: "Last Name",
      company: "Company",
      email: "Email",
      industry: "Industry",
      hospitality: "Hospitality",
      tech: "Tech",
      submit: "Save now",
      language: "Language",
      formErrors: "Please correct the errors below:",
      fieldError: "This field is required",
      thankyou: "Thanks for submitting!"
  'fr': {
    i18n: {
      firstname: "Prénom",
      lastname: "Nom de famille",
      company: "Société",
      email: "Email",
      industry: "Secteur d'activité",
      hospitality: "Hospitality",
      tech: "Technologie",
      submit: "Enregistrer",
      language: "Langue",
      formErrors: "Corrigez les erreurs ci-dessous:",
      fieldError: "Ce champ est obligatoire",
      thankyou: "Merci d'avoir soumis"
  'es': {
    i18n: {
      firstname: "Primer nombre",
      lastname: "Apellido",
      company: "Compañía",
      email: "Correo electrónico",
      industry: "Industria",
      hospitality: "Hospitalidad",
      tech: "Tecnología",
      submit: "Guardar ahora",
      language: "Idioma",
      formErrors: "Por favor corrija los siguientes errores:",
      fieldError: "Este campo es obligatorio",
      thankyou: "Gracias por enviar"

For each token you want to be translated, you will need to add a translation for each language. Like how languages are set up, you can make any adjustments/additions you want… just keep the structure intact.

Add the main functionality to apply translations you defined

Next, we have the main functionality. This handles the actual work of applying the translations we have defined already.

function i18nForm(prospectLang) {
  document.addEventListener("DOMContentLoaded", function(event) {
    //used to convert into handlebars. Not entirely necessary if this JS is in Layout Template, but needed if JS is in Form
    const brO = '{', brC = '}';
    let formErrors = document.querySelector('#pardot-form p.errors');
    if (formErrors != null) {
      // look for error messages in the original HTML. Pardot won't let us translate that, so we will hack it a bit here
      document.querySelector('#pardot-form p.errors').innerHTML = `[[i18n.formErrors]]`;
      [...document.querySelectorAll('#pardot-form')].forEach(node => { // loops through each field error
        node.innerHTML = `[[i18n.fieldError]]`;
    // stores the original HTML, or what was rendered from Pardot initially (with our placeholders)
    // also converts from using square braces (to make Pardot happy) to using Curly Braces (to make handlebarsjs happy)
    const originalHtml = document.querySelector('body').innerHTML
      .replace(/\[\[/g, `${brO+brO}`).replace(/\]\]/g, `${brC+brC}`);
    // creates the Template that Handlebars can use to generate processed (translated) HTML later on
    const processTemplate = Handlebars.compile(originalHtml);

    // get the language the Browser is using
    const browserLang = window.navigator.language.substr(0, 2);
    // console.log(`browserLang=${browserLang} and prospectLang=${prospectLang}`);
    // figure out which language we are going to go with
    let currentLangCode = prospectLang || browserLang;
    let currentLangVal = '';

    // retrieves the allowed languages, as Pardot doesn't actually use the language values we need to use, they change it to numbers (blegh)
    const pardotLanguages = new Array();
    const langNodes = document.querySelectorAll('.langChoice select option');
    [...langNodes].forEach(option => { // loops through the values in the Language Dropdown, storing lang code and numeric value for use
      let lang = option.text.replace(/\[|\]|lang./g, '');
      //console.log(`lang=${lang} and option value=${option.value}`);
      pardotLanguages[option.value] = lang;
    [...langNodes].forEach(option => { // loops through the values in the Language Dropdown, checking to see if one was selected
      let lang = option.text.replace(/\[|\]|lang./g, '');
      if(option.selected) {
        currentLangVal = option.value;
        currentLangCode = lang;
    console.log(`initially translating form to ${currentLangCode}`);

    function applyTranslations() {
      let translatedHtml = processTemplate({
      //replaces the visible HTML with the translations in place
      document.querySelector("#pardot-form").innerHTML = translatedHtml;
      document.querySelector('.langChoice select').value = currentLangVal;

      //handle when the language dropdown value is changed, translating on the fly
      document.querySelector('.langChoice select').onchange = function() { // we only want to translate to a valid language
        let selectedLang = pardotLanguages[this.value];
        if (selectedLang in languages.lang) {
          currentLangCode = selectedLang;
          currentLangVal = this.value;
          // console.log(`new language is ${currentLangVal} which is ${currentLangCode}`);
        applyTranslations(); // re-apply the translations when the value in this dropdown changes
    applyTranslations(); // apply the translations for the first time

Enable the form to detect language for known prospects

The last thing we need to do is tie this all together. Because we want to try to leverage the Prospect Language (if a known Prospect and we have a value in their Language Custom Field), we need to add just a little bit of JavaScript to each Form, in the Form’s Look & Feel as well as the Thank You content.

  // get the language the Prospect has saved
  const prospectLang = "{{{Recipient.Language}}}"; //Pardot HML  
  // kick off translations

Test and revise

All that’s left to do is test it out, and then mold this example into what you need.


Like any JavaScript examples you might find online, they are opinionated in approach. Making minor changes can sometimes break the code due to assumptions that might not be well documented/understood. I’ve left a bunch of console.log statements commented throughout the code to hopefully help you troubleshoot when things go wrong.

One of those opinions is using the “i18n” and “lang” prefixes. We think this makes the placeholders easier to read, even if it slightly complicates the JavaScript object itself. Feel free to remove this if you want, just know to make the various adjustments.

One Account Engagement form can handle all the languages you need

If your company works with audiences who speak a variety of languages, then this is the perfect solution for you to simplify the way you build forms in Account Engagement. Our new approach simplifies translating Pardot Forms, improves reporting, and offers a better user experience for a multilingual audience.

Still not sure how to approach your global marketing strategy? Then reach out to the team at Sercante for guidance along the way.

Original article: The Simple Way to Create Multi-Language Account Engagement Forms

©2023 The Spot. All Rights Reserved.

The post The Simple Way to Create Multi-Language Account Engagement Forms appeared first on The Spot.

By |2023-07-08T16:40:38+00:00July 8th, 2023|Categories: Emails & Forms, Pardot, Pro Tips, revive, Strategy|

Everything You Need to Know About the Account Engagement Optimizer

Account Engagement (Pardot) Optimizer BETA was released with the Spring ‘23 new features, but it has become “Generally Available” as of the Summer ‘23 release. This new feature promises to help you identify and correct issues that may be negatively affecting your Business Unit’s processing power. In this blog, we’ll dive into everything you need to know to access and use the new Account Engagement Optimizer feature. 

Accessing the Account Engagement Optimizer

To access the Optimizer, go to your Account Engagement Settings tab, “Optimizer” will appear as an option on the left-hand menu. 

Account Engagement Optimizer

If you are using Default User Roles, only Administrators will have access to the Optimizer. If you are using Custom User Roles, make sure your custom role has the following permissions selected (edit Custom User Roles by going to Account Engagement Settings > User Management > Roles > then selecting the role you’d like to edit). 

  1. Admin > View Optimizer
  2. Admin > View and Edit Pending Table Actions
  3. Marketing > View and Delete Automation Rules
  4. Marketing > View and Delete Lists

If you opted into the Beta before the Summer ‘23 release, there is nothing you need to do to continue using the Optimizer. If you did not opt into the Beta, the Optimizer should have auto-enabled when your org was upgraded to Summer ‘23. 

Analyzing Your Optimizer Report Results

The Optimizer, with the help of Brandy, will provide one of three statuses for your business unit:

  1. Looking Good: No critical issues to address
  2. Pay Attention: There are a few recommended actions to improve your business unit
  3. Action Needed: There are critical issues and you should resolve them right away. 
Account Engagement Optimizer - Brandy

Prospect Change Monitor By Feature Chart

Next to Brandy and your Optimizer Status, you’ll see your Prospect Change Monitor By Feature chart. 

Account Engagement Optimizer - Chart

This feature shows you which type of automations have made a change to Prospects in the last 24 hours. You can double click on each slice of the pie to drill into exactly which assets are making changes. 

Account Engagement Optimizer - prospect change monitor

Changing Filter Views

In this view, you can also change your filters to show different date ranges and different views. I like to change my view to “All Processes” and Date Range to “Last 30 Days” to better keep an eye on which automations are running at least every month. 

This view can be especially helpful in finding automations that may not have been set up in the most efficient way possible, such as an automation rule that is set to repeat every single day. 

Configuration Issues

Next in the Optimizer report is your Configuration Issues. This table will show setup problems that are stopping you from full access to Account Engagement’s features. This can be issues like your sending domain not being verified or prospects being paused for bot-like behavior. 

I tried to see if turning off Connected Campaigns would also trigger an issue here, but no dice. Hopefully, Salesforce will provide a list of all configuration issues that are checked in a future release, but in the meantime you can use our implementation checklist to ensure your Business Unit is configured correctly. 

Performance Improvement Measures

Next is Performance Improvement Measures, this table shows you recommendations that will improve your Business Unit’s processing power. This table defaults to “Actionable Measures,” but you can change this view to “All” to see what else is being monitored. 

Account Engagement Optimizer - performance improvement measures

This table is broken down into five columns:

  1. Measure: What exactly Optimizer is reviewing.
  2. Status: Whether the measure is in Good, Concerning, or Critical standing or if there are actions that can be taken. “Good” statuses will not show when this table is filtered to only show “Actionable Measures.”
  3. Feature Area: Which Account Engagement Features are involved in this measure.
  4. Recommendation: What next steps, if any, should you take. Most insights will also include links to documentation, which I personally love. 
  5. History: If there is enough data for this measure, you can select the chart icon to see the measures for the last 8 days. These charts also shed light on what the Optimizer considers good, concerning, or critical. 

Maintenance Resources

Finally, you have Maintenance Resources. This section links to a few views and reports that can help your Business Unit run in tip-top shape. This includes 2 views we’re already used to: Inactive Automation Rules and Inactive Dynamic Lists, but also 2 new super useful views:

  1. Table Action Manager: This view allows you to pause, prioritize, and cancel actions currently running in the Business Unit. For example, say you recently kicked off an Automation Rule that will update 3,000 prospects, but you are also running a Dynamic List that is needed for an email send going out in 5 minutes. Now you can prioritize that Dynamic List over the Automation Rule rather than panicking if your Dynamic List is going to complete in time. 
  2. Unused Dynamic Lists: This view shows you which Dynamic Lists have a blank Usage table. Now you no longer have to click into each Dynamic List to check if any assets are listed on the “Usage” tab, YAY!

Account Engagement Optimizer is Available Now

Now that Optimizer is available for all orgs, I would highly recommend you check the report at least monthly to keep an eye out for any potential issues. If you have any questions or neat tips about the Optimizer, let us know in the comments! Also, if you’re looking for other ways to improve your Business Unit’s processing power, check out our blog post, “4 Things to Clean in MCAE (Pardot) for Faster Processing Times.”

Original article: Everything You Need to Know About the Account Engagement Optimizer

©2023 The Spot. All Rights Reserved.

The post Everything You Need to Know About the Account Engagement Optimizer appeared first on The Spot.

By |2023-06-19T19:23:15+00:00June 19th, 2023|Categories: Analytics & Reporting, Pardot, Pro Tips, Release Notes, revive|