Pardot UTM parameters “Why”

This is part one of a two part series on Pardot Marketing Attribution using UTM Parameters.

Why UTM Parameters in Pardot for Marketing Attribution

 

This article series is about Salesforce Pardot attribution using UTM parameters.  We’ll first discuss closing the loop between the marketing to sales cycle, not in terms of customer outreach or a buying journey, but in terms of hard data, and truly understanding Return on Investment (ROI).  And then we’ll talk about how UTM parameters are the link between top of funnel and the deal, and Pardot forms, landing pages and other digital assets can be configured to capture UTM parameters and align analytics tools and tagging strategies with Pardot marketing automation.

The digital landscape is more crowded than ever, and the customer journey has become more complex

Digital Engagement: A Complex Journey

So when we talk about Pardot, we typically think “Email”, as Pardot is functionally largely an email marketing automation tool.  However, as a consumer I can’t remember the last time I ever bought a product or acquired services just because of an email.  And I think this goes for every different other channel as well.  I might look at email, but then I’ll read a review… Buyers might conduct a google search and end up on a vendor’s website, or maybe fill out a form on a social media profile.

As a marketer, I’ve been working with multi-channel marketing strategies, marketing infrastructure and media buying for most of my career, and the sheer number digital top of funnels channels have grown to be ever more complex as well. Most mature companies will use a mix of Google Ads, SEO driven organic traffic, and email newsletter campaigns. Traditional advertising has exploded into texting, into conversational marketing and chatbots, to more complex social media marketing, or serving dynamic or programmatic ads across any new number of sites… 

And while multi-channel strategies have become easier to implement and manage with cross-platform and integration tools, there is often ton of confusion as to where leads actually came from after deals ultimately close.

“There’s still a lack of understanding exactly what a lead is, and marketing often pushes off attribution as a sort of IT task.”  

Sales and Marketing work from different data sets

Marketers start at the top of the funnel, and push to establish KPIs as far down as possible, but quite often that isn’t too deep, and we often lose granularity as soon as leads are pushed into a CRM.  As a marketer, throughout most of my career I’ve patched together multiple different analytics softwares, from GA for website traffic to GAds and FB Ads Manager for Ads, to Search Console + Moz for Organic analysis, to CrazyEgg and Optimizely for UX, and marketers often then try to push all of this into yet another business intelligence (BI) tool, like Google Data Studio or Tableau to make sense of this information, trying to look down the funnel.

Digital Marketers traffic in “goals”, “website conversions” and “leads”

  • Marketers look at the funnel from top down, using a whole slew of various analytics tools to see as far down into the funnel as possible
  • Tools include GA, first-party ad platforms or ad desks
  • Metrics include CPM, CVR, CPA, but there is rarely consensus between firms about what an actual lead is between different firms

Salespeople however- they look at customers from the opposite perspective. Sales managers, Rev Ops and executives typically start at a closed deal and work their way from the bottom up, attempting to establish methods or patterns by reverse-engineering successful sales cycles. They care about ROI, but the further up in the funnel they look, the murkier that picture becomes.  How do we measure the impact of user experience or a facebook post on a particular sale?

Salespeople and executives deal in touchpoints with customers 

  • Exec and sales understand the funnel from the bottom up, as it relates to a closed deal
  • Tools are CRMs, Accounting Platforms, BI Tools
  • Metrics are cost per customer, ROI

Fundamentally, the data that’s captured by digital marketers, and the KPI’s we use to measure digital marketing campaign performance all too often DOES NOT MAKE it into the CRM.  The website where a prospect originated, the digital ad campaign, the channel, even the keyword gets discarded as soon as a lead is “captured” and stored in Pardot / Salesforce. Now there’s a reason for that, and we could spend another hour talking about privacy and where things are going with cookies and consent, but for the purposes of this discussion, the information gets lost.

There are a couple big issues… I see a lot of firms either rely on a manual process to to assign the source, either a salesperson filling this out- or often a “How did you hear about us” dropdown on a website… which I’m flabbergasted when I see CMO’s make marketing strategy decisions on inaccurate data (b/c imo buyers or liars).  

OR, the other challenge is that attribution is done in Salesforce for one specific channel. For example, a number of event or webinar tools have great attribution tools that work with Salesforce campaigns.  Similarly, there is a way to pass a variable along with destination urls for Google Adwords called the gclid or “Google click identifier”, but it only works for that specific Google Ads source.  Some companies I work with use Zapier for integrations (like Facebook lead forms for example), which works great (and is an awesome Pardot tool btw).  

