Storing and managing multiple product interests in Mkto and SFDC

Level 10

Storing and managing multiple product interests in Mkto and SFDC

I’ve been investigating the options for storing multiple product interests on a lead and managing those product interests through Marketo and SFDC. Because we have numerous different products in which a person could have an interest, we want to create an easy way to segment in Marketo and update SFDC back and forth. We have a couple of requirements:

  1. Make this scalable globally and across potentially 14 business units with numerous products
  2. Make this in a way that doesn’t clutter up an SFDC screen
  3. Make this in a way that can be managed globally

Here are a couple of options that I have explored:

  • Create a new field for every product interest.
    • Pros:
      • Easy to integrate
      • Many fields already existing
      • Easy to sync with SFDC on a field-to-field basis
    • Cons:
      • Bloats the database by creating fields that will mostly be false
      • Not easily scalable
      • Requires database structure changes when new products are added
      • Very difficult to remove fields for sunset products

  • Use Custom Objects built in-house
    • Pros:
      • This is the most logical as it creates an N:N relational table
      • Allows for a lot of additional information to be stored including many levels of product detail
      • Addition of a lead to a custom object can be used to trigger a campaign in Marketo
      • Includes datetime stamps of when the record was added, updated or modified
    • Cons
      • Custom Objects are extremely difficult to use – currently they can only be updated via an import or an API call
      • Custom Objects cannot be used in batch campaigns
  • Use Custom Objects built by Marketo

     o Pros:

      • Most likely to get us exactly what we need
      • Would be available via batch or trigger campaigns
      • Would (hopefully) sync with SFDC

     o Cons:

        • Expensive
        • Not manageable in-house
  • Use static lists
    • Pros
      • Easy solution.
      • Scalable
      • It's easy to add and remove a person from a static list
      • Can be used in triggered and batch campaigns
      • Complex algorithms using lists can be stored in Smart Lists
    • Cons
      • No different than a Boolean field, however it is not added to the database
      • Cannot store detailed product interest except through additional lists
      • Workflow intense
      • Need to be created and managed in each workspace
      • No timestamps queryable

Other disqualified ideas:

  • Segmentations: a lead can only belong to one segment at a time.
  • Smart lists based off of data stored in the Person Notes: too difficult to manage this accurately

While I was originally quite optimistic about Custom Objects, the more I’ve investigate the less I feel they are an adequate solution. To solve for the needed immediacy of this project, I recommend we investigate the creation of static lists. 

How this would work:

From SFDC, we transform data so that an add request would come through as "ADD-PRODUCT1" or "DELETE-PRODUCT1" and then have a corresponding workflow in Marketo that would look for these values and add or remove from the static list. There would be one master workflow for adds and one for deletes.

In Marketo, we build a workflow that would concatenate data together based on list membership:

Step 1. ProductInterestToSFDC = "Product Interests:"{{my.linebreak}}

Step 2. IF (in static list) PRODUCT1, ProductInterestToSFDC = {{lead.ProductInterestToSFDC}} -Product 1 {{my.linebreak}}  Step 3. IF (in static list) PRODUCT2, ProductInterestToSFDC = {{lead.ProductInterestToSFDC}} -Product 2 {{my.linebreak}}

Step 4. IF (in static list) PRODUCT3, ProductInterestToSFDC = {{lead.ProductInterestToSFDC}} -Product 3 {{my.linebreak}}

So, someone interested in Products 1 and 3 would appear like this:

Product Interests:

-Product 1

-Product 3

This would get put into that "middle-man" field which would then sync to an SFDC field. Every couple of hours we run the Product Interest workflow on a Batch campaign to pick up any leads that need to synced.  I'm leery of doing it via a trigger because I don't want it to clog up my campaign queue so I'd have to test out performance.

Would love to get thoughts on this.

Robb Barrett
Level 6

Re: Storing and managing multiple product interests in Mkto and SFDC

I was dealing with something similar, in the past. I had to work with about 10 products each with their own function, and each with a different level of interest. The sales team needed focal points on interest. My solution was to create the additional fields in Marketo and to match the high priority fields to their equivalent in SFDC but those field would only be scoring related, and I needed to find a way to adjust the scoring to be a scale rather then a number the scale was between 1-100.

