Knowledgebase

Sort by:
Required Profile Permissions for Marketo Synchronization API Enabled Manage Public Documents Manage Public Templates Edit HTML Templates Edit Events Edit Tasks Convert Leads Transfer Lead* Transfer Record* Enable Read/Create/Edit/Delete access on the following required Standard Object Permissions: Opportunities Contacts Leads Accounts Campaigns (if you choose to enable campaign sync) From the Profile Detail page, click Edit and complete the steps in this section. In the old profile layout the following should help: Enable the following Administrative Permissions: API Enabled Manage Public Documents Manage Public Templates Edit HTML Templates Transfer Record * Enable the following General User Permissions: Edit Events Edit Tasks Convert Leads Transfer Lead* Enable Read/Create/Edit/Delete access on the following required Standard Object Permissions: Opportunities Contacts Leads Accounts Campaigns (if you choose to enable campaign sync) Click Save to save your changes and return to the Profile Detail page. Enable Read access on any custom objects that you'd like to sync with Marketo. Marketo only supports syncing of custom objects associated with leads, contacts, and accounts. For merging leads, this profile needs Edit and delete access on the lead object and on all objects (standard and custom) that your Leads and Contacts use.   *Transfer Lead and Transfer Record are optional but may be required if you wish for Marketo to be able to change the owner of a record   You must add each field you want synced to Marketo to your page layout; all other fields will not be synced.  If you use other editions of Salesforce, Marketo will sync down all fields that the sync account has permission to access (whether or not they're in the page layout).    
View full article
Issue Description An Email with only emoji in the subject line is displaying "Subject is empty" error and is not approving, or emoji fail to render elsewhere in the email. Issue Resolution If the subject line only consists of emoji, consider adding text. The Email Editor was not designed to insert emoji. However some have been able to insert emoji from outside sources. Those with the most success are inserting UTF-8 encoded emoticons. This specific encoded emoticon can be inserted (copy/paste) through a 3rd party website, located with a general web search: "UTF-8 emoticons/emoji". If the inserted emoji has a different encoding, it may fail to render in the Email Editor, and it may fail to render upon delivery as well. Rendering upon delivery will be reliant on the recipient server. If the emoji is considered invalid, then the 'diamond with question mark' character may remain. Alternatively, b asic symbols could be used instead of emoji, as they are ASCII characters and not reliant on extra encoding. 3rd party sites, identified with a websearch: "ASCII symbols", can be a resource. Another option can be q-encoding the emoji in UTF-8 format to render a string of code that can be used. This code tells the email client to render the desired emoji. To q-encode, copy and paste the desired emoji through a Unicode to UTF-8 translation tool, such as https://tools.bluestatedigital.com/kb/subject-line-assistant ​and then insert the translated code.
View full article
Issue Description I received the below notification in which the error states that CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY: CRMfusionDBR101.DB_Lead_BIUD_AIUD: System.LimitException: Apex CPU time limit exceeded     Issue Resolution The error means that you have one or more triggers running when the leads are inserted that consume too much CPU time. You are hitting what are called SFDC Governor limits . This is really something you need to review with your SFDC admins and developers. Consider moving some workflows from Triggers (synchronous) to batches (asynchronous).   Who This Solution Applies To Customers integrated with Salesforce Is this article helpful ? YesNo
View full article
Double opt-in is the gold standard of email permission. Also known as confirmed opt-in or COI, this practice is where a person fills out an opt-in form and is then sent an email and must click a confirmation message before they are added to the mailing list. Here are some great reasons to use double opt-in: Protects against typos and bots Protects against spamtraps Reduces bounce rates, improves deliverability Required in some regions Increases engagement rates   If you'd like to set up double opt-in with Marketo you can do this with the use of the Marketing Suspended function. Marketing Suspended is a status that is functionally equivalent to Unsubscribe - Marketo will not send these leads marketing emails, but will send them operational emails. You'll need an opt-in form and a pair of trigger campaigns. First, set up a trigger campaign such that, when the form is filled out, the flow has a Change Data Value to mark the lead as Marketing Suspended, and then a Send Email step to send an operational email that you will use to confirm their request to join your mailing list. Your confirmation email should be short and to the point, and make sure to set it as an operational email. We recommend that it is clearly branded, use a simple subject line such as "Confirm Your Request to Join Our Mailing List" or similar, and include a link within to a simple confirmation landing page. Set a second trigger campaign such that whenever someone clicks the confirmation link to the confirmation landing page, the flow will change data value Marketing Suspended new value is false. A follow up flow should be set up that if the recipient doesn't activate the link in the confirmation email the address is either deleted or set to Blacklist within the database after a reasonable timeframe, usually 2 weeks.  The Blacklist status will ensure that no email is set to that lead until they have completed the subscription process. This prevents future operational emails from being sent to this email address unintentionally. That's it!  Now, when someone fills out your opt-in form, they will be set to Marketing Suspended until they click the confirmation link in your operational confirmation email. You'll be well on your way to increasing the quality of leads on your mailing list by implementing this simple process.
View full article
On the Schedule tab of a Smart Campaign, you'll see a count of the number of leads who are blocked from receiving emails:     Here are the reasons why your lead might be blocked from a mailing: Unsubscribed = True Email Invalid = True Marketing Suspended = True Blacklisted = True Email Address is empty Email suspended at in past 24 hours Leads that are blocked from mailings will run through the campaign's flow. However, these leads will be ignored any Send Email flow steps. They will execute all the other flow steps of the campaign. Note: If your Email is flagged as an Operational Email, Marketo will ignore the Unsubscribe and Marketing Suspended flags when running the Send Email step - but these leads will still count in the number blocked from mailings. Getting a list of all blocked leads First, set up a Smart List in your Lead Database to find all leads blocked from mailings as shown below. Make sure to set the list for ANY filter as highlighted below:   To find leads were blocked in a campaign you already ran, filter for leads in the Leads Blocked From Mailings list you just built and members of that campaign: To find leads will be blocked in a campaign you are going to run, filter for leads in the Leads Blocked From Mailings and re-create the Smart List for your campaign:    
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
  Welcome to Marketo Support This guide provides individual links that covers the following topics: Marketo Support Policies Service Level Agreement How to Contact Marketo Support How to Submit a Case Tips on Effective Case Submission Managing Authorized Support Contacts (Support Admins) Managing Your Cases How to Escalate    
