Skip navigation
All Places > Support > Blog
1 2 3 4 Previous Next


50 posts

The error below is commonly seen if the password for the SFDC sync user expires, or if you end up having to change the credentials because your sync user left the company.  (We recommend you sync user not be an actual person, but that's another article)


The best way to resolve any issues you may be having with entering your SFDC credentials in Marketo is to follow the instructions below.  Nine times out of ten this will resolve the issue, but only if you follow them exactly!   Also, be aware that if you're entering new credentials they should be for a user in the same instance of SFDC as the old sync user.  It's not currently possible to connect your Marketo instance to a second SFDC instance, and trying to enter credentials from a second instance will results in errors and possible trouble for your Marketo instance.


In Marketo:

1) Click the Admin button in the upper right hand side of the Marketo instance.

2) Go to the "Salesforce" section of the tree menu on the left.

3) Click the "Disable Sync" button at the top. This will prevent Marketo from continuously logging into SFDC. (Prevents you from getting locked out while trying to fix this issue)



1) Log into SFDC with the sync user credentials.(

2) If you cannot log in (which is most likely the case), then follow the Salesforce reset password link, or have your admin reset this for you.

3) Once you can log into SFDC as the sync user, click "Your Name - Setup - My Personal Information - Reset Security Token". (Disregard the token you get in the reset password emails, you need to reset the token manually, and make sure to save this email!)

NOTE: Don't forget to make sure that your SalesForce Sync User is not locked out of SFDC.


Back in Marketo:

1) Go to Admin - Salesforce - Edit Credentials

2) Make sure you fill each field separately, do not add the security token to the end of the password, make sure it's in it's own field.

3) Click save.

4) Re-enable the sync.

Is this article helpful ?


In an email, you may have a telephone number that you want to be linked so that when someone clicks on it on a mobile device, it automatically pops up in their phone so they can make the call.


The standard approach is to hyperlink the number with tel: in the link: <a href="tel:[PHONE-NUMBER]">[PHONE-NUMBER]</a>


If you leave this link just like this, where it is trackable and encoded by Marketo, the click to call functionality won’t work. You need to set the link to classmktNoTok in order for that functionality to work without sacrificing the ability to track clicks on the links.

Many thanks to Sanford Whiteman for the suggestion on how to make this work!

Is this article helpful ?


If you create a multi-select field in Salesforce, it will come over as a String field in Marketo. If multiple values have been selected in Salesforce, they will be separated by a semicolon, e.g. Water;Fire;Wind. Let’s say I then put this String field on a form, and change the Field Type to Select, and allow for multiple selections. If that lead subsequently fills out the form and chooses Earth and Wind, this will overwrite the existing values in the field and the field will now say Earth; Wind. These will resolve correctly in the Salesforce multi-select field.

Now, usually we don’t want to overwrite existing data. So for this reason, we create a separate field in Marketo that we can use on forms. Let’s say I call this “Product for Web Forms” and I use this on the form instead of the original multi-select field from CRM.


Then I create a campaign in Marketo along the lines of this:

Now, if I fill out the form and choose Earth and Wind on the form, the Product for Web Forms field will say Earth; Wind and the Product field will say Water;Fire;Wind;Earth;Wind. Even though it has the same value twice in the Marketo list, this will resolve to the correct four values in the multi-select list in Salesforce.

Is this article helpful ?


With the Sync filter for the Marketo-Dynamics CRM sync, it is possible to restrict which records flow into Marketo. This can be applied to all entities. For each of the entities, the filter needs to be set up separately.

Install Lead Management Plug-in

Make sure you have the latest version of the plug-in installed ( or later).

Create Custom Field: new_synctomkto

Users must add a custom field new_synctomkto to Lead, Account, Contact, Opportunity and any custom entities they want to sync with Marketo.. This field determines whether the lead, account, or contact will be synced with Marketo. It must be of "Two Options" (boolean) type  – “Yes” (TRUE) and “No” (FALSE).