BUT, in each of these three examples we’re kind of hacking the system to build attribution for one specific source, and there’s no way to measure the whole funnel. As soon as we try to start measure things side by side, we’re comparing apples to oranges to empty buckets where fruit should be… Ultimately the biggest problem is there is no standardization between channels.

Forcery UTM Link Example

Salesforce was not built as a Marketing tool

There has long been a disconnect between Analytics and CRM Platforms

Attribution has long been a manual or channel-specific exercise 

  • Lead Source is often filled out manually by Sales, not automatically a function of a marketing initiative
  • Native integrations are channel specific (such as many event management platforms) or nonexistent
    • For example, the Google Ads integration was retired in 2013! 
    • Instead, there is a platform-specific method of importing “gclid” parameters into Salesforce
  • Salesforce Campaigns membership for multichannel is marketing is challenging

 

If you’re an old school digital marketer, a lot of this will be old hat, but I want to introduce you to UTM codes, which create a thread from lead generation and sew the fabric of attribution all the way to the deal, closing the loop in our marketing > sales cycle.  

UTMa are NOT a new technology; but in thinking of a martech stack, we have lead generation platforms, we have we CRM and our analytics stack, and it’s essential that they’re all working off of the same information.  

UTM Codes

Close the loop in your customer journey lifecycle

 

UTM parameters connect the dots by passing marketing information, (almost like “marketing metadata”) along with a website conversion, to a prospect in Pardot, to a lead, to a contact, and a won opportunity in Salesforce, fundamentally allowing full visibility into the funnel from the top down, to the bottom up, and true alignment between marketing and sales/executive management. 

Used by Markers to track the effectiveness of digital advertising campaigns

Introduced by Google Analytics predecessor “Urchin” Analytics

  • Parameters identify:
    • Referring campaign
    • Attributes to the website session until the window expires
  •  Parameters may be parsed by analytics tools to populate reports

Elements of an Urchin Tracking Code Parameter

URL = The destination URL of your landing page

Source = The referring web source, typically the website or app that sent the visitor or click

Campaign = May correspond to Salesforce Campaign + Pardot folder, or be a digital advertising campaign AND Should be descriptive and sortable (Date and label at minimum)

Medium = A predefined group of channel “buckets” (i.e. Social, Organic, Paid, Email, Affiliates)

Content (optional) = Typically ad variation

Term (optional)= Keyword

So now I want to talk about what goes into a UTM code, and again, fundamentally we’re talking about creating a URL with bits of text appended to the end to pass information onto our website.  

After we identify the destination url where we’re sending visitors, the first thing we want to think about is a taxonomy of naming conventions, as UTMs will be very valuable for reporting, but will also get totally out of control if we’re not organized.  

We’ll want to familiarize ourselves with what available parameters there actually are, beginning with the source.  This is typically the website sending traffic, but we’re writing these variables, so we can really define anything we want.  If we look at large volume ad networks, we’ll see this information hashed for privacy, which is then humanized on the other end. 

A campaign is typically the digital initiative we’re running, but this is going to very important if we want to align with our Pardot folder structure and Salesforce campaign *(especially if we’re using Connected Campaigns), but we’ll talk a little more about that later. 

Mediums are channel groupings of major buckets of media.  And content and term aren’t really used that much, unless we’re running a lot of digital media, and as Google has their own way of tracking keywords.

Campaigns Naming Conventions

Forcery UTM Parameter Marketing Attribution Strategy

I’ve had a lot of success aligning utm campaigns with Pardot folders and Salesforce Campaigns, and I typically advise that campaigns are named to be sortable, reportable and to descriptively indicate the purpose and details of a campaign.  

And by descriptive, we can keep it simple, but I prefer to have as much information in a campaign, identifying first the launch date, the brand or service being marketing, the platform or ad type, the goal of the campaign, who is the target audience, all so if I see that campaign name later, I know exactly to which campaign it refers.    

Reportable

  • Use unique search strings wherever possible

Sortable

  • Set standards for order, use of punctuation and case tense

Descriptive of Initiative

  • The date, targeting and intent should be apparent or a least decipherable from the name of a campaign

Resources for creating URLS

