9 Replies Latest reply on Mar 10, 2017 9:24 AM by David Gallagher

    Syncing campaigns/programs with SFDC but not all of its members

      I have a question about syncing campaigns with SFDC. This applies to activities such as Seminars and Webinars.


      So, when I create a new program for an event such as a seminar, everyone who registers for the seminar is added as a member with the status 'Registered'. Once the seminar has taken place, I'd usually run an update so people who attended are changed to 'Attended'.


      What are the options now if I want to sync this campaign with Salesforce, but only sync members who actually attended? If I simply turn on the sync, everyone gets sent to Salesforce. I know I can set up a smart list or smart campaign to choose who to sync, but then the event won't appear in Salesforce Campaigns. The other option, of course, is to remove people who registered for the event but didn't attend, then turn on the Campaign sync. But I'd rather not do this as I want everyone to remain as members of the program, regardless of whether or not they attended.


      Any thoughts?

        • Re: Syncing campaigns/programs with SFDC but not all of its members
          Grégoire Michel

          Hi Ben,


          You do not have control over which members get synch'ed when you sync a program. All of them will get synch'ed provided they can be inserted in SFDC (for instance, if the company Name is missing, Salesforce will not allow the sync).


          You can also vote here : Selective Program Member synchronization (by member status)



          3 of 3 people found this helpful
          • Re: Syncing campaigns/programs with SFDC but not all of its members

            Thanks for the responses. I agree with Greg that it would be a nice feature to have, but for now I'll use a smart campaign instead.

            • Re: Syncing campaigns/programs with SFDC but not all of its members
              David Gallagher

              You can sync based on member status, but it involves just a little work...

              1. Clone and create your program and end the name with " -- MKTO". Let's use the following as an example:
                -> Program Type = Event
                -> Channel = Live Event
              2. Create a second program with the same Type, Channel and Name. I suggest ending it with " -- SFDC"
              3. In the source Program (-- MKTO), create a triggered smart campaign
                -> Trigger = Program Status is Changed
                -> Flow = constrained "Change Program Status" based on program status change in the -- MKTO Program
              4. If program status = Attended, change...
                -> program status of " -- SFDC" program to Attended
                -> default = do nothing
                This will only push over those that attended. Simply add the other status you wish and you should be good
              5. Activate that smart campaign
              6. Go to the "-- SFDC" program and set up campaign sync.


              Optional: in setup of your "-- SFDC" program, set the reporting to operational/non-inclusive. this will exclude the details from reporting since this is technically a standalone and operational program.


              Now you have selective status program/campaign sync. Also here are a few comments related to the aforementioned process.


              Helpful Note: Smart Campaign Setup in a Program Template...

              Set up the smart campaign as part of your template using the source program as the constraining program and add the necessary statuses as if it were the campaign sync program. Then delete the program name from the constraints and the statuses should remain allowing you to simply paste the "-- SFDC" program name without needing to update the statuses again.


              Helpful Note: Awesome advantage for Event and Email Program Types

              In your template, you can add a child mail program... but when the window pops up you can select the appropriate Mail Channel or – wait for it – change the program type to Event. By doing this -- at a minimum for emails or events events -- you can have all of this logic pre-made and part of the original template and as you clone and go. The smart campaigns and sub program will all be ready to rock. Only thing left, enable campaign sync.


              A note of Warning about Manual Sync Flows

              Using flow steps to manually sync with salesforce, add to campaign or update campaign status each will use one API call per lead processed. While these calls are included with marketo's SFDC Sync integration. Most SFDC instances are limited to 1000 calls per purchased license... ie: if you have 100 SFDC seats you have 100,000 calls available.


              Let's say you decide to sync a large program to SFDC using a flow step rather than campaign sync. This will result in a minimum of 110,000 calls to sfdc and will shut down any future calls until midnight the next day. This happens because the calls exceeded SFDCs max amount. By leveraging campaign sync, it will batch process up to 200 leads per api call to SFDC. Net result is 550 calls vs 110000. While there is a delay 5-15 minutes depending on your instances configuration, it is best to use campaign sync and reserve sync with sfdc or other campaign related requests to just those instances where it is absolutely necessary.


              I'd also recommend asking your SFDC admin for a daily report of All SFDC API calls by source. This will give you an important view into your crm and give you a better idea of what to expect on a daily basis. This is a rolling 7 day report and sfdc does not store any info beyond that so subscribing and updating your own living doc is definitely a wise move.


              I hope this helps!!!




                • Re: Syncing campaigns/programs with SFDC but not all of its members
                  David Gallagher

                  Quick Update

                  I have gone through 30+ of our evergreen (ongoing) programs that are linked to our primary nurture programs... I cut the total calls from a Tuesday (Nurture Day) Peak of ~59,000 calls to a much more reasonable ~10,000. For those of you that like charts, enjoy...


                  Source: SFDC API Report and a little Google Sheet Magic.


                  UPDATE: I have also found it good to have a marketo campaign/report showing all leads that "synced yesterday" and have that sent to my inbox every morning. This may seem redundant, but it helps to catch any sync issues that may not be reported by marketo... ie: you expect to see 400-800 leads per day sync... why did only 95 sync yesterday. This could give you a heads up that something something may be funky with either your sync, marketo, sfdc instance or friendly Gremlims binging on fried chicken.

                    • Re: Syncing campaigns/programs with SFDC but not all of its members
                      Grégoire Michel

                      Hi David,


                      Really nice one, even if it doubles the number of programs in Marketo and forces you to revisit all smart campaigns when you clone a program, with some risks of errors


                      I would still prefer that the idea Selective Program Member synchronization (by member status) be implemented.



                        • Re: Syncing campaigns/programs with SFDC but not all of its members
                          David Gallagher

                          Grégoire Michel wrote:

                          I would still prefer that the idea Selective Program Member synchronization (by member status) be implemented.

                          I could not agree with your more!!!!


                          But until that day comes there are a few odd-ball and effective workarounds to minimize risk and error...


                          Where I use duplicate programs for selective sync

                          Note that there are only certain circumstances where duplicate programs are necessary... namely with

                          • Evergreen content used in nurtures
                          • Random occurrences when you are asked to capture Viewed (page/email) or invited status(es) in Marketo but do not wish to push to incomplete data or members who do not exist as SFDC Leads and/or Contacts.
                          • Email subscription programs that you want to limit syncing only to those who's SFDC Type is not empty


                          Cool thing about Events/Emails -- use a sub program in your program template

                          • Email: in your master template, add a sub email program asset. Be sure to use the same tag type as the parent, but exclude from reporting for your sanity. Then when you reference that program from the parent, it will always be there.
                          • Events: same as above, yes, add an email program BUT change the channel to event -- yes you can add a sub event program. Like the email program above, label and go.


                          Default Programs...

                          For other programs, It would be AWESOME if we could have a custom token to refer to a Marketo Program just like we can do with the recent SFDC Campaign token (which is awesome btw ).

                          1. Naming:
                            1. Use Same core name for both programs
                            2. marketo programs with "- MKTO"
                            3. sync programs end with "- SFDC".
                          2. Flow Steps: One Flow To Rule them All.
                            1. When setting up flow steps in my template program, I simple refer to the existing program ("- MKTO").
                            2. Create your sync program - I usually just do this from scratch since it will contain nothing. Name it appropriately and end it with "- SFDC"
                            3. Now your flow:  roll through the flow that updates the status simply replacing the MKTO with SFDC. It takes as much if not less than manually setting up a manual sfdc sync flow.
                            4. be sure to go back to the summary screen or stretch your screen nice and wide to make sure all those change status in program end in - SFDC

                          Trigger & Flow -- Add to Main Program ("- MKTO")

                            1. Trigger: Program Status is Changed
                            2. FLOW
                              1. Change Program Status: Constrained
                                • if program status is -- member
                                  • do nothing
                                • if program status is -- filled form
                                  • Program: "EGEB -- my ebook program - SFDC" | New Status: "filled form"


                                • if program status is -- "downloaded"
                                  • Program: "EGEB -- my ebook program - SFDC" | New Status: "downloaded"


                                • if program status is -- "Not In Program"
                                  • Program: "EGEB -- my ebook program - SFDC" | New Status: "Not In Program"
                              1. NOTE: THIS IS AN EXAMPLE, BE SURE TO MODIFY FOR YOU INSTANCE AND TEST, TEST, TEST prior to any new program deployment