Overview
We’ve all been there- you’re searching for a field in your smart lists and can’t figure out which is the right one. There’s 20 fields for Country. There are fields in your system from processes that haven’t been used in a decade. Multiple CRM admins and Marketo Engage Admins, all creating new fields and processes to make their mark or their process their own, adhering to leadership requests, gaps in processes that were filled with a field and later filled with a software… Your system is, what I like to call, a Frankenstein.
It is time to audit your fields.
What Is The Benefit Of A Field Cleanup Effort?
Not only is it confusing to have several similarly named fields, or just mind boggling in general to scroll to find the right one, but it might be slowing down your Marketo instance or causing significant lags in syncing with your CRM. Eventually, once you reach a certain field sync threshold, the sync to SFDC could error as well.
How To Start Your Field Cleanup Effort: Marketo (Admin Required)
Head to the admin section of your Marketo, and head down to the Field Management section under Database Management.
Selecting “Export All Objects” will automatically download an Excel spreadsheet with multiple tabs that give you details of different areas in your Marketo Engage instance including Opportunity fields, Named Accounts (if you have ABM), Program Member fields, Channels (and statuses), Tags, Custom Objects, Custom and Standard Activities, etc. It might be my favorite report in Marketo.
For our purposes we really want just the Lead and Opportunity fields. Lead Fields are all fields in your system. Unlike SFDC, lead fields can be lead, contact, account, or opportunity. Marketo doesn’t indicate which in this spreadsheet, so it will be most helpful to go to the individual fields and see where it’s mapped on the CRM.
Pro Tips:
- Custom fields created by SFDC and synced to Marketo will have __c at the end of them.
- Standard fields created with the Marketo package in SFDC will typically start with mkto71_ or mkto2_ (mkto2_ are generally older if you’re seeing both in your system).
- Oftentimes software packages loaded into SFDC will have the field names start with the name of that software, or similar nomenclature. This can make it easier to identify groups of fields for review.
You can also just export a list of fields – the main difference is that this will only show you all of the fields in your instance, not all the other options, and it will provide you the SOAP API name. There is also an additional column for the Program Member Field. When you pull the “Export All Objects” you will also get the field type, data type, If it’s REST API Read Only, and if it is already hidden, plus the field ID.
You can also pull both reports and combine them!
How To Start Your Field Cleanup Effort: SFDC (Admin Required)
If possible, ask your SFDC team to pull reports on field usage across the instance. You’ll want lead, contact, account and opportunity reports. A common misconception is that Marketo doesn’t need the account fields or opportunity fields, or that they don’t sync over. A lot of times this is the biggest culprit of fields in Marketo that aren’t even in use.
Another ask for your SFDC admins is to extract the Marketo Sync User Permissions. This can be done with dataloader.io if you have this as part of your SFDC subscription. You would then export the Field Permissions object. You can use a custom SOQL Query to pull PermissionsEdit for a specific profileID (your Marketo Sync user) from the sObjectType Account, Contact, Lead, Opportunity or Campaign. Once this has completed running, you’ll get a green check mark with the “number of successes” linked to a CSV that will include all the objects that Marketo can see (are syncing between systems) and whether Marketo has read only or read/write access (editing access).
Using Excel/Google Sheets
The first task for using all of this information is to bring it all into one spreadsheet. I like to copy each report into its own tab in google sheets as their “raw files” essentially. This is data I haven’t done anything to. I like to use Google sheets as it is easier to share and collaborate with individuals.
Once this is done, I copy the Lead Fields tab from the “export all objects” report – this copy will be my “MASTER” tab that will be what I filter, clean, update, etc. First, I’ll filter out all the Marketo-only fields. These can be added to a new tab if you want, but for this blog I’ll just be tackling the SFDC synced fields as they can wreak more havoc on the environment. To do this, go to “Data” and “Add filter.” Next, filter the REST API Name to only include fields that contain “__c”. This will give you only the custom SFDC fields.
Next, I’ll want to add in the details from the SFDC reports. Add columns for “# of leads” and “% lead usage” for the leads, contacts, accounts, and opportunities. Next, you’ll want to use formulas to get the information from the SFDC reports into this tab. I’m not the most formula savvy, but for me, this looks like a ton of VLookup formulas. You’ll be using the API name as the “lookup” as this will be the same across Marketo and SFDC. Here is the Vlookup formula:
The search_key is going to be the cell that contains your REST API name. The range will be two columns from your SFDC report – the REST API name on the right and the value you want populated in the field to the left (for example, % populated). Index will be 2 (you’re searching against two fields). [is_sorted] will be false – this means you’re looking for an exact match.
Once the information is populated (either with a number, percentage, or #N/A), I would copy the entire column and paste as values only – this erases the formula so you can start fresh with the next column.
It sounds like a lot of work, but this should only take about 15 minutes to complete once you get the hang of the formula! Just remember that the value that is going to show up in the cell with the formula, is the value to the left of the REST API name in your “range” or reference columns.
What Should You Do Once Your MASTER Tab Has All The Information In It?
This is the tedious part. As mentioned above, I like to group fields that are used in similar processes, so I will create MORE columns that indicate Marketing Relation, Recommendation, and Notes (insert evil laughter). Try your best to use similar naming conventions so it’s easier to filter based on any of these fields. If helpful, create a drop down to choose from to make it cleaner.
Keep Fields: First, go through all the fields that you know are in use. Think of main processes like Lifecycle, Lead Source, Marketability, Privacy Compliance, Segmentations, any tool-specific fields for enrichment, analytics, etc. Mark these as “Keep” in your recommendations.
Delete Fields: Next, I would sort your data by the SFDC usage – anything in SFDC that has very little usage and that you can’t identify as part of a Marketo Engage process is likely not a great field to keep. You can also search individual fields in the field section of the Admin console (where you downloaded your report) and see everywhere that a field is in use in Marketo. If these fields are not immediately identifiable to you, are not in use in SFDC, and are not in use in Marketo, it’s probably safe to recommend a Deletion.
Hide Fields: Oftentimes, account or opportunity fields are synced to Marketo by default rather than for any usefulness to marketing. Those you can identify as Account/Opportunity fields (or lead/contact fields) that are highly used in SFDC but are not used often in Marketo, I would recommend that Marketo Engage does not have read or write access to these fields. The exception is if these fields have any dependencies/requirements that will cause sync errors if Marketo Engage can’t see them. Your SFDC team should be able to help identify those.
Review Fields: You may see duplicate fields and not know which one is best to use in which system, or you may see fields with a medium to low level of SFDC usage, that are active in some Marketo Engage processes (by reviewing in the admin field section). If there is someone with historical knowledge in SFDC, Marketo, or any other analytic/marketing/sales tool, I’d recommend reviewing as a team to make decisions.
Deleting Fields
Once everyone has agreed on which fields can be deleted out of both systems, the SFDC admin team can go ahead and delete. Unfortunately, this does not do anything in Marketo except remove where it indicates the CRM mapping. The field will still be usable in Marketo. The benefit is that the SFDC/MKTO sync should get quicker, the downside is that you can still see these fields.
Once confirmed that the fields are deleted, I recommend hiding them in Marketo. Again, this is done in the Admin console in the Field Management section. Just select the field you’ll be hiding, and select “hide field” from the field actions drop down. This will take a second or two, but don’t move to the next field until this one has completed – I’ve noticed on occasion that it will hide the next field I selected and not the one that I originally was trying to hide and then I have to hide it again.
Pro Tip: Add a description to the field that describes the scenario. Something that includes your name, the date, and the reason for hiding (ex: AR – 5.31.2023: Deleted from SFDC, hidden in MKTO).
NOTE: If the field is in use at all you will not be able to hide it. You will need to remove it everywhere it is used in order to hide it. Additionally, if it is used in the smart list of an email program (the little mailbox one), you won’t be able to remove it and will need to delete the email program as a whole. If this is not something your team is comfortable with, you can keep it unhidden but then update the description to indicate what happened. (ex: AR – 5.31.2023: Deleted from SFDC, unable to hide in Marketo. Not in use).
The descriptions can be referenced in the future if someone is confused about what is going on with a field, but it also can be pulled via an API to export the fields, so it’s a good practice to keep.
Marketo Engage does not allow its users to delete fields ever. If you do not like having a field still existing in your Marketo Engage, you can always submit a support ticket to request they be deleted, but typically if it’s a large amount of fields, this will be considered premier support and you’ll have to pay to continue to go down that route. Sometimes I’ve seen that they’ll delete a few on request though.
Hiding Field from Marketo in SFDC:
This is where the field permissions report will come in handy. Once you’d determined the fields that will remain in SFDC, but hidden from Marketo, I would do a VLOOKUP formula in the field permissions report. Here are the steps I would take:
- It looks like the field permissions report appends the field object with the field rest api name (Account.field api name instead of just Field API name). Luckily, it’s using a “.” as an identifier, so this should be easy to parse in google sheets.
- Copy the Rest API column and paste at the end of the spreadsheet
- Select “data” and then “Split Text To Columns” (in google sheets, it’s near the bottom)
- In Google Sheets, a little box will show up that says “Separator: Detect Automatically” but you’ll want to select “period” from the drop down.
- This will put the field object in one column, and the field name in a separate column – done!
- Next, you’ll do a Vlookup. First, make sure your recommendation column is next to the REST API Name in your master tab. Next, place a column next to the rest API name in your permission report named something like “Action.” In this column, do your Vlookup formula. You’ll reference the API Name next to the Action cell, then the range will be your Rest API Name + recommendation column. Ex: =Vlookup(A1,Master Tab A:B,2,false). This will populate all the “review/keep/delete/hide” recommendations.
- Filter by the “hide” recommendations and give this to your SFDC admin, asking them to hide only these fields indicated with a hide from Marketo. SFDC even has a quick way to do it via data uploader – please note the below considerations though.
A few things to keep in mind:
- A field that is required in SFDC and cannot be seen by Marketo can cause a sync error. After hiding fields from Marketo Engage, monitor the notifications for sync issues (better yet, subscribe to them!)
- In order to properly hide fields from the Marketo Engage Sync User, you can update via each individual field, or via the profile permissions.
- SFDC permission sets are additive – you cannot restrict access that was already granted on the profile. In addition, if you hide from the profile but it is granted on the permission set, you will have to hide in the permission set as well.
Once again, once the SFDC team has confirmed the fields are hidden from Marketo, feel free to hide the field in Marketo Engage and add notes for the Who/when/why.
Hiding fields, in general, can be done at any time. It will not affect the SFDC sync because they are no longer connected, they just will cause confusion when creating smart lists, smart campaigns, filters, etc. That said, hiding them is a very tedious process, so I would recommend setting aside a little time each day to do them during low-activity seasons (when is that, amiright?)
Conclusion
The intricacies of Marketo Engage are endless – it is a beast. When you add in a CRM, it becomes even more complex. Simplifying your fields, working with your SFDC team, and working as a team as a whole to clean up both instances can not only improve performance of the sync, but improve the ease of campaign set up, make persona building easier, and get all “operation” teams on the same page. This is an exercise in teamwork and patience for sure – but it is worth it!