Attention: The Marketo Community will undergo scheduled maintenance on Tuesday, August 20th between 10-11 PM PDT. During this time, the Community and its content will not be accessible. We apologize for any inconvenience this may cause.
Hi Doug,
This solution requires some intermediate to advanced javascript and html knowledge, so I will answer with that assumption.
There are 4 important steps in the Community article you are referencing (http://community.marketo.com/MarketoArticle?id=kA050000000Kyxt) to accomplish this. I'm only going to address those parts that need to be changed by you, not the entire code snippet:
1. Store the id of your hidden field in a javascript variable
2. Store the value from your URL parameter in a javascript variable
3. Move URL parameter variable value to a browser cookie
4. Move from cookie to hidden field on form
Assuming your field id is "UTM_Campaign" and the url parameter looks like "utm_campaign", here are the relevant pieces of code:
Step 1:
// IDs for the fields to be updated.
var utmcampaignFieldID = "#UTM_Campaign"
Step 2:
// Store the URL parameter value in the variable "ucampaign"
var ucampaign = $jQ.getQueryString({ID: utm_campaign,
URL: refer, DefaultValue: "" });
Step 3:
// Create a cookie named "utmcampaigncookie" and store the value from the variable "ucampaign"
$jQ.cookie('ucampaign', utmcampaigncookie,
{expires: 730, path: '\/', domain: cookieDomain});
Step 4:
// Get the values from the cookies and put them into the hidden field by referencing the field ID
$jQ(utmcampaignFieldID).attr("value",$jQ.cookie('utmcampaigncookie'));
If you need a more comprehensive answer, or would like someone to implement the code for you, I'd be glad to help in a more formal setting. Email me at dan@spearmarketing.com.
Thanks!
Hi Doug,
This solution requires some intermediate to advanced javascript and html knowledge, so I will answer with that assumption.
There are 4 important steps in the Community article you are referencing (http://community.marketo.com/MarketoArticle?id=kA050000000Kyxt) to accomplish this. I'm only going to address those parts that need to be changed by you, not the entire code snippet:
1. Store the id of your hidden field in a javascript variable
2. Store the value from your URL parameter in a javascript variable
3. Move URL parameter variable value to a browser cookie
4. Move from cookie to hidden field on form
Assuming your field id is "UTM_Campaign" and the url parameter looks like "utm_campaign", here are the relevant pieces of code:
Step 1:
// IDs for the fields to be updated.
var utmcampaignFieldID = "#UTM_Campaign"
Step 2:
// Store the URL parameter value in the variable "ucampaign"
var ucampaign = $jQ.getQueryString({ID: utm_campaign,
URL: refer, DefaultValue: "" });
Step 3:
// Create a cookie named "utmcampaigncookie" and store the value from the variable "ucampaign"
$jQ.cookie('ucampaign', utmcampaigncookie,
{expires: 730, path: '\/', domain: cookieDomain});
Step 4:
// Get the values from the cookies and put them into the hidden field by referencing the field ID
$jQ(utmcampaignFieldID).attr("value",$jQ.cookie('utmcampaigncookie'));
If you need a more comprehensive answer, or would like someone to implement the code for you, I'd be glad to help in a more formal setting. Email me at dan@spearmarketing.com.
Thanks!
<script src="http://code.jquery.com/jquery-latest.min.js" charset="utf-8" type="text/javascript"></script> <script src="/sites/all/themes/tekzennew/js/jquery.cookie.js" type="text/javascript"></script> <script src="/sites/all/themes/tekzennew/js/jQueryString-2.0.2-Min.js" type="text/javascript"></script> <script type="text/javascript"> var $jQ = jQuery.noConflict(); $jQ(document).ready(function(){ // //--- CHANGE THESE!!! --- // // Change this to match domains of referrers you want to ignore. // You'll want to ignore referrers from your own domains. // Use only the base domain name without subdomains (ex. "company.com") // Separate multiple domains with commas (leave the brackets). var excludedReferrers = [ "tekscan.com" ]; // Change this to match the base domain of your company's landing pages. // Cookies will be created with this domain. // Ex. If your landing page domain is "pages.yourcompany.com" then use // "yourcompany.com" var cookieDomain = "tekscan.com"; // The URL parameter that has your pay-per-click info. // Typically "kw" or "keyword" (depends on how you set up your PPC URLs) var payPerClickParameter = "utm_term"; //IDs for the fields to be updated. var utmcampaignFieldID = "#UTM_Campaign" var utmsourceFieldID = "#UTM_Source" var utmtermFieldID = "#UTM_Term" var utmcontentFieldID = "#UTM_Content" var utmmediumFieldID = "#UTM_Medium" // //-- you probably shouldn't change anything after this -- // var refer = document.referrer; var searchString; var searchEngine; // if there's no referrer, do nothing if ( (refer == undefined) || (refer == "") ) { ; } else { // get the domain of the referring website -- http://[[this-thing.com]]/ var referrerDomain = refer.substr(refer.indexOf("\/\/") + 2, refer.indexOf("\/",8) - refer.indexOf("\/\/") - 2).toLowerCase(); var excludedDomainFound = false; var i = 0; // search the excluded domain list to see if the referrer domain is on it while ( (i < excludedReferrers.length) && !excludedDomainFound) { var thisExcludedDomain = excludedReferrers[i].toLowerCase(); // weird semantics here -- indexOf returns "-1" if the search string isnt found. // thus excludedDomainFound is true only when indexOf matches an excluded domain (!= -1) excludedDomainFound = (referrerDomain.indexOf(thisExcludedDomain) != -1); i++; } // only if the referrer isn't in our excluded domain list... if( !excludedDomainFound ) { // extract the URL parameters from common search engines // To add your own, each engine needs: // name: how the search engine will appear on your Marketo leads // url: REGEX for matching the engine's referrer. ex. /\.google\./i // query: URL parameter that contains the search query - usually "p" or "q" var searchEngines = [ { name: "Yahoo", url: /\.yahoo\.co/i, query: "p" }, { name: "Google", url: /\.google\./i, query: "q" }, { name: "Microsoft Live", url: /\.live\.com/i, query: "q" }, { name: "MSN Search", url: /search\.msn\./i, query: "q" }, { name: "AOL", url: /\.aol\./i, query: "query" }, { name: "Bing", url: /\.bing\.com/i, query: "q" }, { name: "Ask", url: /\.ask\.com/i, query: "q" } ]; // find the referring search engine (if any) i = 0; while (i < searchEngines.length) { if (refer.match(searchEngines[i].url)) { searchEngine = searchEngines[i].name; searchString = $jQ.getQueryString({ ID: searchEngines[i].query, URL: refer, DefaultValue: "" }); break; } i++; } // If no search engine is found, this person probably used a less // popular one. Use the referring doman, then guess the query parameter if (i == searchEngines.length) { searchEngine = referrerDomain; var queries = ["q","p","query"]; var i = 0; while ((i < queries.length) && (searchString == undefined)) { searchString = $jQ.getQueryString({ ID: queries[i], URL: refer }); i++; } // no search strings found -- use this text instead. if (searchString == undefined) { searchString = "None"; } } // Use the provided URL parameter to get the PPC keyword. var payPerClickWord = $jQ.getQueryString({ID: payPerClickParameter, URL: refer, DefaultValue: "" }); // Store the URL parameter value in the variable "ucampaign" var ucampaign = $jQ.getQueryString({ID: utm_campaign, URL: refer, DefaultValue: "" }); var usource = $jQ.getQueryString({ID: utm_source, URL: refer, DefaultValue: "" }); var uterm = $jQ.getQueryString({ID: utm_term, URL: refer, DefaultValue: "" }); var ucontent = $jQ.getQueryString({ID: utm_content, URL: refer, DefaultValue: "" }); var umedium = $jQ.getQueryString({ID: utm_medium, URL: refer, DefaultValue: "" }); // Put the info into cookies. These values will be extracted // and put into a Marketo form later. Expires in 2 years. $jQ.cookie('mktoPPCKeyword', payPerClickWord, {expires: 730, path: '\/', domain: cookieDomain}); $jQ.cookie('mktoSearchEngine', searchEngine, {expires: 730, path: '\/', domain: cookieDomain}); $jQ.cookie('mktoSearchString', searchString, {expires: 730, path: '\/', domain: cookieDomain}); // Create a cookie named "utmcampaigncookie" and store the value from the variable "ucampaign" $jQ.cookie('ucampaign', utmcampaigncookie, {expires: 730, path: '\/', domain: cookieDomain}); $jQ.cookie('usource', utmsourcecookie, {expires: 730, path: '\/', domain: cookieDomain}); $jQ.cookie('uterm', utmtermcookie, {expires: 730, path: '\/', domain: cookieDomain}); $jQ.cookie('ucontent', utmcontentcookie, {expires: 730, path: '\/', domain: cookieDomain}); $jQ.cookie('umedium', utmmediumcookie, {expires: 730, path: '\/', domain: cookieDomain}); } } // Get the values from the cookies and put them into the hidden fields $jQ(searchStringField).attr("value",$jQ.cookie('mktoSearchString')); $jQ(searchEngineField).attr("value",$jQ.cookie('mktoSearchEngine')); $jQ(payPerClickKeywordField).attr("value",$jQ.cookie('mktoPPCKeyword')); // Get the values from the cookies and put them into the hidden field by referencing the field ID $jQ(utmcampaignFieldID).attr("value",$jQ.cookie('utmcampaigncookie')); $jQ(utmsourceFieldID).attr("value",$jQ.cookie('utmsourcecookie')); $jQ(utmtermFieldID).attr("value",$jQ.cookie('utmtermcookie')); $jQ(utmcontentFieldID).attr("value",$jQ.cookie('utmcontentcookie')); $jQ(utmmediumFieldID).attr("value",$jQ.cookie('utmmediumcookie')); }); </script>