We can learn to code a utm link pretty easily, but there are a couple of free, widely used tools out there for coding UTMS.  Google and Raven Tools (another analytics platform) use UTM Builders that we can use to just plug in values and spit out a code that we can put as our destination url, plug into bitly, or use in a custom redirect on a 3rd party link.

https://ga-dev-tools.appspot.com/campaign-url-builder/

https://raventools.com/marketing-reports/google-analytics/

https://chrome.google.com/webstore/detail/express-utm-builder/flockfgmfgmpmimlfkkeepkblckodbjg?hl=en

Attribution Solutions

Now… not every company has this issue; and there are a number of platforms that sort-of solve for this disconnect, but there’s still no guarantee that any of these will 100% standardize all marketing attribution without an underlying UTM solution. 

Datorama is in my opinion the coolest recent Salesforce Acquisitions, which comes with preconfigured connectors to most major marketing outlets, allowing we to pump data and elements of attribution from all sorts of marketing platforms into a single place to visualize and analyze.  

Google Analytics 360 offers a native integration with Marketing Cloud (though not currently Pardot), which sounds pretty cool, though I’ve heard the data types don’t always line up.  The integration is also free, but like Datorama, it’s far from cheap.  

There are also some pretty cool AppExchange products out there, like this platform called gaconnector, which creates its own cookie (based on the old Urchin Script), that captures UTMs and a whole bunch of other user data, but with GDPR, CCPA and all sorts of new browser restrictions, I’d be hesitant to become reliant on a smaller platform. 

And lastly, if we have significant development resources, we can invest in coding we own first party cookie to basically do the same thing.  Instead of Google or Pardot dropping a cookie, we can hypothetically create we own first-party cookie..  

But none of those are why we are reading this post; we’re going to talk about how to use Pardot to capture UTM values and pass them into Salesforce. 

Salesforce Marketing Attribution Solutions

Next up, read How to implement UTM Parameter capture in Pardot.

Pardot UTM capture closes the loop between advertising and attribution.png

Pardot UTM Parameters “How To”

This is part two of a two part series on Pardot Marketing Attribution using UTM Parameters.

How to implement UTM Parameters in Pardot for Marketing Attribution

So we’ve talked about the divide- we’ve talked about what UTM codes are and how to create them… Now let’s talk about how to configure Pardot, your forms and landing pages to capture these parameters, pass them into Pardot, and sync over to Salesforce, where you can run reporting all the way down the funnel from leads to closed won opportunities. 

Step 1.  Create fields in Salesforce and Pardot

The first thing you’re going to want to do is create, or have your admin create two custom fields in Salesforce, either on your lead or possibly your contact record if you don’t use leads. (*using this method you only need to create utm_campaign and utm_medium, and Source will feed the standard Pardot and Salesforce “Source” field) You’re also going to want to probably keep them hidden from page layouts, unless you want your end users to see this information. Then, you’re going to want to create and map those fields to the opportunity.

  • utm_source  (optional)
  • utm_campaignMapping UTM parameters to Pardot fields
  • utm_medium
  • utm_content (optional)
  • utm_term (optional)

Step 2.  Map fields in Salesforce to Pardot 

Now, you’re going to go over to Pardot, and create those custom fields in Pardot on the Prospect record, and then map the Pardot fields back to the Salesforce fields.  If you don’t see them show up immediately, don’t forget that sometimes you have to click the little refresh icon to pull in newly created fields.

Step 3: Add fields to Pardot Forms

Pardot UTM field value

Utm_xxx

  • Prospect Field
    •  I.e. Source, utm_campaign, utm_medium, etc 
  • Type
  • Hidden
  • Data Format 
  • Text 

Do not make field required!

The next step is we’re going to want to add those 3 fields as hidden fields on every form we want to track.  We’re going to label the fields, choose the appropriate Prospect field (we may have created), choose “hidden” field as the type, and select text as the data format.  A special note- MAKE absolutely sure you’re not requiring these fields, as if they’re hidden and required, if the prospect didn’t come from a utm tracked link, they will be unable to complete the contact form.

When we’re done, we should have three new fields on all of our forms.   FYI, we can do this with form handlers as well, but we would need to add the hidden fields to our form handler and completed the next step we’re going to talk about, adding the javascript to our page. However, we might need to make some adjustments to the javascript to match the selectors we define within our form handler code.

Step 4: Copy the following javascript to landing page or form

