AnsweredAssumed Answered

Storing and managing multiple product interests in Mkto and SFDC

Question asked by 89f22710154ecc7796119c17ed654a6073ad7274 Champion on Jul 20, 2016

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.