Custom object would have taken too long and who would access it? The team needs info in a way that they can respond quickly. By creating the additional scores, I developed a product scoring model for each one and a total activity score, that could help segment the data further.

The real thing is who is going to use the information and why do you need it? If the goal is to enhance the Sales forces information then you need to remember to keep the information simple for them and easily accessable, because you don't need to be an engineer to be in sales, you just need to be good at talking with people and understanding their needs, wants and expectations.

If the goal is to help segment the data, why does it need to live anywhere other then Marketo?

Level 10

Re: Storing and managing multiple product interests in Mkto and SFDC

Thanks for the thoughts, but I'm looking at far more than 10 products. I'm looking at about 14-20 product lines, each with X number of products and some have different names globally and some are allowed in some regions but not others. I need something scalable to potentially thousands of products if I'm considering a solution.

Robb Barrett
Level 1

Re: Storing and managing multiple product interests in Mkto and SFDC

We went live with a similar solution not long ago. We decided to choose smart lists as well, but I'm pretty confident our solution was a bit more simplified than what would work for you.

In short...  we started with a static list for every action/channel we wanted to record: form submissions, content downloads, etc... Then we created additional static lists for each product that might be associated to those actions. We ran smart campaigns to add to people to a list, then we eventually remove them from those lists. The removal from the lists is the most important part. It's the catalyst to pass the information into our CRM via an API connection. Once in our CRM, new custom object records are created for each [action + product] and stamped with a bunch of relational data (status, stage, score, dates, counters, etc...) Those new [action + product] records are now organized, presented, and updated by our Sales Team in a highly automated process as well.

We passed a lot of our reporting needs into the CRM, as well as a lot of historical/archival needs around previous interests. We felt that out of the box Marketo would allow the Marketing team enough time to properly orchestrate all of the necessary reactions to an inbound interest. We also concluded that any detailed reporting on product interest would have to be closely tied to Sales data/processes in our CRM anyway.

All in all, it was a heavy CRM development project with a very simple API connection. I can't imagine it scales well for teams managing large numbers of products like yours though. We topped out at less than 350 static lists across 5 product categories.

Not applicable

Re: Storing and managing multiple product interests in Mkto and SFDC

Hi everyone,

Here's a simple solution:

1. Create additional field "Product Interest Temp" with type "text area" in Marketo and connect it to your forms. This field needs to live only in Marketo, so don't map it to SFDC field.

2. Create Smart campaign #1 as follows:

- Trigger: Lead is created

- Flow action: Change Data value

                Add choice: if "Product Interest Temp" is not empty -> Attribute "Product Interest" New Value "{{lead.Product Interest Temp}}".

                Default Choice: do nothing.

3. Create Smart campaign #2 as follows:

- Trigger: Data Value Changes

               Attribute "Product Interest Temp"

- Flow action: Change Data Value

               Attribute: "Product Interest" New value: "{{lead.Product Interest}};{{lead.Product Interest Temp}}"

Now, each time someone fills out a form with additional product interest, Marketo will add the new value to Product Interest field and separate it with Semicolon. Salesforce will recognize this as multiple values and display them just as if you picked them up from a picklist.

Even more - if you add a value in SFDC, it will be correctly added to Marketo.

This technique can be used for any other multi-select picklist fields. The only downside is that you'll have to select "contains" operator if you want to filter our the leads by Product Interest in Marketo, which will slow down your smart list processing. Apart from that, it works pretty well and no smart lists, no custom objects, no-nothing .

I hope this helps.



Level 10 - Community Moderator

Re: Storing and managing multiple product interests in Mkto and SFDC

Using "contains" with delimiters only between items is prone to error (for example, "microsoft;oracle" and "micros;opentable" both contain "micros"). To get more precision, surround the list with semicolons as well. ";microsoft;oracle;" does not contain ";micros;".

Level 1

Re: Storing and managing multiple product interests in Mkto and SFDC

Hi, this thread is a bit old, but I was wondering if the suggestion from Eugene also works if the data change values was triggered by a smart campaign, and not by a form fill out. I tried the same smart campaigns, but the trigger seems not to work and it doesnt add any campaign members.