The next step is a bit technical, but it’s pretty much copy paste, so even if we have no idea what this code means, we should be able to just copy the content.  The code itself must be added in one of two places; within the landing page template, or my method; in the code section of the “below form” section of our form. Please also note  If we don’t use the field names outlined in this tutorial, we might need to update the JavaScript to include the correct field names.

 <script type="text/javascript">
// Parse the URL
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
// Give the URL parameters variable names
var source = getParameterByName('utm_source');
var medium = getParameterByName('utm_medium');
var campaign = getParameterByName('utm_campaign');
// Put the variable names into the hidden fields in the form. selector should be "p.YOURFIELDNAME input"
document.querySelector("p.source input").value = source;
document.querySelector("p.utm_medium input").value = medium;
document.querySelector("p.utm_campaign input").value = campaign;
</script>

Code must be added:

    • within Landing Page Template, or
    • within form in the “below form” section

Step 5: Embed the form on your website 

https://sforce.co/3dzPUA8

  • Navigate to form in Pardot
  • Click the arrow, and select View HTML code from the dropdown.
  • Copy the iframe code, and paste it into your web page source code.

Now, if we only use Pardot landing pages, we are done and ready for testing.  However, many of us use embedded forms on our websites. As technically the traffic to an embedded form uses 2 separate websites (our website and Pardot’s hosted form), utm values can get lost along the way. 

selecting view html code from the menu

As a refresher, these are the steps we’ll need to complete, which may require access to our CMS, or to get in touch with your web developer, website admin or IT.  We simply go to the form, click on the button that says View HTML, and copy that code, placing it wherever you want the form to live on your website.

Step 6: Modify iFrame adding ID and add JS linking 

So as we’re technically talking two separate web pages here here (your standalone instance and the Pardot-hosted asset), we need to add some additional code to our website to allow us to  pass the URL parameters from the parent page to the embedded Pardot iFrame form.  Again, this gets a little technical, but we can simply copy paste the code below, and I typically instruct developers to copy this script before the closing body tag in our web pages HTML.  And remember, this script needs to be on every page where a form lives, so it’s typically good to have this on every page. 

<iframe src="https://go.pardot.com/l/xxxx/xxxx-xx-xxx/xxxxx" width="100%" height="500" type="text/html" frameborder="0" allowTransparency="true" style="border: 0" id="myiframe"></iframe>

Step 7: Add JavaScript to your website

We’re going modify the existing iframe code we copied on the step 5, and modify the existing website embed code to add an “id.” Here we’re using the id “myiframe” and we must use the same identifier in the iframe as we use in the JavaScript (in Step 6).

<script type="text/javascript">

var iframe = document.getElementById('myiframe');

iframe.src = iframe.src + window.location.search;

</script>

Step 8: Test that parameters are passed through at every step

The last thing we’re going to want to do is test to make sure the values are being captured and stored at every step.  Make sure we go all the way thru, and if something is broken, look at our Pardot field mapping behavior, as well as our Salesforce Object mapping. 

Proof UTM values are passing from advertising to Pardot to Salesforce to Analytics

Once we’ve ensured everything is working, we’re ready for the fun stuff, and that’s reporting!!UTMs close the gap from advertising to Pardot

UTMs Bridge the Gap

By passing UTM values all the way from advertising to our website through to Pardot and Salesforce, we finally have visibility into the marketing attribution lifecycle

Marketing Attributions by Pardot UTM parametersImplementing UTM values opens up some incredible reporting in Salesforce, passing along dimensions (not only lead source, but channel, campaign, content and keyword) previously only available in Analytics tools, into our CRM.  

Multi-Touch Attribution in Salesforce using Pardot UTM capture

Closing the Loop: UTMs connect the steps of a customer journey

If we add this strategy to Connected Campaigns, and Campaign Influence and maybe B2BMarketing Analytics,  we start to be able to tell the full story of your customer journey.

And beyond just Salesforce, you can use UTMs in a variety of other places.  

  • Use utms in your analytics platforms (i.e. GA reporting)
  • Segment UTMs in Pardot 
  • Sales Cloud and Pardot Einstein predictive qualification
  • Salesforce reporting measuring ROI by channel, by campaign 

Pardot UTM capture closes the loop between advertising and attribution.png

By understanding how to leverage UTM analysis, we’ll become smarter and better marketers… by understanding campaign performance better than ever, we’ll be able to make better marketing decisions, drive more revenue to our companies, becoming more valuable as a marketers in the process.