Although this is a Boolean field, there are 4 possible states for this field's value from our plugin's point of view:

  1. Field does not exist: If the user does not want to use this filter, they won't have this custom field. This is interpreted as TRUE.
  2. Field is NULL: All new entities that are created after this custom field is defined will get the default value. But all existing entities created prior to this field will get NULL value. This is also interpreted as TRUE.
  3. Field is TRUE
  4. Field is FALSE

We strongly recommend making the default value No.


Important: if you want to use the filter, then they must select this field to be synced with MLM. This is done in Admin > Microsoft Dynamics.

In this screen, scroll down to the field ‘new_synctomkto’ and check it. The label may be different; many customers name it “Sync to Marketo”. The name of this field must be "new_synctomkto" , however the display name can be whatever the user wants.

Set up CRM Automated Workflow

You can set new_synktomkto to either True or False if you have fairly static records that they want to filter for sync. However, you can also create a workflow in Dynamics that will automatically set syncToMkto field based on their filter criteria (e.g State = California, or Division = Web Services). This should be a background job that will be triggered when a record is created, or updated. To optimize, the user is advised to make this workflow asynchronous so actual create or update operation time is not impacted. In addition, the workflow trigger must be fine-tuned so that it fires only when relevant field changes for the update operation. This workflow must be run manually once so that all existing record will get their proper value.



Note: Everything in this solution needs to be implemented in Dynamics. Nothing needs to be configured in Marketo.

Is this article helpful ?


When you create a calendar token and place it in your emails, it creates a text link like this:

Sometimes people want something a little bit showier so they try to make an image that links to the .ics file. This doesn’t work; Marketo will replace the image with the text. Instead, you get stuck with the workaround of creating a calendar file manually and uploading it to Images and Files so you can hyperlink to it directly. That works, but who wants to have to do all that extra work to create your own calendar file? Not me. (Secretly I’m very lazy. Or, as I prefer to call it, efficient.)


So here’s a little trick I discovered:

  • Create the calendar file as a local program token as you would normally.
  • In your email, add the image you want to hyperlink to the calendar file and hyperlink it to the calendar token. We know that this won't actually work correctly, but it will allow you to find the URL of the .ics file.
  • Send yourself a test email. When you get the test email, hover over the image and identify the URL of the .ics. In this screenshot, the URL is “”.
  • Take this URL to your email and replace the hyperlink to your calendar token with the direct URL.
  • Now send yourself another test email. This time, you’ll see your image, which will have a tracked hyperlink. When you click on that hyperlink, bam – calendar file!

