Skip navigation
All Places > Marketo Whisperer: Implementation Tips > 2016 > March
2016

I've talked before about using Postman to make REST API calls, and it's perfectly fine for one off calls for testing.. but what about those times when you need a full on programming language to upsert leads or custom objects, or perform some other function using the REST API? Well, you can write your own libraries to make it easier, or you can leverage the Marketo Rest Python library created by Jep Castelein

 

This article will serve as a step by step guide for getting up and running and making basic hello world calls using Python.

 

Products

We'll be using the following, all of which are free.

Python (Download the latest version here)

pip for Python - A great installer program we'll use to install the library

Marketo-Python-REST library

PyCharm - A great Free IDE (the Community Edition is free)

 

Step 1 - Python 3.x.x

In MacOS , you'll notice that python 2.7 comes pre installed, but its perfectly acceptable to run more than one version of Python. Download the Python DMG file and install it. Make sure it installed by opening up a terminal and typing python3. Simple!

 

Step 2 - PIP

You can follow the directions here, downloading get-pip.py from https://bootstrap.pypa.io/get-pip.py , then running the following command, making sure you run it against Python 3.51 as follows

python3 get-pip.py

Seriously. It's that easy.

 

Step 3 - The Marketo Rest Python Library

Again, very simple. At the command line, ensure you have pip installed by typing

pip -V

It should indicate that you're installed on version 3.x.x (depending on your version)
Note that you might have installed it as pip3, so check that.

 

Next, type the following (adding sudo on the mac)

pip install marketorestpython

 

It should look rather like this:

Screen Shot 2016-03-30 at 5.05.31 PM.png

 

Step 4 - PyCharm

You guessed it. Download the dmg file for mac, and install it.

Create a project called "Marketo Python" and get creative.. maybe you want to set up folders for your different tasks. For this one, I created a hello world folder

skitch-2.png

 

Create a new file, and enter the following substituting your own Marketo instance credentials

 

from marketorestpython.client import MarketoClient

munchkin_id = "your value"
client_id = "your value"
client_secret = "your value"
mc = MarketoClient(munchkin_id, client_id, client_secret)

lead = mc.execute(method='get_lead_by_id', id= 1001)

print(lead)

 

The library is quite well documented here.. so get creative! Let us know in the comments how you're using it! https://github.com/jepcastelein/marketo-rest-python

 

Update!

If you get an error like "HTTP Get Exception! Retrying....." and / or "SSLV3_ALERT_HANDSHAKE_FAILURE" in Mac OS Sierra, you likely need Install requests with extra security packages using: pip install requests[security]. It's further discussed in this requests issue on github.

A Marketo user has the ability to merge a Marketo record together with a SFDC Lead or Contact record if the Marketo user has the “Merge Leads” permission. Merging can only be done manually since the Marketo user will need to address any field value conflicts that may arise. There is no flow step to merge records in Marketo in bulk.

 

 

When you merge records in Marketo, in the case of conflicts you can choose which value to keep. If you don't want either value, you can check Custom and enter a value of your choice. Thus, you get to choose which scoring values you want or you can enter a new value.

 

 

After the Merge

The default Lead Score field and all other custom score fields are not added up since you chose the score to keep during the merge. The complete activity logs will be merged in Marketo including membership in all programs. Last Interesting Moments will be merged in Sales Insight.

 

Here is a detailed article by Grant Booth on understanding merges in Marketo.

 

When to Use Marketo to Merge Records

I recommend only using Marketo to merge records if one of the records is in Marketo only. If two or more records are in SFDC, you should use SFDC to merge the records since all the SFDC fields might not be synced to Marketo and you won't be able to address those field conflicts.

 

If you have a lot duplicates to manually merge, contact services@marketo.com and ask about our Easy Merge service.

If there are duplicate records based on email address in SFDC both will appear in Marketo.

 

Marketo doesn’t de-dupe records coming from SFDC since we view the duplicates created in SFDC as intended behavior. When you merge SFDC lead or contacts records in SFDC, in general, the master record prevails, but in case of conflicts you can choose which values to keep.

 

After Merging of Leads or Contacts In SFDC

The default Lead Score field is added up. For example, merging 3 SFDC leads with scores of 10 each, will yield a result of 1 lead with a score of 30. This only applies to the standard Lead Score field. Custom score fields will not be added up. The custom score fields will retain the value of the master record unless you choose a value from a different record. One solution is to create another score field called “Total Lead Score” and not use the default Lead Score field.

 

The complete activity logs will be merged in Marketo including membership in all programs.

 

Even though the SFDC user chooses a Last Interesting Moment during the SFDC merge, a history of all Interesting Moments will appear in Sales Insight.

 

Additional Information

Here is a great article which explains how to merge leads in SFDC.  Here is the article for merging contacts in SFDC.

 

One way to identify merged records in Marketo is to use the filter "Lead Was Created" and add the constraint on Min. Number of Times = 2 within your timeframe.

 

Here is a different method to identify merged records by Jason Martin.

 

Lastly, here is a detailed article by Grant Booth on understanding merges in Marketo.

 

Where to Merge Records

Merging duplicates in Marketo might not be possible due to your SFDC profile settings for the Marketo user. If all SFDC fields are not synced to Marketo it is recommended to merge records in SFDC vs Marketo so any field conflicts will be addressed.

Picklists from a SFDC field will show up as values on a Marketo form if you change the field type of the field in the form to Select.

 

Only values common to both Lead & Contact/Account will appear in the Marketo picklist.

 

Changes to a picklist in SFDC will not change the picklist of an existing form in Marketo. If a picklist in SFDC changes a notification will appear in Marketo and the Marketo landing page will automatically move to draft. You will need to update each Marketo form and re-approve all landing pages using the form. Any new forms you create should show the updated picklist for your SFDC field.

 

Here is more information about updating a picklist field in SFDC.

 

Additional resources for learning about the Marketo integration with SFDC.

Field types from SFDC fields are automatically mapped to field types in Marketo.

 

SFDC Field

Marketo Field Type

Text

String

Long Text Area

Text

Checkbox

Boolean

Picklist

String

Number

Integer but can be changed to Score

Date

Date

Date/Time

Datetime

 

You can change the field type in Marketo for custom fields as long as the field is not in use.

 

Common use case: Create a number field in SFDC for Behavioral Score on the lead and contact records and change it to a Score field in Marketo.

 

Here are some of the field types in Marketo. A full glossary can be found here.

 

 

When you change a field type in Marketo the data may be deleted. To preserve the data, you will want to export it and re-import it after you change the field type. You may need to change the format of the value, depending on what the date field will accept and how the string is formatted now. In order to change the field type you'd need to remove it from all assets currently referencing it as well, so if you have a lot it might be easier to create a new field and start using that one instead. Additional information can be found here.

 

Implications of changing a field's type in SFDC.

 

Additional resources for learning about the Marketo integration with SFDC.

SFDC Opt-Out field on the Lead and Contact Objects is mapped to the Marketo Unsubscribed field.

 

Whenever a sales rep checks the SFDC Email Opt Out box, the Lead will be unsubscribed in Marketo.

If the Unsubscribed field in Marketo changes to false the Email Opt Out field in SFDC will change as well.

 

Marketo has a “True opt-out” policy. If one record is unsubscribed, Marketo will automatically unsubscribe all records with a matching email address. The data value change will be noted in the Marketo activity log for each of the records.

 

