Knowledgebase

Sort by:
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
Overview A blacklist is a database of IP addresses or domains that have been associated with the sending of unsolicited commercial email or spam.  Internet Service Providers (ISPs) and business email networks use information from blacklists to filter out unwanted email.  As a result there can be a drop in inbox delivery rates or overall delivery rates if the IPs or domains involved with sending email are listed on a blacklist. Marketo’s Email Delivery and Compliance team monitors blacklist activity on our IPs and domains daily. When we are alerted to a listing we reach out to the blacklist, attempt to identify the sender that triggered it, and work with the blacklist organization to get the listing resolved. There are thousands of blacklists out there most will not have a significant impact on your delivery rates. Below we have compiled a list of the blacklists that our customers most commonly encounter. Tier 1 Blacklist Spamhaus​ Impact: Spamhaus is the only blacklist that we categorize as a tier 1 for a reason: it has by far the greatest impact on delivery of all of the blacklists. It is the most well-respected and widely used blacklist in the world. A listing at Spamhaus will have a negative effect on your ability to deliver emails to your customer’s inbox and can cause bounce rates of over 50%.  Evidence suggests that most of the top North American ISPs use Spamhaus to inform blocking decisions. How it works: Unlike many blacklists, Spamhaus lists senders manually. This means that they are proactively watching sender activity, collecting data, and basing their listings on a number of variables. Most commonly senders are listed for mailing to spam trap addresses that Spamhaus owns. Sometimes Spamhaus will list senders based on recipient feedback as well. Next steps: Our team monitors closely for Spamhaus listings. When we see a listing we immediately alert the customer and contact Spamhaus to start the remediation process. Listings last until Spamhaus is satisfied that the offending sender has taken the appropriate steps to mitigate the problem. Tier 2 Blacklists SpamCop Impact: SpamCop is not used by any of the major North American ISPs to inform blocking decisions but it makes it to the Tier 2 list because it can have a significant impact on B2B email campaigns. How it works: SpamCop lists IPs for one of two reasons: Either the email hit SpamCop spam trap addresses OR A SpamCop user has reported the email unwanted. Most of SpamCop’s spam traps are previously valid addresses that have not been active for 12 months or longer. Next steps: SpamCop is a dynamic blacklist, listings typically resolve themselves within one business day.  There is no action you will need to take to action the delisting with SpamCop, the Privacy Team researches every SpamCop listing and will request delistings when an alert is received that an IP is listed. If your email activity triggered a SpamCop listing it likely means that you have a list management problem that should be addressed. Manitu Impact: Manitu is a German blacklist and has a wide footprint in Europe.  Email senders with European audiences tend to encounter this blacklist most frequently. Manitu is not used by North American ISPs to inform blacklist decisions but if you’re sending to Europe a listing could be problematic. How it works: Listings are automatically activated when a sender mails to a Manitu owned spam trap address. Next steps: The Privacy Team researches and requests delisting when an alert is received that a Marketo IP is listed.  By working with this blacklist the Privacy Team is usually able to identify the customer and let them know that email activity from their subscription triggered a listing. Because Manitu operates solely on the use of spam trap addresses, getting listed by Manitu is a clear indication that senders need to audit their mailing lists. Tier 3 Blacklists      SORBS Impact: The impact of a listing at SORBS is very minimal. How it works: SORBS uses several methods to identify potential spammers. Most of their lists use spam traps to identify problematic senders. But SORBS will also list a sender based on their own user complaints, if SORBS administrators have received spam from the sender, or if they identify other high-level sending behavior patterns characteristic of spammers. Next steps: The Privacy Team monitors SORBS activity and makes delisting requests for Marketo IPs as necessary. Oftentimes, SORBS will refuse to delist within a certain timeframe based on the severity of the issue.  Sometimes this can be up to several weeks. UCEPROTECT Impact: The impact of a listing at UCEPROTECT is very minimal, though the blacklist has a greater footprint in Europe. The organization does not have a good reputation in the industry because they charge senders to request delisting. How it works: UCEPROTECT lists IPs that send mail to their spam trap addresses. Next steps: We ignore these listings because the only way to have them removed is to pay. The pay-to-delist model is not well respected in the email industry so UCEPROTECT has a very limited reach. ISP Blacklists Some ISPs have their own blacklists that they use to inform blocking decisions. A few examples are Comcast and Verizon. If your IP is being blocked by one of these networks, and those networks have a large presence in your lists, a block of this kind could have a noticeable negative impact on delivery. Marketo monitors for this type of ISP specific blacklisting and the the Privacy Team works to resolve these as soon as possible. Usually blocks at Comcast and Verizon are resolved within less than 24 hours of a delisting request. Additional Resources: Blacklist Deep Dive​ Abuse Report Deep Dive​ What is a spamtrap, or spam trap, and why does it matter? Blacklist remediation Blacklist resolution flowchart Successful lead reconfirmation What is a blacklist?
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
If you ever need to change your CNAME there are a few things you should consider. Old Links In order to ensure that old links sent out via email are not broken, you should: Remove the old CNAME Setup your new primary CNAME Add the old one back in as a domain alias. You can use Add Additional Landing Page CNAMEs for detailed instructions on adding a secondary CNAME. This will allow all old links to still be functional. Cookies Our recommendation is to change the sub-domain so that cookies can be shared. If you change the top level domain itself, the cookies cannot be shared and every lead would have to re-introduce itself to the new domain by either clicking on a link in an email or filling out a form. Same top level domain go.mycompany.com > info.mycompany.com Good! Cookies are shared. Different top level domains go.mycompany.com > go.mynewcompany.com Bad! Cookies are not shared.
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