This function lets you import a list of leads into an existing Static List in Marketo, similar to the import list function in the Marketo UI.
Import Format: These values are identical to the structure of a CSV used in a list import.
Example:
|
First |
Last |
---|---|---|
joe@company.com | Joe | Smith |
mary@company.com | Mary | Rodgers |
wanda@megacorp.com | Wanda | Williams |
Note: displayName values should be used in the importFileHeader rather than the name values.
Dynamic Email Content: Optionally, you can pass values on a per lead basis that act as replacements for My Tokens in an email.
|
First |
Last |
{{my.specialToken}} |
{{my.otherToken}} |
---|---|---|---|---|
joe@company.com | Joe | Smith | Fish | Blue |
mary@company.com | Mary | Rodgers | Chicken | Brown |
wanda@megacorp.com | Wanda | Williams | Veggie | Hazel |
Important: If you add in tokens for the leads, you must specify the Smart Campaign that will use them. The next time the specified Smart Campaign runs, it will use the values from your list, instead of the normal My Token values. After that single Campaign runs, the tokens will be discarded.
NOTE: importToList can take time to complete, particularly for large lists. If you plan to use the newly imported list in other API calls, you should use importToListStatus to check that the operation is complete.
Request
Field Name |
Required/Optional |
Description |
---|---|---|
programName | Required | Name of the program containing the static list |
campaignName | Optional | If using My Token overrides, this is the name of the campaign where those tokens will be used. The campaign must be within the program specified. |
listName | Required | Name of the static list in Marketo which leads will be added to |
importFileHeader | Required | Column headers for the leads to be imported, including lead attribute and my token names. |
importFileRows->stringItem | Required | Comma separated values, with one row per lead |
importListMode | Required | Valid options: UPSERTLEADS and LISTONLY
UPSERTLEADS to create or update leads and add them to a static list LISTONLY to add existing leads to a static list, skipping new leads. Note: Add to List activities are not logged for leads added using this mode. |
clearList | Optional | If true the static list is cleared before the import. If false leads are appended. |
Request XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.marketo.com/mktows/"> <SOAP-ENV:Header> <ns1:AuthenticationHeader> <mktowsUserId>demo17_1_809934544BFABAE58E5D27</mktowsUserId> <requestSignature>17bf0b9e412e58eec836dc557ca9433f666944b6</requestSignature> <requestTimestamp>2013-08-05T14:56:58-07:00</requestTimestamp> </ns1:AuthenticationHeader> </SOAP-ENV:Header> <SOAP-ENV:Body> <ns1:paramsImportToList> <programName>Trav-Demo-Program</programName> <importFileHeader>Last Name,First Name,Job Title,Company Name,Email Address</importFileHeader> <importFileRows> <stringItem>Awesomesauce,Developer,Code Slinger,Marketo,dawesomesauce@marketo.com</stringItem> <stringItem>Doe,Jane,VP Marketing,Jane Consulting,jdoe@janeconsulting.com</stringItem> </importFileRows> <importListMode>UPSERTLEADS</importListMode> <listName>Trav-Test-List</listName> <clearList>false</clearList> <campaignName>Batch Campaign Example</campaignName> </ns1:paramsImportToList> </SOAP-ENV:Body> </SOAP-ENV:Envelope> |
Response XML
1 2 3 4 5 6 7 8 9 10 11 |
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.marketo.com/mktows/"> <SOAP-ENV:Body> <ns1:successImportToList> <result> <!-- Possible Values: COMPLETE/PROCESSING/FAILED/CANCELED --> <importStatus>PROCESSING</importStatus> </result> </ns1:successImportToList> </SOAP-ENV:Body> </SOAP-ENV:Envelope> |
Sample Code – PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
<?php $debug = true; $marketoSoapEndPoint = ""; // CHANGE ME $marketoUserId = ""; // CHANGE ME $marketoSecretKey = ""; // CHANGE ME $marketoNameSpace = "http://www.marketo.com/mktows/"; // Create Signature $dtzObj = new DateTimeZone("America/Los_Angeles"); $dtObj = new DateTime('now', $dtzObj); $timeStamp = $dtObj->format(DATE_W3C); $encryptString = $timeStamp . $marketoUserId; $signature = hash_hmac('sha1', $encryptString, $marketoSecretKey); // Create SOAP Header $attrs = new stdClass(); $attrs->mktowsUserId = $marketoUserId; $attrs->requestSignature = $signature; $attrs->requestTimestamp = $timeStamp; $authHdr = new SoapHeader($marketoNameSpace, 'AuthenticationHeader', $attrs); $options = array("connection_timeout" => 20, "location" => $marketoSoapEndPoint); if ($debug) { $options["trace"] = true; } // Create Request $request = new stdClass(); $request->programName = "Trav-Demo-Program"; $request->campaignName = "Batch Campaign Example"; $request->importFileHeader = "Last Name,First Name,Job Title,Company Name,Email Address"; $request->importFileRows = array("Awesomesauce,Developer,Code Slinger,Marketo,dawesomesauce@marketo.com","Doe,Jane,VP Marketing,Jane Consulting,jdoe@janeconsulting.com"); $request->importListMode = "UPSERTLEADS"; // UPSERTLEADS or LISTONLY $request->listName = "Trav-Test-List"; $request->clearList = false; $params = array("paramsImportToList" => $request); $soapClient = new SoapClient($marketoSoapEndPoint ."?WSDL", $options); try { $response = $soapClient->__soapCall('importToList', $params, $options, $authHdr); } catch(Exception $ex) { var_dump($ex); } if ($debug) { print "RAW request:\n" .$soapClient->__getLastRequest() ."\n"; print "RAW response:\n" .$soapClient->__getLastResponse() ."\n"; } print_r($response); ?> |
Sample Code – Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
import com.marketo.mktows.*; import java.net.URL; import javax.xml.namespace.QName; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.GregorianCalendar; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Hex; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBElement; import javax.xml.bind.Marshaller; import javax.xml.datatype.DatatypeFactory; import javax.xml.datatype.XMLGregorianCalendar; public class ImportToList { public static void main(String[] args) { System.out.println("Executing Import To List"); try { URL marketoSoapEndPoint = new URL("CHANGE ME" + "?WSDL"); String marketoUserId = "CHANGE ME"; String marketoSecretKey = "CHANGE ME"; QName serviceName = new QName("http://www.marketo.com/mktows/", "MktMktowsApiService"); MktMktowsApiService service = new MktMktowsApiService(marketoSoapEndPoint, serviceName); MktowsPort port = service.getMktowsApiSoapPort(); // Create Signature DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); String text = df.format(new Date()); String requestTimestamp = text.substring(0, 22) + ":" + text.substring(22); String encryptString = requestTimestamp + marketoUserId ; SecretKeySpec secretKey = new SecretKeySpec(marketoSecretKey.getBytes(), "HmacSHA1"); Mac mac = Mac.getInstance("HmacSHA1"); mac.init(secretKey); byte[] rawHmac = mac.doFinal(encryptString.getBytes()); char[] hexChars = Hex.encodeHex(rawHmac); String signature = new String(hexChars); // Set Authentication Header AuthenticationHeader header = new AuthenticationHeader(); header.setMktowsUserId(marketoUserId); header.setRequestTimestamp(requestTimestamp); header.setRequestSignature(signature); // Create Request ParamsImportToList request = new ParamsImportToList(); request.setProgramName("Trav-Demo-Program"); request.setCampaignName("Batch Campaign Example"); request.setImportFileHeader("Last Name,First Name,Job Title,Company Name,Email Address"); ArrayOfString rows = new ArrayOfString(); rows.getStringItems().add("Awesomesauce,Developer,Code Slinger,Marketo,dawesomesauce@marketo.com"); rows.getStringItems().add("Doe,Jane,VP Marketing,Jane Consulting,jdoe@janeconsulting.com"); request.setImportFileRows(rows); request.setImportListMode(ImportToListModeEnum.UPSERTLEADS); request.setListName("Trav-Test-List"); request.setClearList(false); SuccessImportToList result = port.importToList(request, header); JAXBContext context = JAXBContext.newInstance(SuccessImportToList.class); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); m.marshal(result, System.out); } catch(Exception e) { e.printStackTrace(); } } } |
Sample Code – Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
require 'savon' # Use version 2.0 Savon gem require 'date' mktowsUserId = "" # CHANGE ME marketoSecretKey = "" # CHANGE ME marketoSoapEndPoint = "" # CHANGE ME marketoNameSpace = "http://www.marketo.com/mktows/" #Create Signature Timestamp = DateTime.now requestTimestamp = Timestamp.to_s encryptString = requestTimestamp + mktowsUserId digest = OpenSSL::Digest.new('sha1') hashedsignature = OpenSSL::HMAC.hexdigest(digest, marketoSecretKey, encryptString) requestSignature = hashedsignature.to_s #Create SOAP Header headers = { 'ns1:AuthenticationHeader' => { "mktowsUserId" => mktowsUserId, "requestSignature" => requestSignature, "requestTimestamp" => requestTimestamp } } client = Savon.client(wsdl: 'http://app.marketo.com/soap/mktows/2_3?WSDL', soap_header: headers, endpoint: marketoSoapEndPoint, open_timeout: 90, read_timeout: 90, namespace_identifier: :ns1, env_namespace: 'SOAP-ENV') #Create Request request = { :program_name => "Trav-Demo-Program", :import_file_header => "Last Name,First Name,Job Title,Company Name,Email Address", :import_file_rows => { :string_item => ["Awesomesauce,Developer,Code Slinger,Marketo,dawesomesauce@marketo.com", "Doe,Jane,VP Marketing,Jane Consulting,jdoe@janeconsulting.com"] }, :import_list_mode => "UPSERTLEADS", :list_name => "Trav-Test-List", :clear_list => "false", :campaign_name => "Batch Campaign Example" } response = client.call(:import_to_list, message: request) puts response |