Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

 

This method creates and automatically starts an import process for the contacts listed in the xmlDoc parameter. You can use this method instead of calling a sequence of NewImportProcess and StartProcess methods. StartImportProcesses can also be used to update fields of an existing contact. Please note that, while updating, empty parameters are handled as "do not update this field", not as "overwrite with an empty value".

...

Parameter 

listsIDs
string 

Mandatory - List identifiers. You can include multiple list IDs, separated by semicolons.
(See "Lists and Groups" section below for more information and examples.)

Example:  1;2;3

listsGUIDs
string 

List GUIDs. You can include multiple list GUIDs, separated by semicolons.
(See "Lists and Groups" section below for more information and examples.)

Example:  abc-123-def-456;ghi-789-jkl-123;mno-456-pqr-789

xmlDoc
string 

Mandatory -

When specified: An XML string containing the recipients to be imported to the specified lists and groups. In this case the method Does not import any pending lists that were previously submitted using NewImportProccess

If not specified (NULL): method sequentially imports all pending XML structures that have been previously submitted using NewImportProccess. This option is available only starting from MailUp 8.2.1 or higher

See "Best Practices" and "XML Structure"

section

sections below for known restrictions, more information and examples.

)

groupsIDs
string 

Mandatory - Group identifiers for each list, separated by semicolons. You can specify multiple groups for each list as well, separated by commas.
(See "Lists and Groups" section below for more information and examples.)

Example:  22,23;24;25

importType
integer 
Mandatory - Import type.
  • 1 = import occur only on email channel (mobile number, if present, is discarded)
  • 2 = subscriptions occur only on SMS channel (email address, if present, is discarded)
  • 3 = subscriptions occur on both email and SMS channels (no field is discarded)
mobileInputType
integer 

Mandatory - Mobile number input type.

  • 1 = Entire number in a single field
  • 2 = Prefix and Number separated into different fields

(See "XML Structure" section below for more information and examples.)

asPending
boolean 
optional - Import recipients as "pending" when set to true.
(Default = false) 
ConfirmEmail
boolean 
optional - Sends a confirmation request email when set to true. The system will automatically create the confirmation email based on a default template.
(Default = false) 
asOptOut
boolean 
optional - Imports recipients as "unsubscribed" when set to true.
(Default = false) 
forceOptIn
boolean 
optional - Imports recipients as "subscribed" when set to true. This will re-subscribe recipients that have previously unsubscribed.
(Default = false) 
replaceGroups
boolean 
optional - Replace existing groups when set to true. The system will automatically remove previously subscribed groups and keep only the groups specified in the groupsIDs parameter.
(Default = false) 

...

Tip
titleBest practices
  1. Method call fails when another import process is running. You can use GetProcessDetails method to check if a previously started process is still running; while an alternative solution consist of periodically retry the method call until it returns
    ReturnCode=0
  2. Method response contains either a global ReturnCode or a specific ReturnCode for each import process that has been started by this method. Call is successful only when all ReturnCodes are equal to "0"
  3. There is not a known size limit for xmlDoc field: it has been successfully tested with 1.2 million characters (in this case return value is quite immediate but the whole import process could take several minutes and other import requests will be denied during this period)
  4. When using cloud services it can happen that your application must respect a size limit in API calls that is lower than the size of the XML that you would pass as xmlDoc parameter. In this case you can split your import data, call several times NewImportProccess with smaller recipient lists and then use StartImportProcesses (with empty xmlDoc parameter) to sequentially start all previously created import processes. This behavior requires MailUp 8.2.1 or higher.

Lists and Groups

You must specify at least one of the listIDs or listsGUIDs parameters. If you specify both fields, then the number of items in each parameter must match, and you must use semicolons to delineate empty values. We've provided examples below to help with understanding how to work with these parameters.

...

Code Block
languagehtml/xml
linenumberstrue
<ws:listsIDs>1;2</ws:listsIDs>
<ws:listsGUIDs>66af9900-7dd7-4cca-9125-beadaf3a3a59;0e591119-xxxx-yyyy-zzzz-6ac75384b564</ws:listsGUIDs>
<ws:groupsIDs>;</ws:groupsIDs>
 Add recipients to multiple lists (one group per list)