View full article
  Ready to secure your Marketo landing pages? Whether you’re securing your pages for the first time or adding additional CNAMEs to your already secured instance, you’re in the right place!   NOTES: As of late 2019, ALL subscriptions now include a base Secured Domains offering - this covers your first landing page domain and first tracking link domain. Additional domains may be purchased a la carte. Secured Domains includes the necessary SSL certificates; therefore, Marketo no longer accepts customer-provided certificates, unless they are EV type. These certificates auto-renew annually, eliminating the risk of expiration and hassle of having to renew them yourself. Please contact your Marketo Customer Success Manager for more information or to purchase additional domains.   To get started, please choose one of the options below:   Setting Up Secured Domains for Marketo Landing Pages - FIRST TIME SETUP Setting Up Secured Domains for Marketo Landing Pages - ADDING NEW SUBDOMAIN Legacy SSL vs. Secured Domains Overview    
View full article
  Marketo now fully supports responsive landing pages, we call the new style a "Guided Landing Page". A Guided Landing Page is one that is capable of dynamically resizing itself for different window sizes and devices. If you’ve used the Marketo interface to set up an Email Template and an Email, the basic concept of setting up a responsive template and landing page will feel pretty familiar.   First you have to define a template that contains the editable areas of the landing page, once that is completed you use that template to build the landing page. Unlike the Email editor however, constructing and altering a responsive landing page template will require a minor amount of HTML knowledge.   If you are not comfortable in HTML and do not have an HTML developer available to assist you, Marketo’s services team can help! You can reach them at services@marketo.com   To get started, first visit our Template Library for Guided Landing Page Templates located here: https://docs.marketo.com/display/public/DOCS/Guided+Landing+Page+Templates;jsessionid=5D71353C1CBF708DEC3DAB1588E78B4F     Select the template you’d like to use, right click the link and select “Save Link As” to download the HTML code.   Once the template is saved locally on your computer, go to where it’s saved and open it in the text editor of your choice. What you’ll see is a whole bunch of HTML:     In your text editor, use CTRL-A to select all and CTRL-C to copy it to the clip-board. (On a Mac this is Command-A and Command-C) then log on to your Marketo instance.   In your Marketo instance, go to the Design Studio and select “New Landing Page Template”     In the New Landing Page Template window, assign your template a folder and a name, then make sure the editing mode is “Guided”. The “Free-form” mode is for the non-responsive templates that we had before. Click “Create”!     Now we’re ready to replace the sample template code with the code you downloaded from the Template Library.   CTRL-A (Command-A on a Mac) will select the starter code and CTRL-V (Command-V) will paste the template code right over the top of the existing code. The template will save itself automatically when finished.     Now that the template is ready to go, we’re ready to see it in action!   Using a Marketo Guided Landing Page Template:   Now that we have a template created, we’re ready to start using it. Close the template tab where the code is and go back to the Design Studio.   Select the template you just created and approve it.     Once the template is approved, you can use it to create a landing page. In the new landing page window, assign a folder and a name and select the template you just created. Click “Create”!   You can always identify which templates are responsive and which are not by looking for a little window icon on the right hand side. If the window icon is present then that template was created using the new Guided editor and is fully responsive. If the window is not present, then that template was created using the old editor and it’s NOT responsive. You cannot automatically convert an old non-responsive template to a new one.   Congratulations! Your new responsive template is ready to use!   Please see our documentation here on how to edit a Guided Landing Page:   https://docs.marketo.com/pages/releaseview.action?pageId=7515306      
