Knowledgebase

Sort by:
This article explains how to enable tracking if your Google AdWords ad is configured to link to a Marketo landing page with a Marketo form. When the lead fills out the form on the landing page, the Google Adwords CampaignID and keyword values will be passed to Marketo through hidden fields. High-level Requirements Create custom Marketo fields to capture the PPC information Add those fields as hidden fields to the Marketo form(s); configure the hidden fields to get their value from the URL Parameters Add parameters to your destination links in Google AdWords ads using static values or ValueTrack parameters; you can use the Marketo or Google URL builder to simplify this Decide on an 'original' or 'most recent' PPC source strategy If your PPC strategy is to capture original PPC source, then the custom PPC fields need to be configured to block field updates. If your PPC strategy is to capture the most recent PPC source, then you can use the default configuration (i.e. fields not blocked from updates). Enter PPC program period (monthly) cost information Benefits This solution does not require custom coding This solution does not require any additional cost Analytics - Standard Number of new leads acquired by Google Adwords Program Cost per new lead acquired by Google Adwords Program Number of leads acquired by keyword/search phrase Top 10 keywords/search phrases which acquired new leads Top 10 AdWords CampaignID which acquired new leads Number of Opportunities by keyword/search phrase Number of Opportunities by CampaignID Analytics - Revenue Cycle Analytics (RCA) Conversion ratio of your Google Adwords Return to investment for your Google Adwords Top 10 keywords by month report which shows Average days to convert to opportunity Number of leads converted to opportunity Top 10 CampaignID’s by month report which shows Average days to convert to opportunity Number of leads converted to opportunity Program Channel report >> Google Adwords (custom channel) metrics by quarter New names, cost per new name Opportunity units, Pipeline generated, revenue, revenue to investment Instructions Create the custom fields in Salesforce.com on both the lead and contact object, making sure they map from lead to contact. The custom fields will sync over to Marketo mapped 2 Salesforce.com fields to 1 Marketo field. For instructions to create Salesforce.com custom fields, please reference Salesforce.com knowledgebase or work with your Salesforce.com Administrator. If you do not want these custom fields in Salesforce.com, you can create the fields in Marketo. Custom fields you create in Marketo will be Marketo only fields as they will not sync over to Saleforce.com. The custom fields to be created Campaign Source (utm_source) Required. Use utm_source to identify a search engine, newsletter name, or other source. Example: utm_source=google Campaign Medium (utm_medium) Required. Use utm_medium to identify a medium such as email or cost-per-click. Example: utm_medium=cpc Campaign Term (utm_term) Used for paid search. Use utm_term to note the keywords for this ad. Example: utm_term=running+shoes CampaignID (utm_campaign) Used for keyword analysis. Use utm_campaign to identify a specific product promotion or strategic campaign. This can be used to capture the Adword CampaignID Example: utm_campaign=spring_sale Create a Marketo program (i.e. Google Adwords Program) and use a program channel (i.e. custom 'Google Adwords' channel) with 'converted' as the success progression status. Make sure you assign the associated period costs for this program on the setup tab. You will need to do this on a monthly basis; this is required if you want to get a 'cost per' analysis. Create a Marketo form with all the above fields on the forms as 'hidden fields' configured to get values from a URL parameter. Include other fields as normal and call this 'PPC Form' Map the URL parameter to the associated hidden field (i.e. utm_source maps to 'Campaign Source') Create a Marketo landing page which you will use to link the Google Adwords ad Include the PPC Form on this landing page. Use the Marketo URL Builder to add the key values and parameter tokens to the URL. In the example below, the first URL is the URL to the landing page, and the second URL includes the URL parameters and associated values/tokens. URL: http://info.mycompany.com/lp/example/PPCExample-Start-Your-Free-Trial-Now.html Tagged URL: http://info.mycompany.com/lp/example/PPCExample-Start-Your-Free-Trial-Now.html?utm_source=AdWords&utm_medium=PPC&utm_term={keyword}&utm_content={creative} When configuring your Google Ad, use the tagged URL as the destination link which takes the lead who clicks on the Google Ad to the landing page. The keyword and CampaignID will be passed automatically when the lead clicks through the Google Adwords ad. The Source (Adwords) & medium (PPC) will be passed as the values in the tagged URL Learn more: Google Adwords and Marketo Overview Linking a Google Adwords Ad to Any Page on Your Website Google Adwords and Marketo FAQs
View full article
If you tried to Verify the Setup and Configuration of Marketo Sales Insight via the Sales Insight tab in the Admin section of Marketo Lead Management, and the MSI Status wasConfiguration Problem, a configuration error in your Marketo Sales Insight setup was detected, meaning that one or more of the required fields/objects for synchronization were not properly configured in Salesforce. Click the Configuration Problem link to launch the Salesforce Configuration Problem dialog box, which displays the detected errors. Sample Error Dialog Box: The system verifies the configuration of the following eight check points in Salesforce: Lead Score Field (Lead) Lead Score Field (Contact) Relative Score Field (Lead) Relative Score Field (Contact) Relative Urgency Field (Lead) Relative Urgency Field (Contact) Priority Score Field (Lead) Priority Score Field (Contact) The error message displays the fields/objects that are causing errors during sync between Marketo and Salesforce. The goal of this article is to repair these configuration problems and ensure that the proper permissions are set to read and write to these fields/objects during sync. Refer to one of the sections below to repair these errors in Salesforce Professional Edition or in Salesforce Enterprise or Unlimited Edition. How to Repair Configuration Problems in Salesforce Professional Edition To repair configuration problems in Salesforce Professional Edition: Log in to the Salesforce as an Admin. Within Salesforce, add the fields noted in the error message to the required Lead and/or Contact layouts to repair the error. Open the Fields section at the top of the Layout page, then drag in the fields/ Once the fields are in place, click Save at the top of the layout page. Note The MSI Status on the Sales Insight tab will update to verify the config is valid after the next bi-directional sync. Marketo recommends that you check the Sales Insight tab to confirm the repair and that the MSI Status changed to Configured. How to Repair Configuration Problems in Salesforce Enterprise or Unlimited Edition To repair configuration problems in Salesforce Enterprise or Unlimited Edition: Ensure that the Salesforce user account that is used for Marketo sync has the proper permissions to read and write to the fields noted in the error message. Note The MSI Status on the Sales Insight tab will update to verify the config is valid after the next bi-directional sync. Marketo recommends that you check the Sales Insight tab to confirm the repair and that the MSI Status changed to Configured.
View full article
The only reason why you should ever completely remove the unsubscribe content from the “Admin -> Email” area is because you are choosing to build the unsubscribe link into the Email Templates themselves. The text box has validation which does not allow you to save with no content, you can get around it by adding a small HTML comment, the HTML comment will not show up in the Email Client as it is rendering the Email in HTML and the comments are omitted. Here is how to do it: Go to Admin and click on Email. Select all the text and hit the delete key on your keyboard. Before deleting, copy/paste into notepad as a backup. Type in <!--This is a comment -->. Click Save Changes. For the Unsubscribe Text you have to add a single character, use a dash or a period.
View full article
Follow these steps to create a lead performance report with mobile platform (iOS/Android) columns: Learn how to: Create Mobile Smart Lists Create a Lead Performance Report Add Mobile Smart Lists as Columns Create Mobile Smart Lists 1.1   Under Marketing Activities , select a program. 1.2   Under New , click New Local Asset . 1.3   Click Smart List . 1.4   Enter a Name and click CREATE . 1.5   Find and drag the Opened Email filter into the canvas. 1.6   Set Email to is any . 1.7   Add the Platform constraint. We used the Opened Email filter in this example, you can also use the Clicked Email filter as it has the Platform constraint. Is this article helpful ? YesNo   1.8   Set Platform to iOS .   At least one lead must have opened one of your emails on an iOS device in order for the autosuggest to find it. If it does not, you can manually type it in and save.
View full article
Issue: With long options in a select (dropdown) list, Internet Explorer will not expand the values as Firefox, Chrome and other browsers will do. This makes reading the values in the dropdowns impossible.   Solution: Insert the following Javascript/CSS in a Custom HTML box on your landing page. This script will only run if IE is used.   < script src="/js/public/jquery-latest.min.js" type="text/java script "></ script > < script type="text/java script "> var $ = jQuery.noconflict();     $(document).ready(function() {   if ($.browser.msie) {   $('selec t.mktFormSelect')   .bind('focus mouseover', function() {   $(this).addClass('expand').removeClass('clicked');   $(this).parents('li').addClass('liexpand'); })   .bind('click', function() { $(this).toggleClass('clicked'); })   .bind('mouseout', function() { if (!$(this).hasClass('clicked')) {   $(this).removeClass('expand');   $(this).parents('li').removeClass('liexpand'); }})   .bind('blur', function() {   $(this).removeClass('expand clicked');   $(this).parents('li').removeClass('liexpand'); });   }   }); </ script >     <style type="text/css">   select.expand { width: auto !important; position: absolute; } li.liexpand { padding-bottom: 22px !important; padding-bottom: 9px !important\9; } *+html li.liexpand { padding-bottom: 9px !important; } </style>   Is this article helpful ? YesNo
View full article
Please ensure that you have access to an experienced JavaScript developer. Marketo Technical Support is not set up to assist with troubleshooting JavaScript. Here's our recommendation for how you can collect keyword, search engine, and PPC info in Marketo.  It takes a bit of work, and you'll definitely need to know your Javascript. 1. Create custom fields You'll need to create some new fields to store the additional data. If you want these fields to be visible in Salesforce, create them on both Lead and Contact records. All of these should be of type String: Search String -- to store the query that drove the lead to your web page Search Engine -- the search engine or URL which provided the lead your web page Pay Per Click Keyword -- if the link was a PPC (ex. AdWords), the PPC keyword for that link 2. Add the fields to your forms Go to the Design Studio and edit any forms where you want to capture this information.  Add the fields you created as hidden fields set to a default value (as opposed to set from a cookie or URL parameter). You'll probably want to leave the default value as blank -- that is, the lead did not come from a PPC -- but feel free to put in another value if appropriate (Making a Field Hidden on a Form) This solution will not update the Lead Source for leads who come to your site via PPC.  If you want the lead source updated for PPC leads, you'll need to do that via a Smart Campaign or by adding it as a hidden field to your forms. 3. Put Javascript on your landing pages You MUST edit the Javascript below or it will not work!The code below sets cookies with the search engine, search term, and PPC info as long as it came from a domain outside your website. The script then populates the form fields using the cookie values. The reason for using cookies is because your leads may not fill out your form when they first hit your landing page; they may click your AdWords ad, browse around, and then go to your form.  Cookies retain those values for when they're needed -- when the leads complete your form.Using cookies also lets you capture this info on non-Marketo pages too.  See step 4 if you're interested in that.If you want this on a single landing page, add it as a Custom HTML block.  If you want this on several or all your landing pages, add it to your Landing Page Template.You'll need to change the following variables/strings, highlighted in the Javascript below: Variable Description excludedReferrers All domains where you don't want to check referrers as in "company.com" -- typically these are your own website domains. If you need to exclude multiple domains, separate them with commas. cookieDomain The base domain of your landing pages without any subdomians (like "www." or "pages.").  This will be used to store cookie values.  If your landing pages are on "pages.yourcompany.com" then this should be "yourcompany.com". payPerClickParameter The URL Parameter with the keyword depending on how you set up your your pay per click URLs. Typically "keyword" or "kw". searchStringField searchEngineField payPerClickKeywordField IDs of the hidden form fields where the cookie values should be inserted. Find them by following the instructions in this article: Setting or Getting a Form Field Value via Javascript on a Landing Page <script src="/js/public/jquery-latest.min.js" type="text/javascript"></script> <script src="/js/public/jquery.cookie.js" type="text/javascript"></script> <script src="/js/public/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 = [ "yourcompany.com", "yourcompany2.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 = "yourcompany.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 = "keyword";    // IDs for the fields to be updated.   var searchStringField = "#Search_String__c";   var searchEngineField = "#Search_Engine__c";   var payPerClickKeywordField = "#Pay_Per_Click_Keyword__c";   //    //-- 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: "" });         // 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});     }   }     // 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'));});</script> 4. Add cookie code on your website (Optional) To close the loop on capturing the keyword, search engine, and PPC, you need to add Javascript to your website similar to that above.  This code will store that informaiton in cookies, then those cookies will be read when the user submits the form (with the javascript above on your landing pages).This Javascript uses the jQuery, jQuery Cookies plugin, and jQueryString plugin scripts.  Deploy them on your site and note the URL where they're hosted.You'll also need to edit all of your web pages, similar to when you installed Munchkin tracking.  You can put the Javascript in the same spot of the webpage.In the code below, change the Javascript src URLs to match where you installed jQuery and the plugins excludedReferrers variable as you did in the Javascript above cookieDomain variable to be "yourcompany.com" as you did above payPerClickParamater variable as you did above <script src="/js/jquery-latest.min.js" type="text/javascript"></script> <script src="/js/jquery.cookie.js" type="text/javascript"></script> <script src="/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 = [ "yourcompany.com", "yourcompany2.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 = "yourcompany.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 = "keyword";    // 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 a:        //  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: "" });          // 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});     }   } }); </script>
View full article
What is Marketo’s Marketing Calendar? What are its benefits? What features does Marketing Calendar include? Is it free or do I need to pay for it? How do I get or buy Marketing Calendar? As of our August release: 1 week after our August release How do I know if Marketing Calendar has been turned on? What is the Program Schedule View? Will I need a services package to implement Marketing Calendar? Is this article helpful ? YesNo
View full article
The Google Apps antispam system uses a unique means of whitelisting. Customers on shared IPs should whitelist Marketo's entire sending ranges, because we sometimes need to move customers between IPs for technical reasons. The way to whitelist a range in Google Apps is to configure a manual IP block with a pass through. G Suite enables you to specify an IP address or range of addresses within a domain, and allow messages from those addresses only. This feature is sometimes referred to as IP lock. In G Suite, you set up this feature in the Content compliance setting. IP lock is a method that readily enables an administrator to simultaneously whitelist all incoming traffic from a particular domain while equally preventing spoofing by manually defining the allowed IP ranges. The following instructions are particularly useful with domains that do not have an SPF record and/or use third party applications to legitimately spoof their address. Setting up IP lock with the Content compliance setting includes three separate procedures: Adding the domain, defining the allowed IP range, and setting the correct disposition and NDR. See this page of Google documentation for more information: Enforce 'IP lock' in G Suite - G Suite Administrator Help Instead of using a CIDR range, this interface asks for the first and last IPs in the given range. Here are ours: 199.15.212.0 - 199.15.212.255 199.15.213.0 - 199.15.213.255 199.15.214.0 - 199.15.214.255 199.15.215.0 - 199.15.215.255 192.28.146.0 - 192.28.146.255 192.28.147.0 - 192.28.147.255 94.236.119.0 - 94.236.119.63 185.28.196.0 - 185.28.196.255 103.237.104.0 - 103.237.104.255 103.237.105.0 - 103.237.105.255 130.248.172.0 -  130.248.172.255 130.248.173.0 -  130.248.173.255 Is this article helpful ? YesNo
View full article