In this example, we specify both the listsIDs and the listsGUIDs parameters. Each of the parameters must have the same number of elements (separated by semi-colons). In this case, we are specifying group 22 for list 1, and group 13 for list 2.

Code Block
languagehtml/xml
linenumberstrue
<ws:listsIDs>1;2</ws:listsIDs>
<ws:listsGUIDs>66af9900-7dd7-4cca-9125-beadaf3a3a59;0e591119-xxxx-yyyy-zzzz-6ac75384b564</ws:listsGUIDs>
<ws:groupsIDs>22;13</ws:groupsIDs>

...

Code Block
languagephp
linenumberstrue
<?php

class MailUpWsImport {
  protected $ns = "http://ws.mailupnet.it/";
  //replace <console host name> with the host name of your console
  protected $WSDLUrl = "http://<console host name>/services/WSMailUpImport.asmx?WSDL";
  protected $headers = array("User" => "user", "Password" => "password");
  protected $rCode;
  private $soapClient;
  private $xmlResponse;
  protected $domResult;

  function __construct() {
    $this->header = new SOAPHeader($this->ns, "Authentication", $this->headers);
    $this->soapClient = new SoapClient($this->WSDLUrl,array("trace"      => 1,"exceptions" => 0));
    $this->soapClient->__setSoapHeaders($this->header);
  }

  function __destruct() {
    unset($this->soapClient); 
  }

  //...
	
  public function startImportProcesses($processData) {
    try {
      echo $processData."<br/><br/>";
      $this->soapClient->StartImportProcesses($processData);
    } catch (SoapFault $soapFault) {
      var_dump($soapFault);
    }
  }

  //...
	
}

$WsImport = new MailUpWsImport();
$xmlData = <<<EOT
<subscribers><subscriber email="test@example.com" Prefix="+39" Number="3351234567" Name="Test">
<campo1>Luigi</campo1><campo2>Rossi</campo2><campo3>Rossi consulting</campo3><campo4>Parma2</campo4><campo5>PR</campo5>
<campo6>43102</campo6><campo7></campo7><campo8>ITA</campo8><campo9>Via Garibaldi, 1</campo9><campo10>0521123456</campo10>
<campo11>0521123457</campo11></subscriber></subscribers>
EOT;

$startImportProcessData = array(
  "listsIDs" => "4",
  "listsGUIDs" => "3c5cb08c-f0b5-4bd6-9c2a-b687ecdac8b4",
  "xmlDoc" => $xmlData,
  "groupsIDs" => "22",
  "importType" => "3",
  "mobileInputType" => "2",
  "asPending" => '0',
  "ConfirmEmail" => "0",
  "asOptOut" => "0",
  "forceOptIn" => "0",
  "replaceGroups" => "0"
);
 
$WsImport->startImportProcesses($startImportProcessData);

?>

 

C#

Code Block
languagecsharp
WSMailUpImport toTest = new WSMailUpImport();

Authentication auth = new Authentication();
auth.User = tbLoginUserImport.Text;
auth.Password = tbLoginPasswordImport.Text;
auth.encType = string.Empty;

toTest.AuthenticationValue = auth;

string xmlString = "<subscribers><subscriber email=\"mike@example.com\" Prefix=\"\" Number=\"\" Name=\"\"><campo1>Mike</campo1><campo2>Brown</campo2><campo3>Example Company</campo3><campo4>Los Angeles</campo4><campo5></campo5><campo6>90125</campo6><campo7>CA</campo7><campo8>US</campo8><campo9>555 Some Street</campo9><campo10></campo10><campo11>555-123-1234</campo11></subscriber></subscribers>";

string myListId = "8";
string myListGuid = "CC9C4CBD-567B-4248-B56F-7C8364F11C5";
string myGroupsIDs = "45";
int importType = 3;
int mobileInputType = 2;
bool asPending =  false;
bool ConfirmEmail =  false;
bool asOptOut =  false;
bool forceOptIn =  false;
bool replaceGroups =  false;
string retVal = toTest.StartImportProcesses(myListId ,myListGuid, xmlString, myGroupsIDs, importType, mobileInputType, asPending , ConfirmEmail, asOptOut, forceOptIn, replaceGroups);

...