In case anyone else stumbles across this, here's my solution: Build a visualforce page with this code for contacts: <apex:page standardController="Contact" recordSetVar="AllContacts"> <apex:includeScript value="/soap/ajax/30.0/connection.js"/> <apex:includeScript value="/soap/ajax/30.0/apex.js"/> <script> sforce.connection.sessionId = "{!$Api.Session_ID}"; var idArr = []; list = "{!Selected}" list = list.replace("[","").replace("]","") idArr = list.split(", "); if (idArr[0] == null){ alert('Please select at least one row'); } else { var value = new Array(); value[0] = new String(idArr); var mname = new Array(); mname[0] = "contactIds"; var key = sforce.apex.execute( "mkto_si.LongGetMethodArguHandler", "putArgus", { name : mname, value : value, contactType : "Contact" } ); try { var key = sforce.apex.execute("mkto_si.LongGetMethodArguHandler", "putArgus", { name:mname, value:value, contactType:"Contact" }); window.top.location = "/apex/mkto_si__Send_Marketo_Email?contactType=Contact&key=" + key +"&retUrl=" + encodeURIComponent(document.location.href); } catch(err) { window.top.location = "/apex/mkto_si__Send_Marketo_Email?contactType=Contact&contactIds=" + idArr +"&retUrl=" + encodeURIComponent(document.location.href); } } </script> </apex:page> Or this code for leads: <apex:page standardController="Lead" recordSetVar="AllLeads"> <apex:includeScript value="/soap/ajax/30.0/connection.js"/> <apex:includeScript value="/soap/ajax/30.0/apex.js"/> <script> sforce.connection.sessionId = "{!$Api.Session_ID}"; var idArr = []; list = "{!Selected}" list = list.replace("[","").replace("]","") idArr = list.split(", "); if (idArr[0] == null){ alert('Please select at least one row'); } else { var value = new Array(); value[0] = new String(idArr); var mname = new Array(); mname[0] = "contactIds"; var key = sforce.apex.execute( "mkto_si.LongGetMethodArguHandler", "putArgus", { name : mname, value : value, contactType : "Lead" } ); try { var key = sforce.apex.execute("mkto_si.LongGetMethodArguHandler", "putArgus", { name:mname, value:value, contactType:"Lead" }); window.top.location = "/apex/mkto_si__Send_Marketo_Email?contactType=Lead&key=" + key +"&retUrl=" + encodeURIComponent(document.location.href); } catch(err) { window.top.location = "/apex/mkto_si__Send_Marketo_Email?contactType=Lead&contactIds=" + idArr +"&retUrl=" + encodeURIComponent(document.location.href); } } </script> </apex:page> Then create a new list view button with your visualforce page as the content source: Then add the new button to the list view. It takes a second to load, same as the classic button, but because you're sitting on the visualforce page instead of the list, I also added a "One moment please...." message to the page to pacify impatient users. Hope that helps someone in the future.
... View more