(Hopefully if you use this, you'll spend the time to create better names and images than I did for mine.)

Is this article helpful ?


You’ve just integrated Marketo with your CRM system. Now you’ve got a big decision to make: when do you send all of those great new leads you are generating into CRM?


You have two primary options:

  • Sync all leads to CRM almost immediately, generally upon lead creation
  • Sync leads to CRM based on rules, generally upon marketing qualification

As with most things, there are pros and cons to each approach. Sync Leads to CRM Immediately

You don’t need to create and manage sync rules.Sales will need to be trained to recognize which leads are qualified and which are not yet ready for follow-up.
The sales team has visibility into all leads right away, so they are less likely to create duplicates.Some junk or invalid leads will end up in CRM.
Leads may not yet have all of the information necessary to decide on lead assignment or follow-up.

Sync Leads to CRM Based on Rules

You can keep most of your invalid or junk leads out of CRM.Sales might create new leads or contacts in CRM for people you already have in Marketo, thus creating duplicates and splitting activity history across multiple records.
Sales will not see unqualified leads.Someone has to create and manage the sync rules.

Is this article helpful ?



One of the more recently introduced features in Marketo is Custom Activities. We all know about the built in Activities Marketo provides out of the box, and you can see that list using the Get Activity Types REST API Endpoint, but what's a "custom" activity? What is it used for? Why do customers need it?


Well essentially it's analogous to a built in activity in structure and purpose in every way, only you define it as an action a user has taken that is relevant to your business, and you add those activities through a special REST API Endpoint. Just like Marketo activities, you get a Filter and Trigger associated with the new custom activity that you can use in your smart lists


Custom activities are currently a beta feature in Marketo, but are currently in production with a fair few clients. They must actually be created in your instance by consulting or support, so once you define their attributes, you can work with professional services or support to get the activities themselves created. Once that's done, you can use the API to populate them.


Defining A Custom Activity

The following aspects of a custom activity must be defined to create it in Marketo.

- Name : The name of the custom activity (that one's a bit obvious)

- Description (Optional) :

- Trigger Name : This is the name Marketo will give to the Trigger associated with this custom activity

- Filter Name : This is the name Marketo will give to the Filter associated with this custom activity

- Attributes : This is the list of all the relevant attributes on the activity. The possible datatypes are the usual suspects.. integer, float, string, boolean, and datetime

Screen Shot 2015-07-20 at 7.15.09 AM.png



The example I've chosen is "Purchase Product". When a Lead purchases a product, you might want to send a welcome email, or add that lead to  nurture stream. When passing on your request, you should have these ready to give to support or consulting in a concise format to avoid confusion. Note that you do NOT need a "purchaseDate" attribute, as Marketo give you a "date of activity" attribute for free.


- Name : Purchase Product

- Description (Optional) : a lead purchases a product!

- Trigger Name : Purchases Product

- Filter Name : Has Purchased Product

- Attributes :

     productID: string

     productName: string

     productDescription: string


Once the object is created, support will supply an Activity ID to you, which you'll use in your REST API calls to add activities. Be sure to make a note of it! In my case, that ID is 100006.


Let's take a look! The following screenshot shows the Trigger and two Filters that are created for you, and notice that your custom activity attributes are available as constraints. Cool right?!?! Think of all the cool possibilities. One thing that comes to mind is the creation of an activity like "Custom Form Fill". If you're using the SOAP or REST API to handle form fills in a custom way rather than using Marketo Forms, you don't get a "form fill" event.. but now you can emulate that with a custom Activity!


Screen Shot 2015-07-20 at 7.31.07 AM.png

Adding Activities

Now that you have your shiny new activity, lets add some using the REST API. For this example, I use Postman, and I really recommend it. It simplifies the process of interacting with the REST API. Note if you arent comfortable creating timestamps, there is help available! Check out sites like the Timestamp Generator / Converter -


Screen Shot 2015-07-20 at 8.38.14 AM.png


Request (note that you can send in many activities in one request)










                "name": "productName",

                "value": "iPhone"



                "name": "productDescription",

                "value": "iPhone 6s+"











                "name": "productName",

                "value": "Apple Watch"



                "name": "productDescription",

                "value": "Apple Watch Edition"








  "requestId": "94a2#14eac235e1a",

  "result": [


      "id": 76356,

      "status": "added"



      "id": 76357,

      "status": "added"



  "success": true



Viewing Activities

Just like normal activities you can view these in campaign result, and also in lead details under the activity tab.


Screen Shot 2015-07-20 at 8.47.13 AM.png


Limitations and Considerations

- The volume limit for these activities is a bit fluid, but we recommend keeping under 100,000 per day. That limit can be revisited depending on usage.

- Custom Activities cannot be used in email scripting. Think of them like normal activities.

Is this article helpful ?


This blog is the third and final part in a series on ways of tracking lead acquisition and program success when you are embedding global forms on a non-Marketo landing page or website.


The first option we covered was dependent on having a generic/tokenized thank you landing page that can be used for anyone who filled out the form. The second approach was modified to allow for separate thank you landing pages. The third and final approach uses the Form 2.0 API with loadForm and onSuccess handlers so that you can control the follow up page activity from the website, rather than from within the form settings. This also has the benefit of not requiring people to remember URL parameters in their email links.


  1. Create a global content form in Design Studio.
  2. Embed the global content form on your website on each landing page.
  3. Create follow up/thank you landing page(s) as desired.
  4. On the webpage that hosts the form, add a customized version of this code, so that when the form is loaded, you add a hidden field (highlighted in green) and pass a value into it to indicate which piece of content was retrieved (highlighted in yellow). Be sure to customize the code with your pod (highlighted in red), your account string (highlighted in purple) and the form ID (highlighted in blue).
  5. On the webpage that hosts the form, add a customized version of this code, so that when the form is submitted, it redirects to the URL highlighted in yellow. Be sure to customize the code with your pod (highlighted in red), your account string (highlighted in purple) and the form ID (highlighted in blue).
  6. Create a Web Content program for White Paper A with a success campaign that triggers off the form fill.
    1. In the smart list, use the “Fills Out Form” trigger and add a filter for that specific ContentName. This is where you should populate the value you’re entering in the URL Parameter
    2. Then in the flow, send out the follow up email, change the program status, and set acquisition as normal.

Is this article helpful ?


This blog is the second in a series on ways of tracking lead acquisition and program success when you are embedding global forms on a non-Marketo landing page or website.


The first option we covered is dependent on having a generic/tokenized thank you landing page that can be used for anyone who filled out the form. However, there are reasons why you might want to have separate thank you pages (such as having unique layouts or follow up CTAs that you can’t tokenize). This second approach is slightly modified to allow for separate thank you landing pages.


  1. Create a global content form in Design Studio. Include a hidden field on the form to capture the name of the content populated via a URL parameter.
  2. Embed the global content form on your website on each landing page (with a unique URL).
  3. Create follow up/thank you landing page(s) as desired.
  4. Inside the form settings, use the advanced options to Add Choice and determine the follow up page based on the values that could be populated in that hidden field.
  5. Create a Web Content program for White Paper A with a success campaign that triggers off the form fill.
    1. In the smart list, use the “Fills Out Form” trigger and add a filter for that specific ContentName. This is where you should populate the value you’re entering in the URL Parameter
    2. Then in the flow, send out the follow up email, change the program status, and set acquisition as normal.

When you give someone the link to the website landing page, ensure you use a version of the URL that includes the URL parameters, e.g. Then when they fill out the form, it will capture the white paper in a field, redirect to the right thank you page, and make them a member of the correct program.

Is this article helpful ?


If you choose to use the embed code to place Marketo forms on your website, you likely are creating each form as a local asset to a program. This allows you to easily track acquisition for new leads that are created as the result of filling out that form.


The downside to taking this approach is that you are then managing many more forms. When you need to make a change to a field that lives on many forms (say some new country declares independence), you have created quite the administrative nightmare for yourself.


So how do you balance between scalability and trackability?


Let’s say you have two case studies (Company A and Company B) and you want to use the same form on two different landing pages. Here’s a fairly simple approach to solving this:


  1. Create a global content form in Design Studio.
  2. Create a generic thank you landing page for people who fill out the form. (Use some message like “Thank you for your request. You will receive an email shortly with your content.”)
  3. Embed the global content form on your website on each landing page (with a unique URL).
  4. Create a Web Content program for Case Study – Company A with a success campaign that triggers off the form fill.
    1. In the smart list, use the “Fills Out Form” trigger and add the constraint “Referrer is” or “Referrer contains”. This is where you should populate the URL of the page where people fill out the form to get Case Study – Company A.
    2. Then in the flow, send out the follow up email, change the program status, and set acquisition as normal.

Are you thinking this sounds too easy? Well, stay tuned – we have more complicated options coming for you in a future post!

Is this article helpful ?



Safe Harbor Program Update

Posted by klaw Employee Oct 8, 2015

Like you, Marketo takes privacy seriously. We treat the data that you collect and use on our platform with the utmost sensitivity and employ strict policies and appropriate protections to help ensure the privacy of that information.


Marketo is responding to the October 6, 2015 invalidation of the Safe Harbor Program by developing an addendum to our services agreement that will incorporate the standard contractual clauses, which is an alternative mechanism for transferring personal data outside the EU in compliance with EU data protection law.


Find more information and access the data processing addendum here.

Is this article helpful ?


Some businesses using Marketo find it necessary to use multiple domains in their instance.  This allows them to have some of their landing pages branded with one product or division within their business, or even another company name altogether.  As long as you control both of the domains you want to add to your Marketo instance, then you can add as many as you'd like.


The article below will walk you through setting up the additional CNAMES, but I want to take a look at the most common question I get about this process.


"How do I choose which CNAME to create the Landing Page under?"



This question is misleading, because when you add additional CNAMES to your instance you aren't compartmentalizing which pages get created or placed in which spaces.  Adding more CNAMES doesn't build a whole new room for you to make and store landing pages.  You're only cutting a new door into the same room where you landing pages live already.  This makes it so there are multiple pathways to get to all of the pages in your instance.


Basically, once your IT team creates the new CNAME and points it to your Marketo instance (, just like they did with the first one, then you'll add it into Admin as a domain alias, and all of your pages will be available from that CNAME as well as the original and any other aliases already set up.

Like this:


(Original CNAME)
(New Alias)  


Or this:

Is this article helpful ?




You don't choose a CNAME, when creating the page.  All pages are created under the default/original CNAME, but they're all available from all Aliases as well.  Both of the urls above will take you to the same page, because both of the CNAMES are pointed to your Marketo instance (the room where all your pages are stored).


The choice comes when you decide which url to publish in your emails and give to your leads.  By handing out the url you want leads to use, you can decide which one they see, and which one they pass on to their friends and coworkers. The others urls will still exist, but if you never tell anyone about them then nobody will ever know.

Everyone knows that Marketo won't allow duplicates to be created, right?  But how does it work, and how do you find out what happened when you find yourself with duplicates?


First we'll talk about how and when it does work.


Deduplication works for three processes of lead creation in Marketo.


  • List Import
  • Form Fill-Out
  • Lead creation through API


All of these processes depend on the Email Address field as the main identification key, and when new data is submitted which includes an email address, Marketo will look through the lead records currently in your database for any record with a matching value in the Email Address field.  If it finds a record with the same Email Address value, then the other field values that are included in the incoming "bundle" will get written to the proper fields on that record.  If the process does not find a record with a match Email Address value, then a new record is created in your database and incoming information will be written to this record.  Done. Bam! New Leads!


Now, lets talk about when deduplication doesn't or can't work.


Because each of these processes relies on the Email Address field as the key piece of identification, it must be present on both sides for deduplication to work.  By that I mean that each bundle of information you submit to Marketo for lead creation must have an Email Address the system can check, and any record currently in your database at the time the bundle is submitted must have an Email Address to check against. If that field is not part of an incoming bundle, then a new lead will always be created.  If there are records in your database with blank Email Address fields, then incoming leads can't be checked against them.


A new lead may have the all the same information as the original, but if the email values don't match at the time the second lead is created then deduplication cannot occur.



How To Troubleshoot Duplicates


You can see here we have two duplicates.


The first was created Manually.


And the second was created through a list import 10 minutes later.


When assessing duplicates it's best to start by looking at the New Lead activity for each duplicate.  Marketo will not deduplicate lead information that is synced from your CRM (Salesforce, Microsoft Dynamics, etc).  It will take the CRM's word for it that the lead is valid and the information is good.  So if one of the duplicates was created by a process in Marketo, and the other was created by Salesforce or Dynamics, then you'll know why the duplication happened.  It's also possible to create leads manually in you Lead Database by clicking New from the bar at the top.  This process does not deduplicate against the leads already in your database, but if you're creating them manually then you'll most likely know if they're duplicates to start with.


The next step in troubleshooting is to look at the logs for any change in the Email Address field.  Remember that the Email Address values are only compared at the time the second lead is created, so if you find changes to the Email Address in the activity log of either duplicate, then you can be pretty sure they weren't the same to begin with.


We can see that our lead which was created through list import had a change made to the Email Address field after it was created.  This change was from [null] to "", and there weren't any other changes logged since the lead was created, so we can be sure that the lead was created without an email address.


These troubleshooting steps will help to identify the cause of any duplicate you have in your database, and help you to prevent duplicates in the future.

Is this article helpful ?


Before I came to Marketo I was a HUGE data guy. I loved spreadsheets, I loved databases. I even used to teach spreadsheet and database design. Yes, it is, indeed, a sickness.


So when a client asked me "How can I see the number of form fillouts? Not the leads, I want to see the total number of fillouts." My reaction was, there has to be a way.


And there is, but it involves taking data in Marketo and analyzing it in Excel.


The secret is the Smart List Filter "Filled Out Form" in conjunction with the constraint of "Min. Number of Times".


Excel 00.png


Let's say you take a particular form and tell Marketo "OK, show me everyone who filled out this form at least once." The smart list comes back with a number of 5289.


You then change the smart list and tell Marketo "OK, now show me everyone who filled out this form at least twice." The smart list comes back with a new number of 2254.


By subtracting the number of people who filled it out at least twice from the number of people who filled it out at least once, that will tell you how many times the form was filled out exactly one time. 3035.


Excel 01.png


So it stands to reason that if we find out how many people filled out the form at least 3 times and subtract that from the number who filled it out at least twice, that will tell us how many folks filled it out exactly twice.


Excel 02.png


Then you keep going until you find the highest minimum number that is not 0. When you put in a minimum number and get 0 leads back, you're done because nobody filled out the form that many times and nobody filled it out more than that. (The highest number of times I saw was 57, that was an internal lead who was testing the form and trying to break it.)


Excel 03.png


Now that you know how many leads filled out the form how many times, you can determine the total number of fills. Take the exact number and multiply it by the minimum number.


So those 400 leads that filled out the form 4 times each generated, on their own, 1,600 form fillouts(!)


Total up the "Total Fills" column and you'll find that this group of 5,289 leads managed to fill out that form 9,155 times.


Excel 04.png

Is this article helpful ?


Hello Nation!


This is something I often get asked about so I figured it may be useful to put out here for all to enjoy!


In Marketo we have 2 dates associated with lead creation and it can be useful to know the difference:


1. The "Created" date under the Lead Info on the Lead Record:



  • This is the date that the record was created.
  • If your lead was first anonymous and eventually became known, the date you see here will be that of the anonymous lead being created.
  • You can use this date as a token:  {{lead.Created At}}
  • You can use the filter "Created At" in smart lists to leverage this date:




2. The "Lead was created" date in the Activity Log of the Lead Record:




  • This is the date that the Lead entered the system as a known lead.
  • This date cannot be used as a token.
  • You can use the filter "Lead was created" in smart lists to leverage this date:









Why is the date sometimes the same on both?

The date will differ if the lead record was created at a time different then when the lead was created which is what happens when an anonymous lead becomes known. If your lead was created manually, via list import or CRM Sync, the 2 dates will match as the lead record will be created at the time of the known lead creation.


Why can't I use the "Lead was created" date as a token?

Tokens can only leverage information that is stored in fields. This date is recorded in the activity log, but isn't stored in an actual field. As a result you can use it in smart lists but can't use it as a token. A similar example is email opens and clicks which are also visible in the activity log and can be found using filters in smart lists but cannot be used with tokens.


But I really need to use the "Lead was created" date as a token!!

The best way to achieve this is to create a custom datetime field to hold the date for you, as custom fields can be used as tokens.

To populate it, create a trigger campaign with the following:


This is a weird one! Why is the record creation date (1) after the "lead was created" date (2)?

This can happen when the lead was merged. The merge date in the activity log will match the record creation date (1).

Is this article helpful ?