If you delete the unsubscribed record from Marketo, when a new lead is created in Marketo from any source (e.g. inserted via SFDC or API, form submission, list import or manually created, we check it against your Marketo instance master email status table.  If the lead was unsubscribed when you deleted it in Marketo, we will update the record to be unsubscribed. If you set Unsubscribed to false using a hidden field on the form or smart campaign the master email status table will be updated. Thus, if you delete the record and Unsubscribed is false and the record is created again in Marketo the Unsubscribed field will remain false.

 

Here is a great article about durable unsubscribes by Raul Fonseca.

 

Please check out the community for the different ways to re-subscribe records in Marketo for records caught by the durable unsubscribe rule.

 

Additional resources for learning about the Marketo integration with SFDC.

Changing the type of a SFDC field is one of the reasons why landing pages are put into draft mode automatically by Marketo.

 

Change to Field

Marketo Form Automatically Re-Approved

Marketo Landing Page Automatically Moved to Draft

Length of text field increased

Yes

Yes

Length of text field decreased

No

No

Field type changed from Text (50) to Text Area (255)

Yes

Yes

Field type change from Text Area to Text

No

No

Picklist changed

Yes

Yes

Field type changed from Picklist to Text

No

No

Field type changed from Text to Picklist

Yes

Yes

 

In all the cases above the field type in Marketo will remain a string. Since the field type won't need to be changed in Marketo the values of the field will remain.

 

If you change the type of a SFDC field from text to checkbox or date/time, the field type change doesn’t happen automatically in Marketo. A manual change is required in Marketo in order to properly sync to the right field type. When you change a field type in Marketo the data may be deleted. To preserve the data, you will want  to export it and re-import it after you change the field type. You may need to change the format of the value, depending on what the date field will accept and how the value is formatted now. In order to change the field type you'd need to remove it from all assets currently referencing it as well, so if you have a lot it might be easier to create a new field and start using that one instead.

 

Marketo change field type article.

 

When the length of a field is changed you should see the following notification in Marketo:

Subject: Salesforce Sync Warning: Change in Salesforce Field

Why: One or more fields has been changed in Salesforce.com

Error details: The following fields have been changed:

•  System of Interest

•  maximum length changed - old value: '50', new value: '100'

These fields appear in the following forms/landing pages:

APAC-JP-2015-05-10 Getting Started Webinar - Assets.01 Registration Page

 

When a picklist is changed you should see the following notification in Marketo:

Subject: Salesforce Sync Warning: Change in Salesforce Field

Why: One or more fields has been changed in Salesforce.com

Error details: The following fields have been changed:

•  Industry picklist entries changed

These fields appear in the following forms/landing pages:

• NAM-2016-04-11 Webinar - Assets.01 Registration Page

 

Finally, here is information about changing the type of a field using Marketo.

 

Additional resources for learning about the Marketo integration with SFDC.

When a record is converted in SFDC from a lead to a contact Marketo automatically changes the SFDC Type field from Lead to Contact.

 

The change in SFDC type doesn’t cause a data value change so the Data Value Changes trigger and filter won’t work for SFDC Type. You will need to use the Lead is Converted trigger or Lead was Converted.

 

 

Alternatively you could use a different field such as Lead Status = Converted.

 

Make sure your lead custom fields are mapped.

 

During the conversion the Marketo ID stays with the record converted to a contact.

Previously I talked about creating nested SPF entries, but as was pointed out to me by our excellent deliverability team and Kiersti Esparza specifically.. there is another way to handle this, and there are a few things we commonly see as misconfigurations and causes of breakage with SPF, and I'll talk about them here! If you have a large set of IPs and or domains and want to include them ALL in SPF, it can get out of hand quite quickly.

 

Character String Length

SPF records have a limit of 255 characters in a single string. Any more than that and the record will come back as invalid. We have some workarounds, however...

 

Approach 1 - Multiple Strings

To have more than 255 characters in an SPD record, the record can be broken into multiple strings. The strings are then concatenated together, without spaces, as shown.

 

IN TXT "v=spf1 .... first" " second string..."

MUST be treated as equivalent to

IN TXT "v=spf1 .... first second string..."

 

EXAMPLE

text = "v=spf1 ip4:199.15.212.0/22 ip4:72.3.185.0/24 ip4:72.32.154.0/24 ip4:72.32.217.0/24 ip4:72.32.243.0/24 ip4:94.236.119.0/26  ip4:37.188.97.188/32 ip4:185.28.196.0/22 ~all"

(could be)

text = "v=spf1 ip4:199.15.212.0/22" " ip4:72.3.185.0/24 ip4:72.32.154.0/24 ip4:72.32.217.0/24" " ip4:72.32.243.0/24 ip4:94.236.119.0/26" " ip4:37.188.97.188/32 ip4:185.28.196.0/22 ~all"

 

Approach 2 - Some more detail on the previous blog - Nested or Cascaded entries

This example if for Marketo.com, and you can see that marketo.com is the top level SPF entry.

In this case, the marketo.com SPF record includes a number of other, different SPF records.  (include:_spf.salesforce.com include:spf.protection.outlook.com include:mktomail.com include:email.influitive.com include:stspg-customer.com)

 

All entries in the “included” entries are now considered to be part of the marketo.com record.

 

A great tool to see all nested records in an SPF record is the DMARCIAN SPF Surveyor.

 

Screen Shot 2016-03-24 at 11.05.19 AM.png

Screen Shot 2016-03-24 at 11.05.31 AM.pngCaveat: This approach has limits There is a limit of 10 additional “include:” records in an SPF record. The "include", "a", "mx", "ptr", and "exists" mechanisms as well as the "redirect" modifier count against this limit of 10, but the "all", "ip4", and "ip6" mechanisms do not count against this limit.

 

Also remember, when you “include:” a record in your SPF record, then your record now includes all mechanisms in the “include:” record.  So if your SPF record has 1 “include:”, but the SPF record you are including has 10 already, then your record will now have 11 and will break!

 

Null Records in the SPF Record

A record that is NULL or does not exist will break an SPF record.  This means be extra careful about typos in your record.  If you “include:” a domain that doesn’t exist, this will break your record.

 

Repetitive Records in the SPF Record

In order to prevent against unnecessary processing that can cause mail systems to slow down repeated mechanisms aren’t allowed.  There is a MAX of 2 repeated look ups in an SPF record.  More than that and the record will break.  This prevents SPF records from being used in Denial of Service style attacks.

 

If we have learned anything at Marketo over the years it is that DNS for email is hard!  We have experts on our team who can help unravel the most complicated SPF records.  Raise your hand and let us know if you need help.

For many reasons clients sometimes need to get campaigns up and running in Marketo before CRM integration tasks have been completed.  If you find yourself in this position, there are a few things you’ll want to consider. Let’s take a look…

 

  • Duplicate records
    • Duplicate records will exist in Marketo after the CRM sync and require a merge and data clean up. You can manage this two ways:
      • Manually in Marketo
      • Via Marketo’s Easy Merge Service

 

Note: Some clients decide to delete leads that have no activity (e.g. did not click in an email) to minimize the duplication clean up.  Additionally, for those leads you decide to keep, you will need to create a merge process and determine what data is the master/most up-to-date.

 

  • Fields and Field data
    • Prior to the integration, you will need to create Marketo custom fields for any CRM fields you need to duplicate in Marketo in order to run your campaigns
    • After the integration, you will need to:
      • Map data fields
      • Move data
        • Create Data Management programs to move data within the Marketo custom only fields into the similar field created by CRM
          • Example: Copy data from mkto_field A into CRM_field A; delete data from mkto_field A
      • Hide mkto_custom only fields from which you moved the data and are no longer needed
      • Update any/all programs using mkto_custom only fields to be the CRM fields
      • Update any List Import templates to reference the CRM (and not custom Marketo) fields

 

  • Lead Reporting/Sales Alerts
    • Pre-integration:
      • There is no closed loop reporting
      • Alerts and “lead routing” rules need to be maintained in Marketo
      • Sales visibility into campaigns/lead records is limited; Marketo is not intended to be a CRM and as such there is no “Account view” and no place to manage notes or activities. That being said, you can take advantage of Smart Lists subscriptions to provide some insight, as well as create alerts.
      • Information sharing between the two systems is manual (list exports/imports)

 

 

And remember, prior to uploading leads and running your initial campaigns be sure to review and activate/schedule all Operational campaigns (e.g. Data Management, Scoring and Interesting Moments).

 

Thanks to Jodi Florence for her input on this blog post.

One of the more laborious parts of setting up the Dynamics integration is figuring out which fields you want to sync over. Once you do decide that, you have to actually match them up in the Marketo interface so you make sure you select the right ones.

 

 

This can be especially challenging when you have many fields with very similar names. Does this look familiar to anyone? (How many phone fields does one CRM need?)

So here's the trick. Click on the purple column header where it says Name and Type. You can actually add in "Id" to the view . This shows you the schema name, which you can match up against your CRM system.

Then it looks something like this:

I wanted to share a few more email scripting examples with you.

Example 1: This script lowercases a string (in this case First and Last Name) and then properly capitalizes it.

 

(I think the previous example I gave only capitalizes the first letter, so if you had mixed case or all capitalized letters, it is not as good as this one.)

#set ($fname = ${lead.FirstName.toLowerCase()})

#set ($lname = ${lead.LastName.toLowerCase()})

$display.capitalize($fname) $display.capitalize($lname)

 

Example 2: This script adds a date 14 days in the future onto a token being used in an email.

 

## Access Velocity's calendar object

#set($x = $date.calendar)

## Format date

#set($current_date = $date.full_date)

## Add 24 hours (hours=int code 10 - see list below)

$x.add(6,14)

## Show result

$current_date

 

Example 3: This script gets the current date from the calendar object, converts it to a date and then reformats it to the format highlighted in yellow.

 

#set ( $todayCalObj = $date.toCalendar($date.toDate("yyyy-MM-dd H:m:s",$date.get('yyyy-MM-dd H:m:s'))) )

#set ( $dateObj = $date.toDate("yyyy-MM-dd", $todayCalObj) )

#set($dateFormatted = $date.format("MM/dd/yyyy", $dateObj))

$dateFormatted

If you are integrated with a CRM like SFDC, the account/company fields in Marketo as viewed on the Company Info tab of a record are editable when a record is in Marketo only or is a SFDC lead.

 

When a SFDC Lead is converted to a SFDC Contact the account/company fields become related to the SFDC Account Object and become read only. Note: If you have enabled person accounts in SFDC, contact Marketo support about making your person account fields editable by Marketo.

 

SFDC Account fields are automatically set in Marketo as read only. For SFDC Contacts in Marketo you cannot manually edit Account fields in Marketo’s Lead Detail screen, while you can use a Flow Action to change an Account field value. The change will be temporary until the Account is updated. The value changed will revert to the SFDC Account value the next time any update is made to the record and data is synced between the two systems. You may want to consider blocking field updates for fields which are mapped from the SFDC lead object to the SFDC account object such as Number of Employees.

 

Here are some additional resources for learning about the Marketo integration with SFDC.

RCA allows you to create a dashboard using saved reports. When you load the dashboard, each individual report in the dashboard runs on its own and displays the result. However, you can also add interactivity to these reports. You do this using functionality called prompts. Here’s how you set them up.

Step 1:  Create a New Report with Filter Parameters

In order to create dashboards with prompts, we first need to create reports that can respond to dashboard prompt values. That is achieved by creating reports with filters and assigning a parameter names to those filters. These named filters are then linked to dashboard prompts to achieve dynamic filtering of report data using prompt values.

Here is an example of a Program Membership report with a filter on Region:

Step 2: Create a Dashboard with Prompts

Below are general instructions for adding prompts to your dashboard:

  • Create a new Dashboard or in the dashboard page, choose Edit (the pencil icon), which will make the Objects pane appear at the bottom.
  • Under General Settings, choose Prompts. The Prompts pane appears on the right. No prompts are listed if this is the first time you are assigning prompts.
  • To display a prompt toolbar to users of the dashboard, enable Show Prompt Toolbar. The prompt toolbar appears at the top of the dashboard.
  • Click the Add button in the bottom to start adding prompts. The Prompts dialog box appears.
  • In the Prompts dialog box, enter a display name for the control label - Region.
  • Enable Display Name as Control Label if you want users to see the display name in the prompts toolbar.
  • In the Control box, click the format for the prompt options. For example, you can choose the Drop Down control if you want a list that appears when users click the first option.
  • Ensure that Static List is selected under Type. Note that although Static List is not the only option, we don’t support Metadata Lists.
  • Add data values to the Static List.
  • In the Data box, click Add. The List Value dialog box appears.
  • In the Label field, enter the option name as you want it to appear to dashboard users.
  • In the Value field, enter the parameter source name (could be same as Label).
  • Add labels and values for each parameter you want to filter. Click Ok to exit the List Value dialog box.
  • You can add the option All. This option drops the filter from the report and shows all values.
  • In the Control Properties box, under Initially Selected: choose which item you want to appear first in the prompt list. Choose Use First Value to set the default to the first value in the list, or you can choose Specify if you want a specific value to appear first.
  • Click OK.

Step 3: Linking Reports to Dashboard Prompt

  • In the Objects pane, choose the title of the report you want to filter. Click the Parameters tab and choose the correct Source for the parameter from the list. The source should be the name of your prompt.
  • Click Apply.
  • Save the Dashboard. Now this report will respond to Dashboard prompt selection. When you select from the prompt options, the reports will automatically update to reflect these filters.

If you previously hid a particular field from the Marketo profile through field-level security and now you expose it to Marketo, the existing field values will only sync to Marketo when a field on the record is modified and the last modified date changes.

 

If you want all the values of the field to sync over to Marketo immediately you can have your SFDC admin use the SFDC Data Loader to change the last modified date/system mod stamp for all the records. Another option is to contact Marketo Support have them run the “force re-sync object tool.”

 

Note:  If you are changing the last modified date for a lot of records it may impact sync speed, so you should consider doing it overnight or over the weekend.

 

Additional resources for learning about the Marketo integration with SFDC.

ab-icon.png

Marketers understand the importance of A/B testing – and specifically how simple changes around copy, color, placement and headlines can make a big difference in the success of our campaigns.

 

Marketo’s Web Personalization (RTP) platform makes it as easy as 1-2-3 to create A/B tests.  Simply check off Split Testing, name the group for the campaigns you want to test and click Create. You can then add campaigns to the group.

RTP will take the number of campaigns in the group and split the number of impressions between the campaigns, for example:

  • If you have 2 campaigns in the group – each one will show up 50% of the time
  • If you have 3 campaigns in the group – each one will show up 33.3% of the time

 

How many campaigns should I test?

While you can test as many campaigns as you want, best practice recommendation is to test two to three campaigns at a time.

 

Does segmentation matter?

Yes.  You want to keep the audience the same so you aren’t adding an additional variable to the test. Be sure each split test group is associated with the same segment.

 

What should I A/B test?

In addition to what’s already been mentioned, try testing against different content pieces (e.g. Case Study A vs. Case Study B). This great Marketo blog entitled 7 Elements to A/B Test in Your Digital Ads mentions testing using time of day and day of week.

 

With Marketo’s winter release that is now possible! In addition to using the new web personalization scheduling feature to schedule campaigns in advance, you can now choose the time of day and days of the week your campaign should run:.

When setting campaign time zone note that the default setting runs campaigns in the web visitor's time zone. You can choose to schedule the campaign to run based on specific time zones:

 

How is Sampling different than A/B testing?

Sampling is where you can configure the percentage of the traffic that will see the campaign – without having second campaign version. In this example we will be showing the selected campaign to only 20% of the web visitors:

 

Can I A/B test and Sample?

No, both features cannot work together, meaning – if you set A/B testing and 20% sampling the sampling will be disregarded.

 

Auto Tune - It works for Drake, make it work for you!

Lastly, don’t forget to take advantage of the Auto Tune feature. This allows the RTP platform to automatically recognize the better performing split test campaign, and continues showing the highest converting campaign while pausing the other(s). To enable it, simply check off Auto Tune:

Renaming a field in SFDC

If you change the label of a field in SFDC, nothing changes in Marketo.

 

If you change the (API) name of a field in SFDC, two things will happen:

  • A new field with the new (API) name will appear in Marketo. The value of the field in Marketo will be empty until the last modified date in SFDC changes.
  • The old field will stop syncing with Marketo, however, it will still be visible in Marketo and retains its existing values. You should hide the field in Marketo. You cannot hide a SFDC opportunity field in Marketo.

 

Renaming a SFDC field in Marketo

As long as a SFDC custom field synced to Marketo is not in use, if you are an Admin you can change the name of the field in Marketo. A few standard SFDC fields can also be renamed (e.g. Email Bounced Date) but most cannot be changed. SFDC Opportunity fields cannot be renamed in Marketo. I don't recommend renaming a SFDC field in SFDC or Marketo since the API name can’t be edited.

 

Deleting a SFDC field

If you delete a field in SDFC or make it no longer visible to the Marketo profile (Article), it will look like nothing has changed in Marketo. You should hide the field in Marketo since data will no longer be syncing between the two systems.

 

Hiding a SFDC field in Marketo

In Marketo you can’t delete SFDC fields, but you can hide them if you are an Admin and if it isn't in use. Hiding fields doesn’t stop the sync, so remember to make the field no longer visible to the Marketo profile and then hide it in Marketo.

 

Note: In order to hide a field it must not be associated to any other assets. Make sure to remove it from all smart lists, flow step choices and emails before hiding.

 

Additional resources for learning about the Marketo integration with SFDC.

I am often asked what is the best way to make sure you have set-up the Marketo profile correctly for the Marketo SFDC login user. Here is the process I use to verify the set-up and get an accurate count of the records which may be syncing.

 

Step 1 - Have your SFDC Admin double check that Lead Custom Field Mapping has been completed correctly.

 

Step 2 - Make sure the Marketo profile can create SFDC reports.

 

Step 3 - Login to SFDC using the Marketo User for SFDC. Make sure you are logged in as the Marketo SFDC User and not as an Admin or though your own login.

 

Step 4 - Navigate to the SFDC Reports Tab and create a New Report. Run reports for Accounts, Contacts, Leads, Campaigns, Opportunities, and Tasks and Events.

 

Step 5 - Spot check each report for fields you should not see and note them down for your SFDC admin to fix the Marketo profile.

 

Step 6 - After you look the fields, write down the counts for each report. Make sure the filters in the report are showing all records for all time. If you are planning to use a Marketo custom sync rule run the counts with and without this filter. If you see a dramatically different  number than you were expecting then work with your SFDC admin to review any permissions or sharing rules in place.

 

Understanding the counts will also give you a rough estimate of how long the initial data sync will take. Divide your total number (Accounts, Contacts, Unconverted Leads, Campaigns, Opportunities, and Tasks and Events.) by 15K/hour to determine how many hours it will take. The initial sync speed is fastest during the evening and on weekends.

 

Run counts:

  • Accounts
  • Contacts
  • Unconverted Leads
  • Campaigns
  • Opportunities
  • Tasks and Events

 

If you have millions of Tasks and Events and don't plan to use Tasks in Marketo you can ask Marketo Support to disable the syncing of Tasks and events.

 

Step 7 - Try editing a test contact and lead and saving your edits. It is helpful to document any validation rules you might see so when you are using the Change Data Value flow step in Marketo you can remember to set the values of fields correctly to avoid validation sync errors.

 

Step 8 - Ask your SFDC admin to make any necessary corrections to the Marketo profile

 

Repeat Step 5 if necessary.

 

Congratulations, you are now all set for a successful SFDC sync.

 

Additional resources for learning about the Marketo integration with SFDC.

Brian Law

SFDC Formula Field Deep Dive

Posted by Brian Law Employee Mar 17, 2016

SFDC Formulas are calculated when the record is requested, therefore they don’t change the ‘last modified’ date, so changes don’t automatically sync to Marketo. When another field value on the record changes, the updated value of the formula will be synced. Even if you force a sync between SFDC and Marketo, unless that timestamp is updated, it does nothing.

 

Here is a fantastic article by Raul Fonseca on Apr 27, 2015 with more details.

 

A formula field in Salesforce is not reliable for using as a trigger for the reason noted above. I also wouldn’t recommend using a formula field in a segmentation since segmentation changes are based on a data value change. Here is a solution proposed by Edward Masson.

 

Marketo will not allow you to use formula fields as tokens in emails.

 

Marketo Formula Fields cannot be sync'd over to RCA. RCA only allows sync'ing over of "native" fields/attributes. That said, if the underlying Formula Field is derived from native fields/attributes that are sync'd over into RCA, you can always create (i.e., recreate) this as a calculated metric within Revenue Explorer.

 

Here are some additional resources for learning about the Marketo integration with SFDC.

On certain occasions you may wish to append information to a URL in Marketo. This is often the case when you’re appending parameters for the purposes of tracking in analytics tool.

 

Whenever you are adding parameters that include lead or program tokens, you need to make sure to do this properly so you do not mess with your ability to track link clicks in Marketo.

 

If the parameters are fixed (meaning the same for everyone in the program), you can do this with a program token. But you do not always get the same results.

Here’s the tokens I set up to test adding program tokens:

 

And here are the combinations of these tokens that I inserted into my emails:

<p><a href="http://{{my.Website URL}}">Full URL</a></p>

<p><a href="http://www.marketo.com{{my.URLParameters}}">Parameters Only</a></p>

<p><a href="http://{{my.BaseURL}}{{my.URLParameters}}">Base + Parameters</a></p>

<p><a href="{{my.BaseURLwithHTTP}}">Base with HTTP</a></p>

<p><a href="{{my.BaseURLwithHTTP}}{{my.URLParameters}}">Base with HTTP + Parameters</a></p>

 

The first three resolve to this:

https://www.marketo.com/?utm_campaign=FB&utm_term=LI&utm_source=1166&utm_medium=email&mkt_tok=3RkMMJWWfF9wsRomrfCcI63Em2iQPJWpsrB0B%252FDC18kX3RUvIbSffkz6htBZF5s8TM3DUlpEXrVX7UELSbQ%253D

 

The fourth one resolves to this:

https://www.marketo.com/?mkt_tok=3RkMMJWWfF9wsRomrfCcI63Em2iQPJWpsrB0B%252FDC18kX3RUvIbSffkz6htBZF5s8TM3DUlpEXrVX7UELSbQ%253D

 

The last one resolves to this:

https://www.marketo.com/?utm_campaign=FB&utm_term=LI&utm_source=1166&utm_medium=email

You will notice that in this last set up the mkt_tok that allows us to track email link clicks is not appended to the URL in this case. Basically, what this means is that if you are adding multiple tokens into the URL, you need to ensure the HTTP is pulled out of the text tokens and is added directly into the HTML code.

 

Now, let’s imagine that we want to add in program tokens as well as lead tokens. Perhaps we want to include the person’s lead ID somewhere in the URL.

 

Here's the token I inserted into my email:

<p><a href="http://{{my.WebsiteURLwithLead}}{{lead.Id}}">with Lead ID</a></p>

 

This link resolves to (note the lead ID in yellow):

https://www.marketo.com/?utm_campaign=FB&utm_term=LI&utm_source=1166&utm_medium=email&id=1000092&mkt_tok=3RkMMJWWfF9wsRomrfCcI63Em2iQPJWpsrB0B%252FDC18kX3RUvIbSffkz6htBZF5s8TM3DUlpEXrVX7UELSbQ%253D

 

What if I want to add two non-program tokens into my URL? Well, aren’t you getting fancy.

 

<p><a href="http://{{my.BaseURL}}{{my.URLtoIndustry}}{{company.Industry}}&amp;utm_source=1166&amp;utm_medium=email&amp;id={{lead.Id}}">with Industry and Lead ID not all Tokens</a></p>

 

This link resolves to:

https://www.marketo.com/?utm_campaign=FB&utm_term=Banking&utm_source=1166&utm_medium=email&id=1023646&mkt_tok=3RkMMJWWfF9wsRomrfCcI63Em2iQPJWpsrB0B%252FDC18kX3RUvIbSffkz6htBZF5s8TM3DUlpEXrVX7UELSbQ%253D

 

What if I change the format and put all of the extra information into program tokens?

 

<p><a href="http://{{my.BaseURL}}{{my.URLtoIndustry}}{{company.Industry}}{{my.URLafterIndustry}}{{lead.Id}}">with Industry and Lead ID</a></p>

 

This link resolves to:

https://www.marketo.com/?utm_campaign=FB&utm_term=Banking&utm_source=1166&utm_medium=email&id=1023646&mkt_tok=3RkMMJWWfF9wsRomrfCcI63Em2iQPJWpsrB0B%252FDC18kX3RUvIbSffkz6htBZF5s8TM3DUlpEXrVX7UELSbQ%253D

 

As you can see, you get identical results.

 

Summary

As long as you have the http:// pulled outside of the text token, you can append program and lead/company tokens to URLs (and yes to append system tokens also). Note that this is not how email script tokens will work, but that’s a topic for another time.

In some cases you may want to make your SFDC field read only and not allow Marketo to write to the field. Making a SFDC field read only may be important if your SFDC instance is connected to a ticketing or some other system which has address or other information which should never be changed.

 

If you make a field read-only in SFDC, the value of the field in SFDC will always prevail. To help prevent data discrepancies you should not use the field on any forms or any Change Data Value flow steps. You should also block updates in Marketo from all input sources. If the SFDC field gets populated in Marketo first you may see the following sync error: INVALID_FIELD_FOR_INSERT_UPDATE: Unable to create/update fields: [name of field]. Please check the security settings of this field and verify that it is read/write for your profile or permission set.\n

Eventually when the field is populated by a SFDC user the new value will sync from SFDC eliminating the discrepancy and resolving the sync error.

 

In Marketo if you don't have Block Field Updates set for "Flow change data value" you can temporarily change the value of the field in Marketo. It will revert to the SFDC value the next time any update is made to the record and data is synced between the two systems.

 

SFDC Account fields are automatically set in Marketo as read only. For SFDC Contacts in Marketo you cannot manually edit Account fields in Marketo’s Lead Detail screen, while you can use a Flow Action to change an Account field value. The change will be temporary until the Account is updated. The value changed will revert to the SFDC Account value the next time any update is made to the record and data is synced between the two systems.

 

Read only fields in Marketo.

 

Here are some additional resources for learning about the Marketo integration with SFDC.

Here are some Salesforce-related system fields/tokens that will be available in Marketo automatically when you setup the sync.

 

Field

Description

Available in Marketo as a Filter in a Smart List

Marketo Token

SFDC Id

The 18-character Salesforce Id

No. The token can't be used in a Change Data Value flow step. The tokens can onlyt be used in an email.

{{lead.SFDC Id}}

SFDC Type

Lead or Contact. If empty, the record only exists in Marketo.

Yes

{{lead.SFDC Type}}

SFDC Created Date

Date created in SFDC (can be different from “Created” in Marketo).

Yes

{{lead.SFDC Created Date}}

SFDC is Deleted

Lead used to be in SFDC but was deleted and now only lives in Marketo

Yes

{{lead.SFDC Is Deleted}}

Email Bounced Date

Date record bounced in SFDCYes{{lead.Email Bounced Date}}

Email Bounced Reason

Reason record bounced in SFDCYes{{lead.Email Bounced Reason}}

 

SFDC Type: Marketo will automatically change the SFDC Type of a record from Lead to Contact when a record is converted in SFDC.

 

You can use the Lead was Converted filter to search for records which have been converted during a specific time frame.

 

 

SFDC Created Date: If you see a record where the SFDC Created Date is before the Created date in Marketo it means the record was created first in SFDC and then synced to Marketo. During your initial sync the Created date of the records syncing will be around the date you started the sync. If you have a custom sync rule in place and only insert records from SFDC once they qualify based on your rules, the SFDC Created Date can be weeks, months or years different than the Created date in Marketo.

 

Since the SFDC Created Date and the Created date in Marketo are both date/time fields, I recommend always creating date/time vs a date field so you have the option of using the {{lead.SFDC Created Date}} or {{lead.Created At}} tokens along with the {{system.dateTime}} token in a Change Data Value flow step. You can't use a token from a date field in a date/time field.

 

The Created At field is the date the record was created in Marketo. This field is called "Created" in a smart list view or when you view the actual record.

 

SFDC is Deleted: Records deleted in SFDC are not automatically deleted in Marketo. There’s a field in Marketo called SFDC is Deleted and it is set as false until the record is deleted in SFDC.  You can run regular batch campaigns to delete these records from Marketo.

 

If you later attempt to resync the lead to SFDC using for example the Sync to SFDC flow step, a new lead record will be created there and the "SFDC is Deleted" flag will be set back to false. Since this record is new all previous SFDC information such as activities, tasks, campaigns will no longer be included. The SFDC Created Date in Marketo will be updated to the new date.

 

There are two filters in Marketo for finding SFDC Deleted Records:

  • SFDC is Deleted - True/False: I recommend including this boolean field when running reports on SFDC records to get a more accurate count of the number of SFDC records you have in Marketo.
  • Lead Was Deleted from SFDC: Allows you to add the constraint of a date and/or a minimum number of times the record was deleted.

 

Additional resources for learning about the Marketo integration with SFDC.

John M

Creating Nested SPF Entries

Posted by John M Employee Mar 15, 2016

If you're setting up Marketo you're no doubt familiar with how to set up SPF and DKIM to ensure higher deliverability rates, but did you know that there is a limit of 255 characters in an DNS entry, and you'd have to span DNS entries to have an SPF entry longer than 255?

 

so, if you have a TON of domains you want to include in your SPF.. how do you do that? Excellent Question. In short you're able to nest them within the top level domain. I've enclosed an example below, blurring the domains and IP's to protect the innocent.

 

In order to see if SPF is set up, head over to www.mxtoolbox.com and type in the domain. For example, type in "Marketo.com" and you'll see that Marketo allows MArketo to send emails on behalf of Marketo. Not surpriusing, Marketo has always been a great customer of Marketo. Again, I'm blurring everything not related to the discussion at hand.

 

skitch.png

 

So, here's how it looks when you NEST entries.

 

skitch-1.png

the top level SPF entry.

 

In this case, the mktomail.com include is in spf-c, so if we run the MXTools query on _spf-c.company.com (name redacted!) youll see this

 

skitch-2.png

Meaning that all the sub entries will be added to the list of SPF entries.

For many marketers who are up to date on all things SEO related, the lack of key word availability is old news. It is worth revisiting, however, for those of you who are new to Marketo’s Web Personalization (RTP) solution and looking to segment using search terms.

 

In 2011, when Google announce its Panda release, there was one big change that affected SEO marketers – the decision to limit the availability of search query terms. Having key insight into the words or phrases users typed in to find your site, in many cases, became a thing of the past. And just last June Bing announced it will follow-suit and no longer "include the used query terms" when providing search information. Both companies site user privacy as a reason for this change.

 

What does this query term look like?

When you search on Google and click one of the results, you’re taken to that website with the "?q=YourSearchQuery” parameter (search term) in the URL. The below image shows what the query string looks like for a search on ssauter.com:

 

 

What does the search term look like in RTP?

If the search term is in the URL and made available by the search provider (this can be either paid or organic search), RTP will capture that information and make it available as a value in the Search Terms drop down as pictured below.  If the term you are looking for isn't available, you can also write in search term(s) to segment on.

 

 

How do these search engine privacy related changes affect RTP?

What you are likely to find, especially for organic search, is ~85% of the times Google hides or removes this parameter so it’s not available. When search term information is available take advantage of it, but also look for other ways to create meaningful segments by using attributes like: referrals, location and page visits. For a complete list of available segmentation attributes click here.

 

Want to Geek Out and learn more about the history of Goggle Algorithms?  Check out The Ultimate Google Algorithm Cheat Sheet

Attribution is how Marketo gives credit to the programs that help influence sales and opportunities. Test your knowledge with the following exercises:

 

Acquisition Attribution

How many acquisition opportunities are created and what is the acquisition pipeline amount for Tradeshow A?

Tradeshow A will get the acquisition credit for Michael since it acquired him. It doesn’t matter if Michael achieved success in Tradeshow A.

Since the opportunity amount is $0, the FT pipeline will be $0.

 

Success Attribution

Michael achieves success in Webinar B. How many MT Opportunities are created and what is the pipeline amount for Webinar B? Remember Michael was not acquired by Webinar B. Michael did not achieve success in any other programs.

Webinar B will get MT credit for Michael since it didn’t acquire him but he did reach success. Michael must be attached to the opportunity after he reaches success for a program to receive pipeline credit.

 

Acquisition Attribution

Tina is acquired by Webinar A. Her co-worker Tom is acquired by Webinar B. An opportunity is created and both are attached to it. How many FT Opportunities are created and what is the pipeline amount for each webinar?

Each webinar will share the acquisition credit since both contacts are associated to the one opportunity.

 

Success Attribution

Tina achieves success in Webinar A. Her co-worker Tom achieves success in Webinar B. An opportunity is created and both are attached to it. How many MT Opportunities are created and what is the pipeline amount for each webinar? Tina and Tom did not achieve success in any other programs.

Each webinar will share the success credit since both contacts are associated to the one opportunity.

 

Success Attribution

John achieves success in Webinar A. He also achieves success in a Seminar B. An opportunity is created. How many MT Opportunities are created and what is the pipeline amount for each event? John did not achieve success in any other programs.

Each event will share success credit since John reached success in both programs before he was associated to the one opportunity.

 

Success Attribution

Betsy achieves success in Webinar A. Her co-worker Jody also registers for Webinar A but doesn’t reach success. Separate opportunities are created for each person. How many MT Opportunities are created and what is the pipeline amount for the webinar? Betsy and Jody did not achieve success in any other programs.

Webinar A will get MT credit for Betsy but not credit for Jody since she didn’t reach success.

 

Acquisition Attribution

Aaron is acquired by Webinar A. His co-worker Sam also is acquired for Webinar A. Two opportunities are created for Aaron but none for Sam. How many FT Opportunities are created and what is the pipeline amount for the webinar?

Webinar A will get credit for both of Aaron’s opportunities.

 

Acquisition & Success Attribution

Zak is acquired by Webinar A but doesn’t reach success. An opportunity is created for Zak. How many FT & MT Opportunities are created and what is the pipeline amount for the webinar?

Webinar A will get acquisition credit for but no success credit since Zak didn’t reach success.

Success Attribution

Zak achieves success in Webinar A. How many MT Opportunities are created and what is the pipeline amount for Webinar A? Zak did not achieve success in any other programs. Zak was not associated to the opportunity. Note: The Marketo attribution setting is Explicit.

Webinar A will not receive opportunity credit since Zak is not associated to the opportunity.

Attribution is how Marketo gives credit to the programs that help influence sales and opportunities. Test your knowledge with the following exercises:

 

Acquisition Attribution (FT) for Pipeline Credit

Acquisition attribution (FT) gives credit to the program that acquires the contact. Which program receives acquisition attribution pipeline credit when two or more programs touch the same contact, resulting in an opportunity being created?

In all the diagrams below the order is of when the touches occurred.

example.JPG

The program that acquired the contact receives 100% of the acquisition pipeline credit since the acquisition took place prior to opportunity creation. It doesn’t matter if the record reaches success in Program A.

 

Acquisition Attribution (FT) for Revenue Won Credit

Acquisition attribution (FT) gives credit to the program that acquires the contact. Which program receives acquisition attribution revenue won credit when two or more programs touch the same contact, resulting in an opportunity being closed?

The program that acquired the contact gets 100% of the acquisition attribution revenue won credit since the acquisition took place prior to opportunity close.

 

Acquisition Attribution (FT), Contact Acquired after Opportunity Created

What acquisition (FT) pipeline credit will Program A receive when it touches the contact after an opportunity is created?

The program that acquired the contact gets 0% of the pipeline credit because the opportunity was already created.

 

Success Attribution (MT) for Pipeline Credit

Success attribution (MT) gives credit across all programs evenly in which a contact reached success. Which program receives success attribution (MT) pipeline credit when two or more programs touch the same contact, resulting in an opportunity being created?

All programs in which the contact achieves success prior to opportunity creation will get an equal portion of the pipeline credit.

 

Acquisition and Success Attribution Pipeline Credit

Which program(s) receives acquisition and success attribution credit when two or more programs touch the same contact, resulting in an opportunity being created?

The program that acquired the contact receives 100% of the pipeline credit since the acquisition took place prior to opportunity creation. The programs that the contact  reached success in before the opportunity was created will share success pipeline credit.

 

Multi-Touch Attribution for Revenue Won Credit

Multi-touch attribution gives credit across all programs evenly in which a contact reached success. Which program receives MT attribution revenue won credit when two or more programs touch the same contact, resulting in an opportunity being closed?

All programs in which the contact achieves success prior to opportunity close get an equal portion of the revenue credit.

 

Continue to Part 2 of exercises.

 

RCE Attribution Reporting Overview and Best Practices. Read article.

The first example is using the Explicit Setting (Credit is given to a program if the contact reaches success and has an opportunity role/primary):

 

Seminar in Anaheim

  • One of the two new names is in Marketo only and the other is only a lead in SFDC.
  • The two records who reached success are both contacts in SFDC. The two contacts are from different accounts. One contact is associated to an opportunity in the amount of $16,500. This contact was not acquired by the program and thus the program only receives success attribution credit (MT).

Workout Today Whitepaper

  • One of the two new names is a lead and the other is a contact.
  • The two contacts which reached success are from the same account. Only one is associated to an opportunity in the amount of $11,500. This contact was not acquired by the program and thus the program only receives success attribution credit (MT).

Fitness Whitepaper

  • The three records who reached success are all contacts in SFDC but are from different accounts.
  • One of the contacts is associated to an opportunity in the amount of $6,222.
  • The other contact is associated to a different opportunity in the amount of $8,333.
  • Thus, the program receives both acquisition attribution (FT) and success attribution credit (MT).

explicitgraph.png

 

Here is the same example with the Implicit Setting (Credit is given to a program if a contact in the program reaches success and there are any opportunities associated to the account. The contact in the program doesn’t need to be associated to the opportunity):

 

Seminar in Anaheim

  • The one contact associated to an opportunity still gives the program 1.0 oppty credit in the amount of $16,500. This contact was not acquired by the program.
  • Since the other contact is from a different account and there is an opportunity associated with the account in the amount of $11,500 the program gets partial credit since there are three contacts with the account who have reached success in five programs ($11,500/5 = $2,300 & 0.2 Oppty per program).

Workout Today Whitepaper

  • Since one of the contacts was acquired by the program and is from the same account with the $11,500 opportunity the program splits acquisition attribution (FT) credit with the Running Whitepaper program ($11,5000/2 = $5,750 & 0.5 Oppty per program).
  • Since there are two contacts from the same account who reached success in the program, success attribution is split ($11,500/5 = $2,300 x 2 = $4,600 & 0.4 Oppty)

Fitness Whitepaper

  • Acquisition attribution result stays the same as Explicit setting.
  • Success attribution (FT) increases by $2,300 compared to the Explicit setting since one of the contacts who reached success is from the account with the $11,500 opportunity which is being split by the three contacts in five programs ($11,500/5 = $2,300 & 0.2 Oppty).

Running Whitepaper

  • As mentioned above the acquisition attribution (FT) credit is being split with the Workout Today Whitepaper program.
  • Success attribution (FT) is being split by the three contacts in five programs ($11,500/5 = $2,300 & 0.2 Oppty).

implicitgraph.png

 

Here are the results using the Hybrid Setting:

  • You will notice that the results are exactly the same as the Explicit due to the way I set up this example.

hybridgraph.png

 

When you compare all three results side by side you can see that the Implicit setting may give or reduce credit to a program. The Explicit setting may do the opposite of the implicit setting and not give credit to a program which did influence an opportunity. The Hybrid setting may sometimes but not always help account for opportunities not associated to contacts but it may not give credit to all the programs which influenced the opportunity.  

 

Link back to first example.

That's a mouthful isnt it? In the spirit of "a picture is worth a thousand words", I've recorded a video walking you through how to do this in Boomi. Its tricky only in that you have to tweak the XML that Boomi finds in the Marketo WSDL.

 

You can see the video here! Using Boomi: Uploading Opportunities and Opportunity Person Role

 

Screen Shot 2016-03-10 at 1.25.28 PM.png

Fig 1 - the completed Opportunity and Opportunity Person Role Process

 

What I really wanted to share here is a bit more about the XML format you're creating in the video. The following are the XML's being created by Boomi with the recommended configuration.

 

<ns1:Opportunity xmlns:ns1="http://www.marketo.com/mktows/">

   <externalKey>

      <name>oppKey</name>

      <value>1001</value>

   </externalKey>

   <attribList>

      <IsClosed>1</IsClosed>

      <IsWon>1</IsWon>

      <Name>Opportunity from Boomi</Name>

      <oppKey>1001</oppKey>

   </attribList>

</ns1:Opportunity>

 

Fig 2 - Opportunity Upsert XML

 

<ns1:OpportunityPersonRole xmlns:ns1="http://www.marketo.com/mktows/">

   <attribList>

      <IsPrimary>1</IsPrimary>

      <Role>Marketing Manager</Role>

   </attribList>

   <associationList>

      <mObjAssociation>

         <mObjType>Opportunity</mObjType>

         <externalKey>

            <name>oppKey</name>

            <value>1001</value>

         </externalKey>

      </mObjAssociation>

      <mObjAssociation>

         <mObjType>Lead</mObjType>

         <externalKey>

            <name>leadKey</name>

            <value>89001</value>

         </externalKey>

      </mObjAssociation>

   </associationList>

</ns1:OpportunityPersonRole>

Fig 3 - Opportunity Person Role XML

 

Screen Shot 2016-03-10 at 1.38.02 PM.png

Fig 4 - The XML Setup as seen in SOAPUI

So, you can see where the structure of the XML comes from. Cool right?

An overview of the native Forward to Friend functionality in Marketo.

 

Using the Forward to Friend token in your emails allows you to track leads who have received a forwarded email through this link, and automatically adds them as a new lead if they are not already in the database. The token used in the hyperlink in the email is {{system.forwardToFriendLink}}. When you click the Forward to Friend link in an email a light box appears on a web page. The Forward to Friend feature is in English only and can’t be edited.

foward2friend.JPG

  • If the friend’s record is already in Marketo and is unsubscribed, email invalid or marketing suspended the Forward to Friend email will not be sent if it is an non-operational/promotional email. The Forward to Friend email will be sent if it is an operational email. 
  • The friend’s First Name and friend’s Last Name are automatically blocked from field updates. Thus, if the friend’s record is already in Marketo the name fields won’t be overwritten.
  • The Marketo activity log will capture the Forward to Friend request and when the email is sent and delivered to the friend.

f2frequest.JPG

  • The Marketo activity log will capture if the friend’s email address bounces.

bounced.png

 

New Records

  • A new record is created in Marketo if the email address of the friend is not already in Marketo.
  • Marketo sets the new record’s email address by default as unsubscribed. You can use a triggered smart campaign to change the unsubscribed field.
  • Marketo sets the lead source automatically to Forward to Friend.

lead source.png

  • If the email is a local asset of a program, the program is marked as the lead’s Acquisition Program.
  • Unfortunately the Original Source Info and Registration Source Info will be empty and there is no way I know to use Marketo to set these fields.

original source.png

 

Marketo activity log

  • Marketo will capture that a Forward to Friend email was sent from the person who received the original email.
  • Marketo will capture which Marketo ID was sent the forwarded email however no personal information such as name or email address will be captured.

sentforward.JPG

activitydetails.JPG

 

There are two Forward to Friend triggers in Marketo

  • Sent Forward to Friend Email trigger can be used to increase the score or write an interesting moment for the person who forwarded the email.

sentforwardtrigger.png

  • Received Forward to Friend Email trigger can be used to increase the score or write an interesting moment for the person who received the forwarded email.

receivedforward.png

 

Sales Insight

  • Emails sent to the friend will automatically be displayed in Sales Insight if the record is already synced to SFDC.

salesinsight.png

  • Emails sent by the friend will not automatically be displayed in Sales Insight. You can create a campaign to write an interesting moment.

 

For additional information see the Forward to Friend article on docs.marketo.com

 

Here are some suggestions you can vote on to improve Forward to Friend

Form abandonment is often viewed as a fact of life. Many would even say it's a good indicator of customers' readiness to "convert." In this blog post we’ll tackle one common reason for form abandonment--too many fields.

 

There are many reasons why users don't complete a form, one measurable truth is : the more fields you have, the more friction you add.

So, what’s the optimal number of fields a form should have? The simple answer is-- the must-haves.

 

Here’s a good example of a form requirement:

 

1. Email Address

2. Phone number

3. Street address

4. City

5. State

5. Country

7. Postal Code

 

As you can see, there are 7 fields to complete. So, how can we reduce the number of fields we present but still get the information we need?

One solution is to leverage Google Maps API.

 

Evaluate the following examples side by side:

 

combine_images.png

 

On both pages we have a call to action. However, the left form will result in a 3-10 percent higher conversion rate.

To achieve the above solution we are going to leverage Marketo form 2.0 with Google Maps API to create a single auto complete address field and then auto populate the data we need to Marketo.

 

So let's get started.

 

First, create a new form in Marketo, with  3 visible and 4 hidden fields. One of the visible fields will leverage Google address suggest API. After a user selects the address, all 4 hidden fields are populated with the required data.

 

 

Step 1: Create a new form in Marketo:

Screen Shot 2016-03-01 at 4.37.09 PM.png

 

Note that Google maps auto-complete only supports window.HTMLInputElement (INPUT tag). Therefore, text area is not supported.

 

Step 2:  Next, grab the form embed code

Screen Shot 2016-03-01 at 4.47.14 PM.png

 

It looks similar to this:

 

<script src="//app-sj15.marketo.com/js/forms2/js/forms2.min.js"></script>
<form id="mktoForm_1014"></form>
<script>MktoForms2.loadForm("//app-sj15.marketo.com", "343-RRE-559", 1014);</script>

 

 

Step 3: To get an API key from Google, follow these instructions . Once completed, you’ll have an API key like this:

 

AIZaSybF1RmsRtcYGDoRe2tITKNJ9NJEwGn3uhK

 

Step 4: Now, let's work on the Marketo form 2.0 JavaScript to add the new functionality.

 

This is how the end result looks like on the landing page:

 

 

<script src="//app-sj15.marketo.com/js/forms2/js/forms2.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?key=AIZaSybF1RmsRtcYGDoRe2tITKNJ9NJEwGn3uhK&libraries=places"></script>

<form id="mktoForm_1014"></form> 
  <script>
  MktoForms2.loadForm("//app-sj15.marketo.com", "343-RRE-559", 1014,function(form) {
   //Locate the field to trigger the auto-compleat
  var location = document.getElementById('Address');
  //Pass Google the field
  var autocomplete = new google.maps.places.Autocomplete(location);
  //Trigger the callback function
  autocomplete.addListener('place_changed', function() {
      var place = autocomplete.getPlace();
      //Populate Marketo hidden fields
     form.vals({"streetAddress":place.address_components[0]['long_name']+' '+place.address_components[1]['long_name'],
        "City":place.address_components[3]['long_name'],
        "Country":place.address_components[5]['short_name'],
        "State": place.address_components[4]['short_name'],
        "postalCode":place.address_components[7]['long_name']});
      });
  });
 </script>

Here’s the final result. A visitor uses the address suggest to select his location, after selected, the information populates to the hidden fields and submitted to Marketo.

You get the accurate information with fewer fields = less friction for the visitor means more

 

test1.gif

Here are some tips to troubleshoot RCE Program Opportunity Analysis issues:

 

Issue

Suggested Remedy

It is difficult to sort by program in RCE

Create a program naming convention which is easy to sort by. For example, try starting all program names with YYYY for year and MM for month. Include the day if the program is an event. If there are multiple workspaces add the workspace to the program name.

Name.png

It is difficult to include or exclude certain programs in RCE

Include a program type abbreviation

(e.g. Seminar = SMR vs Road Show = RDS) in the program name

Filter on abbreviation.JPG

Marketo users are creating programs with the incorrect channel

Try reducing the amount of channels to avoid confusion when creating a program from scratch. Build program templates with the correct channels already set. Create a cheat sheet highlighting the correct channel to use for each type of marketing activity.

Marketo users can’t remember which program status equals Success

Label the success status with “Success”

success.png

Marketo users are forgetting to create smart campaigns to set success

Start by reducing your statuses to have as few as possible. Marketo will automatically set a record to the first program status when a record fills out a Marketo form on a Marketo landing page or when a record is imported directly into a program. Try creating program templates with a smart campaign that sets success.

I am unable to filter my report by program cost timeframe

Program Cost Timeframe.png

Add period cost to your programs.

periodcost2.JPG

I didn't add the cost to any of my programs but I still want to see the programs appear in my report

To ensure your programs will appear in RCE reporting regardless of whether you included a period cost or not, set all non-operational channel analytics behavior to inclusive.

analytics.JPG

I am not seeing all programs when I filter by a tag

Tags created after the program is created will not appear in the existing programs. If you add tags later they will need to be manually added to all existing programs. Make sure all tags are required and remember a “-None-” or “-Not Applicable-” option. Double check that the program missing in your report has the correct tag value.

Acquisition attribution (FT) is being credited to the incorrect program

Change the acquisition program and reset the acquisition date using a token (e.g. {{lead.Created At}} or {{lead.SFDC Created Date}}) Remember you can’t reset the membership date to the original date. If necessary remove the record as member of the original acquisition program, it doesn’t happen automatically when you change acquisition programs.

I changed acquisition programs but the records are still members of the original program

When you change acquisition programs it doesn’t automatically remove a record from the original acquisition program. Run a flow step if necessary to remove the record from the original program.

Opportunities synced from a CRM are not appearing associated to a records in Marketo

Make sure the CRM Opportunity Object is being synced to Marketo. Check that opportunities are associated to contacts via contact roles or is the primary on the opportunity.

The opportunity amount (pipeline or revenue won) is not appearing in the Program Opportunity Analysis report

Make sure there is an amount in the standard opportunity amount field.

The Program Opportunity Analysis report is showing Acquisition attribution (FT) but is not showing Success (MT) attribution

Check to make sure records are reaching success in the program where it was acquired.

The Program Opportunity Analysis report is showing Success attribution (MT) but is not showing Acquisition attribution (FT)Check to make sure you are setting acquisition for all records.

 

If you have additional remedies for resolving issues please add them below. Thanks!

As marketers we are well aware that fast loading websites are crucial for reducing bounce rates, increasing engagement, and ultimately driving lead generation and revenue.  So how do you maintain site speed when using Marketo’s web personalization campaigns?  A look at best practices for image use and links is a good place to start.

 

Where should I house images for use with my RTP campaigns? 

While you can host images in Marketo’s Design Studio, the preferred method of image hosting is via a Content Delivery Network, or CDN.  This is because content hosted on a CDN is loaded very quickly.

 

What’s a CDN?

Wikipedia describes it as follows: A content delivery network or content distribution network (CDN) is a globally distributed network of proxy servers deployed in multiple data centers. The goal of a CDN is to serve content to end-users with high availability and high performance.

 

It’s the globally distributed aspect of these networks that helps to speed up content load time. This article on the Best Content Delivery Network (CDN) Providers sums up how CDN’s work: “A content delivery network (CDN) helps speed up your website in part by shortening the distance between the person visiting your site and the server delivering the content. Your site, or at least some of the elements of your site are distributed and cached on servers across the globe. That way, whether someone is accessing your site from Australia, China, the U.S. or the U.K., they are able to load your content from a local server instead of having to wait for it to be provided by your origin server. This can have a significant impact on load times while also reducing the strain on your hosting server.”

 

And with CDN’s rise in popularity, there are vendors to fit every size and pocketbook – including vendors that provide the service for free.

 

I’ve got my images hosted – how do I link to them in RTP campaigns?

A best practice is to change all links to be protocol-relative - this means removing the http: or https.  And don’t just do this for image URLs, make URLs used to link things like headline or body text and CTA buttons protocol-relative, too.

 

Here’s an example of a protocol-relative link for an image: //yourwebsite.com/images/image number-image name-image size.jpg

 

By keeping links relative you reduce potential mixed content issues that can be brought about when you have an insecure (http) resource within a secure (https) page. To put it simply, keeping the links relative ensures that images will render properly and that the user will not receive content related security warnings.

 

Something else to consider is that users with the standard web personalization roles do not have access to images stored in the Marketo Design Studio.  That means a user assigned the out of the box Web Campaign Editor or Launcher role won’t have access to Marketo Lead Management solution, including the Design Studio.  You can create a new role, tweak the existing role, or add additional privileges to these roles as a workaround.

 

Next time – RTP campaign testing tips.

Since understanding the results of the different RCE attribution settings can be challenging I have done my best to outline an example so you can see the differences.

 

This first example uses the Explicit Setting (Credit is given to a program if the contact reaches success and has an opportunity role/primary):

  • All records were acquired, reached success and were converted to contacts in the programs listed below.
  • The records in the Adidas and Nike programs are from the same account as one of the records in the Healthy Eating Whitepaper program. One opportunity for $18,000 was created for the contacts/account in the Adidas and Nike programs but was only associated to the record in the Healthy Eating Whitepaper program. Thus the contacts in the Adidas and Nike programs aren’t associated to the opportunity (No role/primary) created.
  • One opportunity was created for one of the records in the Healthy Eating Whitepaper. The contact is associated to the opportunity. The amount of the opportunity is $18,000. As noted above, this contact is from the same account as the contacts in the Adidas and Nike programs.
  • Two opportunities were created for other record in the Healthy Eating Whitepaper program. This contact is from a different account. The contact is associated to one opportunity which is for $13,500. The contact is not associated to a second opportunity which is for $3,333.
  • Thus, with the Explicit setting the Healthy Eating Whitepaper program will receive credit for generating 2.0 Acquisition and Success (FT and MT) opportunities totaling $31,500 ($18,000 + $13,500).

explicit1chart.png

 

Here is the same example with the Implicit Setting (Credit is given to a program if a contact in the program reaches success and there are any opportunities associated to the account. The contact in the program doesn’t need to be associated to the opportunity):

  • Since the contacts in the Adidas and Nike programs are from the same account as the contact from the Healthy Eating Whitepaper program, Acquisition and Success attribution (FT and MT) are now split between all three contacts ($18,000/3 = $6,000, 0.33 opportunities each) and the three programs.
  • Since two opportunities were created for the same account for the other record in the Healthy Eating Whitepaper program, the contact in the program will now get credit for two opportunities ($13,500, 1.0  opportunity and $3,333, 1.0 opportunity).
  • Thus, the Healthy Eating Whitepaper program will receive credit for generating 2.33 Acquisition and Success (FT and MT) opportunities totaling $22,833 ($13,500 + $3,333 + $18,000/3 = 6,000).

implicitgraph1.png

 

Here are the results using the Hybrid Setting:

  • Since Hybrid gives credit first explicitly by opportunity role/primary and if there are none then it goes by implicit the records in the Adidas and Nike programs won’t receive any Acquisition or Success (FT or MT) credit. All the credit is given to the other record on the same account which is part of the Healthy Eating Whitepaper program which is explicitly associated to the $18,000 opportunity.
  • Since two opportunities were created for the other record in the Healthy Eating Whitepaper program, the program will get credit for both opportunities ($13,500 and $3,333) even though the contact is only associated to one of them as noted earlier.
  • Thus, the Healthy Eating Whitepaper program will receive credit for generating 3.0 Acquisition and Success (FT and MT) opportunities totaling $34,833 ($13,500 + $3,333 + $18,000).

hybridgraph1.png

 

When you compare all three results you can see that the Implicit setting may give credit to a program despite having no real influence in the opportunity. The Explicit setting may do the opposite of the implicit setting and not give credit to a program which did influence an opportunity. The Hybrid setting will help account for opportunities not associated to contacts but it may not give credit to all the programs which influenced the opportunity. Finally, whether your sales team always, sometimes or never associates contacts with their opportunities might have a dramatic impact on each of the different RCE attribution settings.

 

If you find this article confusing feel free to add comments and I will do my best to clarify my article. Thanks!

 

Link to second example.

 

Link to Checklist for Attribution Reporting.

You can change the way Marketo ties contacts to opportunities for acquisition and success attribution, FT and MT.

  • These settings will impact RCE reports under the Program Opportunity Analysis, Opportunity Analysis and Lead Analysis areas. This will also affect the Program Analyzer report.
  • Changing this setting does not modify any Marketo data, it simply changes the way your reports run. This can be reverted at any time.
  • A change to the attribution setting will be seen the next day. You can experiment by changing the setting each day and view the results the following day.

 

Setting Options

  • Explicit gives credit to a program if the contact reaches success and has an opportunity role/primary.
  • Implicit gives credit to a program if a contact in the program reaches success and there are any opportunities associated to the account. The contact in the program doesn’t need to be associated to the opportunity (No role/primary).
  • Hybrid gives credit first explicitly by opportunity role/primary and if there are none then it goes by implicit.

 

explicit1.png

Using the Explicit setting will give the most accurate attribution results for Acquisition attribution (FT) but might not necessarily reflect the influence of other contacts on the account for Acquisition Attribution (FT) or Success attribution (MT). Using Implicit may create false positives for both FT and MT, contact records will get credit for an opportunity despite having no real influence in the opportunity. Here is an excellent article written by Aslihan Ayan about marketing and sales alignment related to attribution reporting.

 

Link to example.

 

Link to Checklist for Attribution Reporting

For those who have gotten the best practice instance from Marketo, you may have noticed that the demographic scoring campaigns are set up to run only once, while the behavior scoring campaigns are set up to run once an hour, once a day, or every time. Inquiring minds might wonder why. After all, it's technically possible for demographics to change - someone might change location, get a promotion, or expand into a new industry.

 

This is mostly a case of the 80:20 rule. Out of your entire database, only a very small percentage is going to experience changes to the demographic criteria in a given timeframe. Often when those changes happen, they don't actually change the score someone would be given. For example, let's imagine that you have a campaign set up to trigger off a Job Title change and you have two tiers of Job Titles, one for C-level and one for Director level. Imagine you start standardizing your job titles from Dir to Director. This is a change that will trigger the demographic scoring campaign.  However, it will not impact the actual point value the person is assigned. It will just run a bunch of people through a campaign for no reason.

 

The second reason we don't rescore demographics is the complexity. Not only do I need to give you new points if your title changes, but I need to add or subtract the difference between the old and new values. So if you got 10 points before and now your job title is worth 15 points, I technically need to increase your score by 5 points. I can do this by analyzing the change to identify the difference, by subtracting 10 points and then adding 15, or by resetting your demographic score completely and reevaluating every demographic criteria. Whichever option you choose, you end up building a lot of extra campaigns that are, again, running with minimal impact. Just taking up extra processing space in the system.

 

You might wonder how big of a deal this really can be. Well here are some numbers from a client who shall remain nameless. They took the approach of resetting someone's demographic score completely any time a value changed and then rescoring the entire thing. In a 30 day period, they had 12,000 people added to the list for reevaluation who received no resulting change in their demographic score. They had 100,000 people 'change employee size' from <50 to 1-50, as the result of standardization from Salesforce, but which you can clearly see would result in no change to the score. Even worse, these kinds of campaigns tend to be triggered using Request Campaign, so every lead is running through individually in the trigger campaign queue, which is typically where you'd want your most important, time sensitive campaigns to be. Not how I usually describe demographic scoring campaigns.


Last, but certainly not least, the implications on your lifecycle. Let's imagine a record had just hit 50 points, our threshold for MQL. Then something gets updated and now their demographic scoring goes down by 5 points. They're now at 45 points. Should you claw them back and make them not an MQL anymore? Are we now saying they aren't qualified? What if sales is already working on them?

 

Long story short - scoring demographics once gives you the biggest bang for the buck, with the least amount of headache. That is why our best practice is to set those campaigns to run once per lead.