Use the processes outlined in this article to transfer large (i.e., more than 1,000) subscriber lists to Higher Logic Thrive Marketing Professional (Thrive Marketing Professional) for processing. The processing options are:
- AddOrUpdateSubscribers (adds to and updates the list)
- ReplaceAllSubscribers (replaces all the subscribers in the list)
- RemoveSubscribers (removes subscribers from the list)
- UnsubscribeSubscribers
- ResubscribeSubscribers
The BulkUpload is asynchronous. This means that there is a delay of a few minutes between when the call is received and acknowledged, and when it is fully uploaded. Upon the completion of the upload process, an email notification is sent to any email addresses listed in the StatusEmailRecipients node.
The <UploadID>###</UploadID> returned in the response gives the upload ID and can be used to query the success/failure of that upload.
Request
<ActionRequest xmlns="http://partner.informz.net/aapi/2009/08/"> <Brand id="9999">Test Brand</Brand> <User>testuser</User> <Password>password</Password> <Actions> <BulkUpload> <UploadDetails> <InterestDetails> <InterestNames> <InterestName>Sample Interest 1</InterestName> <InterestName>Sample Interest 2</InterestName> <InterestName>Sample Interest 3</InterestName> </InterestNames> <InterestAction>AddOrUpdateSubscribers</InterestAction> </InterestDetails> <StatusEmailRecipients> <Email>johndoe@example.com</Email> </StatusEmailRecipients> <ColumnDelimiter>,</ColumnDelimiter> <HasFieldsEnclosedInQuotes>1</HasFieldsEnclosedInQuotes> <RemovePersonalInfoIfBlank>0</RemovePersonalInfoIfBlank> </UploadDetails> <FieldDefinitions> <FieldDefinition> <Name>Email</Name> <DataType>string</DataType> <ColumnIndex>1</ColumnIndex> <FieldType>Email</FieldType> </FieldDefinition> <FieldDefinition> <Name>ID</Name> <DataType>integer</DataType> <ColumnIndex>2</ColumnIndex> <FieldType>ID</FieldType> </FieldDefinition> <FieldDefinition> <Name>FirstName</Name> <DataType>String</DataType> <ColumnIndex>3</ColumnIndex> </FieldDefinition> </FieldDefinitions> <Data> <![CDATA[ joe@example.com, 1374, Joe sally@example.com, 5463, Sally tom@example.com, 294, Tom alice@example.com, 99375, Alice ]]> </Data> </BulkUpload> </Actions> </ActionRequest>
Request with Demographic
<ActionRequest xmlns="http://partner.informz.net/aapi/2009/08/"> <Password></Password> <Brand id="9999">Test Brand</Brand> <User></User> <Actions> <BulkUpload> <UploadDetails> <InterestDetails> <!-- 0 to n interest names --> <InterestNames> <InterestName>Test Interest</InterestName> </InterestNames> <!-- choices are AddOrUpdateSubscribers, ReplaceAllSubscribers or RemoveSubscribers--> <InterestAction>AddOrUpdateSubscribers</InterestAction> </InterestDetails> <StatusEmailRecipients> <Email>yournamehere@informz.com</Email> </StatusEmailRecipients> <ColumnDelimiter>,</ColumnDelimiter> <HasFieldsEnclosedInQuotes>1</HasFieldsEnclosedInQuotes> <!-- special column indexes that used to be here replaced with FieldDefinition FieldType--> </UploadDetails> <FieldDefinitions> <FieldDefinition> <Name>Email</Name> <DataType>string</DataType> <ColumnIndex>1</ColumnIndex> <!-- choices are PersonalInfo (default), Email, ID, Source, NewsFormat (maybe Interest and Demographics later?) --> <FieldType>Email</FieldType> </FieldDefinition> <FieldDefinition> <Name>FirstName</Name> <DefaultValue>Valued Customer</DefaultValue> <ColumnIndex>2</ColumnIndex> <FieldType>PersonalInfo</FieldType> </FieldDefinition> <FieldDefinition> <Name>API_States</Name> <DefaultValue>NY</DefaultValue> <ColumnIndex>3</ColumnIndex> <FieldType>Demographic</FieldType> <DemographicType>State</DemographicType> </FieldDefinition> </FieldDefinitions> <Data><![CDATA heck@informz.com,Tim,NY vincent@informz.com,Jason,NY shaw@informz.com,"Paul",NY ]]></Data> </BulkUpload> </Actions> </ActionRequest>
Details
Node | Type | Req'd | Unique | Description |
---|---|---|---|---|
<UploadDetails> |
String | True | N/A | Details of the file format used in the BulkUpload. |
<UploadDetails> <InterestDetails> <InterestNames> <InterestName> |
String | True | The interests that all of these subscribers will be assigned to or removed from, depending upon the UploadAction used. You can use multiple InterestNames. | |
<UploadDetails> <InterestDetails> <InterestAction> |
String | True | N/A | Choices: AddOrUpdateSubscribers, ReplaceAllSubscribers, RemoveSubscribers. |
<UploadDetails> <StatusEmailRecipients> |
String | True | True | The email addresses to send the status message regarding the bulk upload once it is complete. Use <Email/> in the tag if you do not wish to include a value. |
<UploadDetails> <ColumnDelimiter> |
String | True | N/A | The column delimiter character used in the file. |
<UploadDetails> <HasFieldsEnclosedInQuotes> |
Bit | True | N/A | Are values enclosed in quotation marks? This can be applied to any or all incoming columns. Even if this element is set to True, quotation marks are not required in the data. |
<UploadDetails> <RemovePersonalInfoIfBlank> |
Bit | False | N/A | Should existing personalization values in Informz be blanked out for personalization values included in this upload? Assumes False or NO will NOT. |
<UploadDetails> <ColumnIndex> |
Integer | False | True |
The column where the unique record identifier from the partner application resides. |
<FieldDefinitions> |
N/A | True | N/A | Details of each field in the incoming file. Not all columns in the incoming file have to be used by Informz. Columns are ignored if they are not identified in the FieldDefinitions. |
<FieldDefinition> <Name> |
String | True | True | The corresponding personalization field in Informz. If the field does not exist, it will be created. The column label, Email, is reserved to indicate the column that contains the email address. |
<FieldDefinition> <DataType> |
String | True | False | Choices: String, Integer, Float, Date. |
<FieldDefinition> <DefaultValue> |
String | True | False | A default value to use if the column is blank. |
<FieldDefinition> <ColumnIndex> |
Integer | True | False | Which column contains the defined value. First column is column 1. |
<FieldDefinition> <FieldType> |
String | True | N/A | If left blank, the default value is PersonalInfo; valid values are Email, ID, Source, NewsFormat, and Demographic. |
<FieldDefinition> |
String | True | N/A | Available demographic types. Valid values are Standard (the default), State, and Country. |
<FieldDefinition> <IsMultiple> |
String | True | N/A | For default is false. Valid values are true and false. |
Notes
- Email address must be the first entry in the Data Record; ID is the second entry.
- When using ReplaceAll, if no replacement subscribers are included, all subscribers are removed from the interest.
- It is presumed that there will not be a header row in the file.
- Data in the <Data> tag must be "XML-safe." This can be done by either: using CDATA sections as shown in the example above or by HTML-encoding the text.
- Leading and trailing blanks will be trimmed from the field.
- Field definitions are ignored when using the RemoveSubscribers Interest Action.
- The only fields that get updated are those defined in FieldDefinitions.
- If the ColumnDelimiter tag isn't included, the delimiter will default to a Tab.
- Incoming email addresses are converted to all lowercase.
- The BulkUpload request supports characters in the ANSI character set.
- Do not use the same interest in both the <InterestDetails> and <Data> nodes. Doing so will produce duplicate interests in the Subscriber Details pop-up.
- Demographic field:
- When a new demographic is created, the proper target group is created also.
- The default demographic type is Standard.
- If you choose the State or Country type along with custom demographics, the set of available states or countries will be created.
- Field name is responding to Demographic category name.
- Setting the type is important only if you want to create new demographic category. If you want to extend existing one, do not use State or Country types.
- To explicitly include a Tab column delimiter, use the format below:
<ColumnDelimiter><![CDATA[ ]]></ColumnDelimiter>
Response
The response to a BulkUpload indicates the success or failure of the action:
<?xml version="1.0" encoding="utf-8"?> <ActionResponse xmlns="http://partner.informz.net/aapi/2009/08/"> <Brand id="9999">Test Brand</Brand> <User>testuser</User> <Responses> <BulkUpload> <UploadID>1426</UploadID> <ActionStatus> <Status>success</Status> <Message xsi:type="xsd:string">Data submitted.</Message> </ActionStatus> </BulkUpload> </Responses> </ActionResponse>
BulkUpload with Interests
To learn about this, see ActionRequest - BulkUpload with Interests.