View full article
Issue Description This describes the difference in how filter logic applies to triggers and filters in a Smart Campaign Smart List.   Issue Resolution You can view the video on this here .   Filter logic in a Smart List only applies to filters (the green criteria) and not triggers (the orange criteria.) If you have multiple triggers in a Smart Campaign, they will always operate on ANY/OR logic, which is to say, only one of the triggers needs to fire in order for the Smart Campaign to run. The filter logic you select, whether it is AND, ANY, or Advanced, will be used to further filter the leads after the trigger has fired.
View full article
Issue You want to run a report that will show you which leads/people clicked on links within a specific email.     Solution The Email Performance report will show click rate and what links are in emails, but not which specific leads leads clicked on a link. To see that, you can instead create a Smart List. Using the filter of "Clicked Link in Email," you can then pick the desired email and the results of the Smart List will show you which leads clicked a link in the desired email.
View full article
Here it is: Your guide to understanding merges in Marketo, in Salesforce, and how the two interact. Merging Two Leads We begin with two records in Marketo which have been synced to Salesforce. Both are leads in Salesforce, not contacts. Lead A, Marky Marky, has a Marketo ID of 1001446 and an SFDC ID of 00Qi000000vJ0hK. Lead B, Markee Marquee, has a Marketo ID of 1001447 and an SFDC ID of 00Qi000000vJ0hU. We wish to merge these leads in Marketo. In this example, I first select Lead B, and then hold SHIFT to select Lead A as well. Then right-click in the highlighted area to bring up the Lead Actions drop-down (or click Lead Actions at the top of the screen), and select Merge Leads from the choices. Now I see the Merge Leads dialog box, where we decide which conflicting field values we want to win. We could click the box next to "Lead 1" if I want all of Markee Marquee's values to win. Instead we check the box next to "Marky" because we want that to be their first name, rather than "Markee". Then we click merge. Note: whichever record was most recently updated will be pre-checked to win field conflicts. Here's the result. Note how the remaining single lead has the ID 1001447, that of Lead B, the first one we selected. The first record you select is the target record - this records remains while the other record is deleted, it's field values, activities, and program memberships merged into this winning record. The leads are also merged in Salesforce, and the remaining record there has the ID 00Qi000000vJ0hU (Lead B) as we would expect. Merging Leads and Contacts Here we begin with a lead and a contact. We have a lead, Marky Marquee (Marketo ID1001447, SFDC ID 00Qi000000vJ0hU) , and a contact, Joe Hill (Marketo ID 1001448, SFDC ID 003i000002KAFGa). We first select Marky Marquee (the lead) and then select Joe Hill (the contact), and conduct the merge as we did above. This time, however, the second record we clicked, Joe Hill, shows up as "Lead 1". This seems to contradict what we said earlier, but it's happening because the second record is the contact, and the contact is always going to be the target record. I want Marky's name to win out, so I check their First and Last Name and then click Merge. Note: this will cause an error if the Marketo sync user in SFDC doesn't have the Convert Leads permission. Note that the remaining record has the ID 1001448, the ID of the contact, even though that wasn't the first record we selected in Marketo. The contact is always the one which remains. Program Memberships Here we have two leads: Dexter Science (ID 1001451) and James Frankough (ID 1001452). We add James to two programs, Program Example 1 and Program Example 2. We can see this in their activity log: Now we merge the records, selecting Dexter first (so they'll be the winning record), but we check James's values for the First and Last Name. Below is their activity log after the merge. Notice that there are new Change Program Status activities - because the target record in the merge was 1001451, but the programs were associated with 1001452, the system has to copy their program statuses over during the merge. If you double-click one of those activities, it gives "Lead merge transferring program membership (transfer)" as the activity's Reason. Activities caused by merges can trigger campaigns. For example, suppose there is a smart campaign with the trigger Program Status Changes, for an old program with no activity in months. Activities caused by a merge like this could trigger such a campaign. To prevent this from triggering campaigns, we can add Reason as a constraint: Campaign Memberships Next, we have two leads: John Doe (ID 247) and Johnathon Doe (ID 248). We've associated John Doe with two SFDC Campaigns: Campaign Example 1 and Campaign Example 2. When we merge John Doe into Johnathon Doe, since the target lead is ID 248 and the campaigns are associated with ID 247, it has to copy them over - just like it did with campaign memberships. However, unlike with program memberships, it does not provide a Reason in the Add to SFDC Campaign activity following the merge, meaning there's no easy way to prevent this from triggering campaigns which use the Added to SFDC Campaign trigger.
View full article
Overview A triggered campaign launches automatically when a specific action occurs. For example, you can use a triggered campaign to automatically send an email to a lead after she completes a form. Triggered campaigns have at least one trigger in their Smart List. When the lead activates a trigger and passes through the other filters in the Smart List (if you have any), the lead will immediately proceed through the campaign's Flow. In a Smart Campaign, the Smart List palette contains a separate folder with Triggers. These are the events you can use to activate your triggered campaigns. Be careful when using multiple triggers.  If you use two or more in a campaign, any single trigger can activate the campaign. Email Triggers Trigger Name Description Clicks Link in Email If someone clicks on a link in an email. This can be a specific link(s) or any link. Email Bounces If an email bounces from an address. Email Bounces Soft If an email bounces due to an auto‐reply, full mailbox, etc. Email is Delivered If an email is delivered to someone. Opens Email If someone opens an email. Unsubscribes from Email If someone opts out of email. Salesforce Specific Triggers Trigger Name Description Activity is Logged If an activity is logged in salesforce.This can include a logged call or task created. Activity is Updated If an activity that is already created is updated. Added to Opportunity If a contact is added to an opportunity. Added to SFDC Campaign If a lead/contact is added to a Salesforce campaign. Clicks Link in Sales Email If someone clicks a link in a sales email (an email sent through Sales Insight). This can be a specific link(s) or any link. Is Sent Sales Email If someone is sent a sales email (an email sent through Sales Insight). Lead is Converted If a lead is converted into a contact in Salesforce. Lead is Deleted from SFDC If a lead is deleted from Salesforce. Lead is Synced to SFDC If a lead is synced to Salesforce from Marketo. Opens Sales Email If someone opens a sales email (an email sent through Sales Insight). Opportunity is Updated If an opportunity is updated. Owner Changes If the owner of a record in Salesforce changes.This can be to a specific user or to any user. Removed from Opportunity If a contact is removed from an opportunity. Removed from SFDC Campaign If a lead/contact is removed from a Salesforce campaign. Sales Email Bounces If an email bounces from an address. Sales Email is Received If an email sent via Sales Insight was delivered. Status is Changed in SFDC Campaign If a lead/contact status changes within a Salesforce campaign. General Triggers Trigger Name Description Added to List If a lead/contact is added to a Marketo static list. Campaign is Requested If a contact/lead is sent into a Marketo campaign. Clicks Link If someone clicks on a link. This can be a specific link(s)or any link that is tracked. Data Value Changes If any data value on a record, includes all fields available for edit/update in Marketo and Salesforce is changed. Fills Out Form If someone fills out a form. Has Interesting Moment If someone has an interesting moment. Lead is Created If a Marketo lead is created. Removed from List If a lead/contact is removed from a Marketo static list. Revenue Stage is Changed If a revenue stage within a revenue cycle model is changed. Score is Changed If a lead score is changed. Send Alert If someone does something, send an email alert. Visits Web Page If someone clicks and visits a web page.This can be a specific page(s) or any web page.
View full article
Issue Your business has begun using Salesforce Lightning and you are wondering if there are specific steps or extra requirements for enabling Marketo Sales Insight within Lightning. Solution Marketo Sales Insight will automatically work within Lightning without additional install steps. You will find MSI within the Record Details on Leads, Contacts and Accounts. If you are trying to edit a visualforce page to place MSI on another page layout other than Details, you will not have success. MSI is not customizable. It will only appear in the Details section within Lightning.
View full article
Issue You or your customer have a global block on emails sent from servers with the domain "mktomail.com." You would like to keep the global block but allow email from your own Marketo instance to pass through.   Solution The return-path (or envelope_from) in the header of most Marketo emails includes the domain "mktomail.com." Some email servers may have a global block on this domain which prevents delivery of your Marketo emails. There are two options for bypassing this global block. Contact your account manager to see about added the Branded Envelope_From feature to your instance. This will replace the "mktomail.com" domain with a domain of your choice. Have the email admin add a Regex version of your return-path/envelope_from to the Allow List.  Which Regex you use will depend on which datacenter houses your instance. To determine the datacenter, look at the URL for your Marketo instance and see which letters come after the " https://app- ". "SJ" is for San Jose, "AB" is Ashburn, "E" is London, "SN" is Sydney The Regex you will use is as follows: San Jose datacenter - "munchkin_id.(\d+.)*\d+@em-sj-77.mktomail.com" London datacenter - "munchkin_id.(\d+.)*\d+@eu-lon-188.mktomail.com" Ashburn datacenter - "munchkin_id.(\d+.)*\d+@potomac1050.mktomail.com" Sydney datacenter - "munchkin_id.(\d+.)*\d+@snsmtp.mktomail.com" Netherlands datacenter - "munchkin_id.(\d+.)*\d+@em-nld1-01.mktomail.com"    Replace "munchkin_id" with the Munchkin ID for your Marketo instance. This operates as the unique identifier to allow only email from your Marketo through the block. Other email from the "mktomail.com" domain will still be blocked.    
View full article
Included in this article Overview The configuration changes between Marketo and Salesforce will stop the sync to the 16 affected fields. If you recreate those fields in SFDC, the backfill process will update those newly created fields with the current values housed in Marketo. With these existing values being backfilled into the newly recreated fields, Salesforce will see it as a regular data value change, which can cause other actions to occur from things like Apex Triggers, Workflows and 3 rd Party Apps from the AppExchange. While the backfill process is still running, you could also see inaccurate data in SFDC reports. This doc will show you what to look for and how to prevent issues they could cause. Effects Inside of Salesforce Marketo is entering the existing field values into the newly recreated fields inside of SFDC. While Marketo views this as just “catching up” the values between Marketo and SFDC, Salesforce will view it differently. As soon as the new fields are recreated in SFDC, the Marketo fields are remapped to those new fields. The backfill process begins and the sync is cut off to the older existing fields, so they immediately stop updating. This results in two important things to be aware of: Everything in SFDC referencing the older original fields will be referencing old data that is no longer updating . The backfilled values entered into the newly recreated fields will be seen by SFDC as brand new values , not the existing values that they are in Marketo. Visibility Rules SFDC has the ability to restrict access to Leads and Contacts for specific users and roles. Some customers will use this ability to restrict the Marketo Sync User from being able to access certain groups of Leads and Contacts in order to keep them from being able to sync to Marketo. Restricting visibility to Leads and Contacts prevents the backfill The backfill process uses the Marketo sync user ID to connect with SFDC. If the SFDC sync user has no visibility to a group of Leads and Contacts, there is no way for the backfill process to update those leads. Resolution Evaluate your business need first. If you need to keep these Leads and Contacts from syncing with Marketo even when considering this configuration change, don't open up the visibility to them for the sync user. Neither the backfill process or normal sync cycle will see them and no data will be synced with those leads. If you want all fields to be updated for these Leads and Contacts, allow the sync user visibility to access them before creating the new fields and starting the backfill process. That will allow the backfill to run and push the Marketo field values into the newly recreated fields in SFDC. You can still remove visibility to the Leads and Contacts later if you want. If you have already recreated the new fields in SFDC and initiated the backfill process without allowing visibility to the Leads and Contacts for the sync user, the data is not lost. If you decide to allow the sync user access to the Leads and Contacts later on, then any resync of the record will also update these affected fields. Areas Affected Anything in your SFDC instance that references these fields will be affected. For most customers, this won’t be anything to worry about, but for some, it can be a much bigger issue where actions are performed when they shouldn’t be. There are some key places where you will notice the trouble if it does happen. Workflows Salesforce Workflows allow you automate actions within SFDC and can be set to run based on any number of criteria. If your workflow rules reference the older original fields, when the sync to these fields is stopped, these workflows will be based off of field values that are not updating any more. If your workflow rules have already been updated to be based on the new fields, the data value change to the fields from the backfill process can cause the workflow to react differently than it should. Existing values already accounted for will be seen as new values and could re-trigger your workflow. More information on SFDC Workflows can be found here: Workflow Rules - developer.force.com Apex Triggers Apex Triggers let you take specific actions before or after record changes and can be used to perform a wide variety of tasks the same way that workflows can. If your apex trigger is set to trigger off of value changes in the original fields, since the sync to these fields is stopped, none of these triggers will fire. If your apex trigger is triggering off of the newly recreated fields, the data value change to the fields from the backfill process can cause the apex trigger to fire when it shouldn’t since existing values will appear to be new values. More information on Apex Triggers can be found here: Salesforce Developers - Triggers AppExchange Apps If your AppExchange app references the older original fields, then when the data stops syncing to them, that app will be working off of out of date values. If your AppExchange app references the newly recreated fields, the entry of new values from the backfill process can initiate actions when they aren’t supposed to be performed or had already been performed previously. More information on AppExchange apps can be found here: https://appexchange.salesforce.com/ Reports Salesforce reporting can pull data from multiple locations. If your reports are referencing these affected fields, the reports could show incorrect data. If your reports reference the original fields, then when the sync to those fields is stopped, your reports will no longer display current data. If your reports pull values from the newly recreated fields, there are two variations of what you will see. First, if the backfill process is still going on, not all records will have updated yet, so the reports aren’t yet up to date (but will be soon). Second, if the backfill process has completed, then your field values in these new fields will be up to date and your reports will all be accurate, so there is no longer any issue . When the backfill process has completed, an instance notification will be posted in Marketo to let you know that it has finished. More information on Salesforce reports can be found here: Getting Started with Reports and Dashboards Unit | Salesforce Formula Fields Salesforce formula fields work the same way that Marketo's formula fields do -- they take two (or more) other fields and combine them together to derive a new third value for the formula field's own value. Since the formula field has to reference other different fields, if one of the other fields referenced is one of these affected fields, your resulting formula field value could have incorrect data. If your formula field references the original fields, then when the mapping to those fields is changed, the values your formula field is calculating from will be out of date, resulting in an out of date formula field value as well. If your formula field is referencing the newly recreated fields, then it's possible that they are pulling data from fields that haven't fully been backfilled yet. As with the other places where the fields are in use, as soon as the backfill process is completed, there is no more issue and all data will be up to date. Examples of the Behaviors and Solutions Let’s say you have something in place (a workflow, apex trigger or AppExchange package) that will assign leads to specific sales reps when a lead’s score reaches a threshold of 35. Scenario 1: Not changed yet to reference the newly recreated fields, but backfill process is running. Lead records could reach a lead score of 35 while the backfill is still in process, but since the mapping of the Marketo lead score field has already been switched to the newly recreated field, that data value change activity won’t be recorded against the original existing field. Therefore, your process to assign the lead reaching a score of 35 would not be initiated. Solution: Take note of when you first recreated your fields in SFDC and kicked off the backfill process. Then take note of when the backfill process completes (you’ll get an instance notification in Marketo when it finishes). Set your workflow to compare the values between the old lead score field and the newly recreated lead score field to identify leads whose scores are different between the two fields (so you’ll find the ones who had a score change during the backfill process that wasn’t seen) and also search for leads whose score in the newly created lead score field is over 35. This will identify all leads who had a score change during the backfill process and hit the threshold but weren’t seen. Then have the workflow assign the leads to your sales rep. Scenario 2: After having changed to reference the newly recreated fields. The values being backfilled into the new fields will be seen as new values. So if a lead already has a score of 40 (already met the threshold of 35 sometime in the past), that existing score of 40 will be misinterpreted as a lead reaching the lead score threshold for the first time, resulting in the lead being reassigned in error. Solution: Create a workflow that compares the value in the original lead score field to the value in the newly recreated lead score field. If the scores are equal, then you know the lead had already hit the threshold in the past and this new time was in error, so your workflow can undo the action taken before. If the scores are different and the score in the newly recreated field is over 35, then you know the lead hit the threshold for the first time and was a valid candidate for the change in lead owner. Reporting Changes: The backfill process pushes data at the rate of 10,000 records per hour. Take the number of know leads in your database and divide it by 10,000 to get the approximate number of hours the backfill will take. This is the length of time when your reports could be off. Reporting from the original fields will only have data that is current up to the time when the fields were recreated and the mapping was changed over to those new fields. Reporting from the newly recreated fields won’t give a complete picture until the backfill process is completed. Solution: Run your reports from within Marketo while the backfill process is still running. There will be no discrepancies from any data within Marketo and Marketo is the source for all of this data anyway. Report Subscriptions can be set up to send the info to anyone who needs it. Preventing These Issues There are a couple of ways to approach this. The quickest way to avoid the issue is to not update workflows, apex triggers or AppExchange apps to point to the newly recreated fields until after the backfill process is complete. Also keep in mind that your formula fields could be getting used within these other places as well. This solution may or may not work for your company and your situation. You'll need to take a close look at your processes to see whether this solution works for you. After setting them to reference the newly recreated fields, disable or turn off the workflows, apex triggers and AppExchange apps so they can’t take any action. If you have formula fields using these new fields, you can also evaluate where your formula fields are used to check what needs to be updated or switched off that uses those. Then, when the backfill process is completed, re-enable them to turn them back on again. As with the previous solution, y ou'll need to take a close look at your processes to see whether this solution works for you. API Access All editions of Salesforce require API access for any integration to work. Professional Edition API calls were previously included as part of the integration while Enterprise and Unlimited editions required API access purchased by the customer from Salesforce. As part of this configuration change, Professional edition customers will now be required to purchase API access from Salesforce in order to continue syncing between Marketo and Salesforce. This includes the newly recreated fields as well as the rest of the integration. Salesforce Professional Edition Salesforce Professional Edition will require API access to be purchased from Salesforce to continue syncing after January 31st. This includes all components of the Marketo > Salesforce sync. MSI utilizes API calls to communicate with Marketo, so even if you are only using MSI, it will still require API access with Salesforce. Salesforce Enterprise & Unlimited Editions Enterprise and Unlimited Editions of Salesforce have already required API access to be purchased. The requirement to get API access will not have any new impact for Enterprise and Unlimited Editions of Salesforce. Where to Go for More Information Recap Summary Now that the changes have been completed, and the deprecation date has passed, this doc will give you the overview of what has happened: Changes to Marketo Salesforce Sync - Recap Summary Frequently Asked Questions Check out our FAQ for the answers to the most commonly asked questions. Changes to Marketo Salesforce Sync – Frequently Asked Questions​ Discussion thread We've created this discussion thread in the community to address any questions you may have. This discussion thread will be monitored by the Marketo team to ensure you get answers to your questions. Changes to Marketo Salesforce Sync – Questions and Discussion Release Schedule The release is being staggered over the course of 6 months. This doc will give you exact details so you can know precisely when your Marketo instance will be updated. Changes to Marketo Salesforce Sync – Release Schedule Under the Hood Documentation This doc will give you all of the nitty gritty details of exactly what is happening. If you're looking for in depth technical details, this is the go-to doc to check out! Changes to Marketo Salesforce Sync – Under The Hood Recreating Affected Fields There are different versions of Salesforce, but don't worry, all of the details on how to recreate the affected fields as well as a video tutorial can all be found in the documentation here: Adding Marketo Fields to Salesforce Contact Marketo Support If you would prefer to talk to someone live, please contact Marketo Support over any of the channel listed here: Contact Marketo Support
View full article
  This is a article attached image Upon signing a contract with Marketo you are provisioned a Marketo instance and a Support Service. There are four different types of Support Services which are available to meet different customer support needs: Online (Legacy) Business  or PREMIER SUPPORT BUSINESS (Legacy) Premier or PREMIER SUPPORT ENTERPRISE (Legacy) Elite or PREMIER SUPPORT ELITE Each Support Service has a different Service Level Target (SLT). An SLT is the amount of time Marketo Support targets to make first contact with you after a support case has been submitted. SLTs differ for each Support Service and priority level. Priority levels range from Priority P1 to Priority P4. Here are the SLTs and priority levels for each Support Service:   Priority Online (Legacy) Business PREMIER SUPPORT BUSINESS (Legacy) Premier PREMIER SUPPORT ENTERPRISE (Legacy) Elite PREMIER SUPPORT ELITE P1 1 hour 1 hour 1 hour 30 minutes 30 minutes 30 minutes 15 minutes P2 4 hours 3 hours 2 hours 2 hours 1 hour 2 hours 30 minutes P3 6 hours 5 hours 4 hours 4 hours 2 hours 2 hours 1 hour P4 3 days 1 day 1 day 1 day 1 day 1 day 1 day   Here are the descriptions for each priority level: Priority Description P1 Mission Critical:  Core business function down or potential loss of mission critical data P2 Urgent:  Major feature or workflow is not functioning. Mission critical workflow and majority of user community is not blocked P3 Important:  Normal usability or task completion is impacted but functional, or workaround is available P4 Minor:  Minor issue requiring a correction. Normal workflow is not impacted   Find more information About Support here!  
View full article
Issue How to setup the favicon, aka Favorites Icon for Marketo Landing Pages. Solution Steps to Setting up Favicon 1. Ensure you have the favicon hosted either externally or internally in Marketo. (Don't know how to find the link of a image hosted in Marketo? Check this DOC out) 2. On the Landing Page Settings ensure that option 'Remove default favicon links' is selected. Note that this affects all landing pages globally (scroll down in the settings, it might be hiding) [Related DOC ] 3. You can specify the favicon in two ways:    a. Directly on the landing page in the custom HTML Header [Related DOC ]    b. In the Landing Page Template's Header 4. This code would need to be specified in the header <link rel="shortcut icon" href=" <favicon url> " type="image/x-icon" > <link rel="icon" href=" <favicon url> " type="image/x-icon" > 5. Test the landing page out by either opening it in a different browser or clearing the browser cache and restarting the browser.
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
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