Knowledgebase

Sort by:
You can now build reports that show you A/B test data. Here we go! 1.   Launch Revenue Explorer. 2.   Click New Report. 3.   Select the Email Analysis area and click OK. 4.   Find and right click Program Channel, then click Filter. 5.   Find and add Email Send or Email Blast, then click OK. 6.   Double click the Program Channel yellow dot to add it as a column. 7.   Double click the Program Name (yellow dot) 8.   Double Click Email Name (yellow dot) 9.   Double click Opened (blue dot) And that's all she wrote! Check out your awesome report. See how you can see which subject line worked best? Depending on what type of A/B test was done, you can see Subject Line, From Address, Send Time and Whole Email data appended in the Email Name. Deep Dive: Reporting / Revenue Cycle Analytics
View full article
Marketo has the ability to see and pull data from Salesforce Formula fields, there is however a catch which will be explained in this article.   Everytime the Marketo Sync connects to Salesforce it will scan records and look at the "SytemModStamp" (salesforce system field) for each one of them. It will compare this value with the stored value, which was pulled at the last scheduled sync. If the values match, Marketo will move on to the next record. If the values are different (new value later date than previous value), then Marketo will do a compare and contrast of all fields on that record in both systems and update the information as needed.   When a normal non-formula field is updated and changed on a Lead/Contact record in SFDC, the SytemModStamp value is updated. This is how on next sync Marketo knows to do a compare/contrast check and pull updates. Formula fields do not behave the same way. A formula field is calculated based on data in fields called upon in the formula; this means that the formula field calculation itself will not update the SytemModStamp in Salesforce.   Chances are you already have existing records in SFDC and Marketo. If you were to create a formula field today in your instance of SFDC and have it sync down into Marketo, the data calculated for the formula field in SFDC will not come into Marketo right away. The reason for this is, the formula field has created data based on already existing data, this does not result in a SytemModStamp change.   Typically formula fields will be a calculation of data from fields which are somehow related to the lead/contact record. This means that moving forward, any change in the normal field, will result in a SytemModStamp change as well as a recalculation of the formula field. In this case, Marketo will see the updated SytemModStamp due to the normal field change. Marketo will do the compare/contrast excercise and find that the formula field also needs updating.   If you create a formula field in SFDC and would like to have all the historical data for the formula field to come into Marketo, you can force an update on the records in SFDC to update the SytemModStamp. This way, on next sync, Marketo will see the formula data and pull it in. Alternatively, you can simply allow for natural SytemModStamp updates in SFDC to occur which should result in a slow trickle of historical data from SFDC into Marketo for the newly created formula field.   You can only use data from a formula field in Marketo to segment data and filter. If you try to do a change data value, Marketo will accept the change, tries to sync it to Salesforce and fails to update there. Eventually the Salesforce calculated value will come back into Marketo. Is this article helpful ? YesNo
View full article
Here are directions for changing a one column form into a multi-column form. Set up your form To create a two column form, first you need to make some changes to the form that you're using.  First, you need to reorder your form fields.  The (visible) fields get divided into two columns by odds and evens -- odds in the first column and evens in the second column. If you want to arrange your fields like this: First Name Company Name Last Name Phone Number Email Address Then you need to order your form like this: First Name Company Name Last Name Phone Number Email Address Please ensure that you have access to an experienced JavaScript developer. Marketo Technical Support is not set up to assist with troubleshooting JavaScript. Also while you're on the form, note the values for Label Width, Field Width, and Gutter Width in the Form Properties: Set up your landing page On your landing page, add the form to that page (if you haven't added it already).  Make sure you leave enough space on the page so that the form looks correct once it's laid out in two columns.  The two column form will take half the height and twice the width of the single column form. Next, drag in a Custom HTML box and add the following code.  It does two things: rearranges your form into two columns and (via Javascript) corrects the tab order of the form fields. In the code below, you need to change the column width and form width to match your form.  You'll need the Label Width, Field Width, and Gutter Width from your form which you wrote down earlier: Column width (300px below) must be at least (Label Width + Field Width + Gutter Width + 46) Form width (700px below) must be at least (2 * Column width) <style type='text/css'> form.lpeRegForm li.mktField { float: left; width:300px; clear: none; height: 26px; } form.lpeRegForm ul { width:700px; } #mktFrmButtons { clear: both; } </style> Moving the error messages Depending on how you set up your form, the error messages that appear on each field may be in the wrong position. Use this CSS to move the error messages below the field. You may need to tweak the left or top amounts until it appears correct on your form. <style type="text/css"> span.mktFormMsg { left: 0px !important; top: 15px !important; } </style> Changing the tab order For a vertical tab order (as opposed to horizontal), add this javascript in that same Custom HTML block: <script src="/js/public/jquery-latest.min.js" type="text/javascript"></script> <script type="text/javascript"> var $jQ = jQuery.noConflict(); $jQ(document).ready(function() { // fix the tab order $jQ('.mktInput :input').each(function(i) { if (i % 2) { $jQ(this).attr('tabIndex',30000+i); } else { $jQ(this).attr('tabIndex',i+1); } }); }); </script> That's all!  After you add that code, you should see that the form now is laid out in two columns: Adding section breaks To add multiple sections in your form, you need to know the IDs of the fields immediately before and after the break.  See this article for instructions on getting the field IDs: Setting or Getting a Form Field Value via Javascript on a Landing Page In this case, we'll add a break between email address ("#Email") and company name ("#Company").  Add this inside the $jQ(document).ready() javascript block: $jQ('#Company').parents('li').css('clear','both'); $jQ('#Email').parents('li').css('margin-bottom','20px'); When done, it will look like this. This section break may mess up your tab order.  Delete the javascript block that assigns the tab order ($jQ('.mktInput :input').each(...)) and use jQuery to assign them manually, It tabs in ascending order: $jQ('#FirstName').attr('tabIndex',1); $jQ('#Email').attr('tabIndex',2); $jQ('#LastName').attr('tabIndex',3); ... Download Attachments: Two column forms-JS.txt
View full article
When trying to sync updates to your salesforce.com instance from Marketo you see the following error in the activity log : "Failed: INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY" This is an error sent to Marketo from salesforce.com. There are a number of reasons why this error could occur but the root cause is always linked to the permissions of the Marketo user that you have set up in salesforce.com. INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY means that the user who is trying to make the update does not have access to a related element that is required for the record to be updated and saved in SFDC. There are a number of specific examples of what might be the cause but these will vary from organisation to organization depending on the configuration of your salesforce.com. If you were to connect to sfdc as the Marketo user and try manually updating the same record that Marketo is trying to update then you will get the same error in the salesforce.com UI. Here are a list of some elements that you should check in SFDC if you see this error: Do you use record types? If so make sure that the the Marketo user has access to all required record types. Are there any look-up or master detail fields on the object in question? If these types of fields are being updated then make sure that the Marketo user has access this object/ these records. Do you use Apex? If so you may have trigger that fire on the the update of a record, you will need to make sure that the Marketo user has profile access to the relevant Apex classes. If you have any workflow rules or assignment rules that send an email when the record is saved then you will need to make sure that the Marketo user has the send email permission and has access to the email folder that contains the mails that are sent rules are triggered. Make sure "Convert Leads" is turned-on within SFDC.  If it is not, you will get this error message when trying to merge leads that exist within Marketo and SFDC. 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. Summary: Say you want to validate a custom field before someone submits a Marketo form on a Marketo landing page, then let Marketo do it's standard validation. You can do that by overriding the formSubmit function in Javascript.  You can override it with a Custom HTML element for a single page; you can also add this Javascript to your landing page template so it affects many landing pages. First, build a Javascript function to execute your custom validation (formIsValid() in the example below).  It should return a value of "true" if the fields validate. If not, return false. Open the landing page for editing and drag a Custom HTML element onto the web page.  Paste in this Javascript and add your custom validation to the formIsValid() function. <script type="text/javascript" src="/js/public/jquery-latest.min.js" language="Javascript"></script> <script type="text/javascript">      // set no conflict mode for jquery   var $jQ = jQuery.noConflict();   function myFormIsValid() {     var thisIsValid = true;     // Put your custom validation here.     // If anything goes wrong, set thisIsValid to false.         // for example, show an error message if the email contains "bob"     if ($jQ("#Email[value*=bob]").length > 0) {        Mkto.setError($jQ("#Email ~ span").prev()[0],"No Bobs allowed!");        thisIsValid = false;     } else {        Mkto.clearError($jQ("#Email ~ span").prev()[0] );     }     return thisIsValid;   }   function formSubmit(elt) {     if (!myFormIsValid()) {        return false;     }     return Mkto.formSubmit(elt);   } </script> Here's another example that checks if a required checkbox, such as a terms of service agreement, is filled before submitting: <script type="text/javascript" src="/js/public/jquery-latest.min.js" language="Javascript"></script> <script type="text/javascript">      // set no conflict mode for jquery var $jQ = jQuery.noConflict(); function myFormIsValid() {     var thisIsValid = true;       // show a message if they fail to check the box     if ($jQ("#TermsOfServiceAgreement").attr('checked') != true) {        Mkto.setError($jQ("#TermsOfServiceAgreement ~ span").prev()[0],"Please agree to the terms above.");        thisIsValid = false;     } else {        Mkto.clearError($jQ("#TermsOfServiceAgreement ~ span").prev()[0]);     }     return thisIsValid; } function formSubmit(elt) {     if (!myFormIsValid()) {        return false;     }     return Mkto.formSubmit(elt); } </script> Follow these instructions if you want to retrieve the form fields via Javascript: Setting or Getting a Form Field Value via Javascript on a Landing Page The example above also shows you how to set an error field If you want to set or clear an error message on a field, you can use these two functions in your validation function. Note: These only work on form fields from the Marketo form designer. Replace the highlighted yellow bits below: Email -- the ID of the field where you want to show an error error message -- the text you want to display for this error           // error -- highlight the field           Mkto.setError($jQ("#Email ~ span").prev()[0], "error message");           // no error -- clear the field           Mkto.setError($jQ("#Email ~ span").prev()[0]);
View full article
A tagging campaign is designed to entice your leads to click your emails.  Once they do that, you can track their future web activities.  You can also use it to scrub your mailing lists of leads who don't want to receive your marketing material. The hardest part is coming up with an offer that encourages them to click your email. What's in a tagging campaign? At a high level, you'll need: An email offering a prize for people who click Include a link to unsubscribe people to clean out your DB A thank you landing page for people who click through A smart campaign to send the emails mailing A smart campaign to handle the unsubscribe clicks   As leads click through the email, they get cookied so that all their subsequent web activity is tracked (whether they enter or unsubscribe).  Include the unsubscribe link so you can get uninterested leads off your mailing lists. The campaign is quick to set up, fun for your recipients, and great for you to identify anonymous leads. Pick a hook First, choose an offer that will compel people to click a link in your email.  Some examples of offers that get high click-through rates include: Prize Only Example: "Hi, we are giving away a free iPod.  Click here to enter to win!..." Charitable donation Example: "We'll donate $1 to Habitat for Humanity for each recipient who clicks this link." Cleaning up DB Example: "Hi, we are cleaning up our DB.  If you want to receive updates from us, click here.  Otherwise, click no thanks."  (Either one they click is a cookied customer)   Best Practice: It is more important to have a cookied customer than one who is subscribed to receive marketing emails. Create the assets You'll need to create and approve a few Design Studio items to make this work: Email: use the hook you picked in the first step Landing Page: a Thank You page relevant to your offer Prize: "Thank you for entering!" -- you don't even need an entry form! Cleaning up DB: One for, "thanks for your continued support." Another for, "we'll unsubscribe you immediately." Create the campaign(s) Pick any segment of your lead database to receive the email. Send Email Smart List: (pick any DB s segment) Flow: Send Email -- [your  email] You may need some other campaigns to handle your prize and unsubscription clicks.  For example: Prize -- create a static list called "Prize Entries" Smart List: Trigger on "Clicks link in email -- [your email]" constraint on Entry Link Flow: Add to List -- Prize Entries Cleaning up DB Smart List: Trigger on "Clicks link in email -- [your email]" constraint on Unsubscribe Link Flow: Change Data Value: Unsubscribed is True   That's all you need to do in Marketo. A week or two later, if you're giving away a prize, use the Random Sample filter to dig up a lead to receive the prize. Is this article helpful ? YesNo
View full article
This solution will ONLY work with Forms 1.0. Is this article helpful ? YesNo
View full article
We have enhanced the behavior of the unsubscribe functionality to make it “durable”.  We have added a master email status, which is separate from the unsubscribe flag visible on the lead detail record.   If the unsubscribe flag is set from false to true, the master email status is updated, and the change is propagated to other leads with the same email address. Update the Unsubscribe flag from True to False (e.g. Re-subscribe a lead) When a lead is imported, the unsubscribe flag WILL NOT be overwritten by the import. Here are the ways a lead can be re-subscribed: 1.   In SFDC, uncheck the Email Opt Out field.  This WILL sync to Marketo. 2.   Manually update the lead detail record by un-checking the unsubscribe flag 3.   Run a Change Data Value Flow Action on one or many leads a.  Select the attribute “unsubscribe” and set the value to False     4.   Update an existing lead via API 5.   Form Field – set a field on a form to set the unsubscribe flag to “false” and this will unsubscribe the lead a. Best practice would be to have text on the form that says that by filling out this form, they are agreeing to receive email communication Creating a New Lead When a new lead is created, we check it against the master email status table.  If the lead was previously unsubscribed, we will update the record to be unsubscribed.   Changing an email address If you change the email address of a lead to an unsubscribed email address, the lead will be unsubscribed.  This change can occur in either Marketo or SFDC. If you change an unsubscribed email address to one that is subscribed, the lead will be subscribed. Is this article helpful ? YesNo  
View full article
Marketo has developed email templates that have been tested in over 40 email clients.  It is important to ensure that your emails will look good no matter where you send them.  Additionally, these emails have been crafted to reduce spam scores and increase deliverability. Feel free to use these templates.  They have all the markup you need to get started right away. Curved Paper Curved Paper with Sidebar Round Corners Round Corners with Sidebar To customize the style: Copy the email template to any text editor. Replace #312B7B with your corporate color.  Download TrayColor if you need a tool to get the color from your website. Replace the Logo with your own logo (search for "logo" in the source).  If you upload an image to Marketo for this purpose, make sure to use the full URL. Replace the Title at the top Replace the Contact Info in the footer at the bottom Optional -- change the sidebar width (search for "250px")* Paste back into the Marketo Email Template and Preview.  Everything should be ready to go. *The Curved Paper with Sidebar will not render correctly if you change the sidebar width.
View full article
For more in-depth information on Landing Pages, please click the link below.   Landing Pages, Easy, Powerful, Complete Is this article helpful ? YesNo
View full article
You may need to have multiple CNAMEs to brand your landing pages for different product lines or company divisions. We recommend that all CNAMEs be on the same domain since cookies do not travel across domains. A good example would be: product1.mycompany.com product2.mycompany.com product3.mycompany.com If you absolutely need the domains to be different that is fine, just keep in mind that you will have to run a tagging campaign to every single domain to ensure that all activity across all domains are being tracked under the same lead in Marketo. This would look something like this: go.mycompany1.com go.mycompany2.com go.mycompany3.com Before you begin adding multiple CNAMEs in Marketo your IT staff will need to create the CNAME records on your domain(s) DNS. See Customize Your Landing Page URLs With a CNAME to have your IT staff create the records and to set the first CNAME. Once that has been completed you can add your additional CNAMEs as Domain Aliases.   Go to Admin then click on Landing Pages. Click on New then New Domain Alias. Enter your Domain Alias and click on Use non-Marketo Landing Page if you want to set the default page to an external one. Enter your Default Page and click Create. Nice job! Now all your Marketo landing pages can be pulled up from two different URLs, in this example: http://product1.mycompany.com/contact.html http://product2.mycompany.com/contact.html   Is this article helpful ? YesNo
View full article
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/javascript"></script> <script type="text/javascript"> var $ = jQuery.noconflict();     $(document).ready(function() {   if ($.browser.msie) {   $('select.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