importToList
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:
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.
Important: If you add in tokens for the leads, you must specify the Smart Campaign that uses 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
UPSERTLEADS
and LISTONLY
Request XML
<?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
<?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
<?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
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
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