Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Added specific usage for SMS Only in "Update group assignment" section

This page provides you information about how to manage recipients (subscribe, unsubscribe, update personal data).

On this page:

Table of Contents


Tip
titleNew to MailUp?

Confused with MailUp terminology? Please take a moment to review the Definitions and Recipients Management sections.


Info

A few definitions and important notes:

  • Email Recipient: The person whose email address - and optionally other data - is added to MailUp. 
  • Email Recipient Status: A recipient's status may be subscribed, not subscribed, unsubscribed, or pending (i.e. pending subscription confirmation).  A MailUp account can contain multiple Lists (e.g. "Monthly Newsletter", "Daily Specials", etc.). Status is List-specific.
  • Email Subscriber: An email recipient whose status is "Subscribed"
  • Subscription management is List-specific: Since Status is List-specific, the action to subscribe/unsubscribe is also list-specific. To subscribe/unsubscribe to/from multiple Lists you have to perform one subscribe/unsubscribe action for each target List.
  • COI (Confirmed Optin, also known as double opt-in): A confirmed opt-in subscription process - a best practice in email marketing - is enforced only when explicitly requested via the ConfirmEmail parameter. When COI is enabled, a subscription request message is sent automatically. The content of that message can be found - and fully customized - in the list settings of your MailUp admin console.
  • Remove VS unsubscribe: unsubscription is usually the preferred choice. It means you keep track that the recipient did an opt-out request. Removal means you want to fully delete a subscriber


Manage a single email recipient / subscriber

Add a single recipient / subscriber - synchronous import

A single recipient can be added to a console account by calling the following methods:

  • POST /Console/List/{id_List}/Recipient
  • POST /Console/Group/{id_Group}/Recipient

You can choose to perform a double optin procedure for the given recipient by adding the querystring parameter "ConfirmEmail=true": in this case the recipient will be added to the given list/group in "Pending" status, and a confirmation email will be sent to that address, waiting for his/her confirmation. You can also update the information and status of an existing recipient by specifying his/her email address or mobile number as unique identifier of the existing recipient. 

Expand
titleClick here to see how already existing recipients are managed

Based on the existing status, if available, and the ConfirmEmail parameter, the following scenarios hold true:

Use caseConfirmEmailActionDescription
NEW - Brand new recipient for specified list*falseadded and subscribednot existing in any list of that account
NEW - Brand new recipient for specified list*trueadded as "pending", request confirmation email is sentrecipient becomes "subscribed" after clicking on confirmation link received by email
OPTIN - Recipient is already subscribedonthat listfalseno change on subscription status (subscribed)
OPTIN - Recipient is already subscribedonthat listtrueno change on subscription status (subscribed)
PENDING - Recipient is already present as pending on specified listfalseno change on subscription status (pending)
PENDING - Recipient is already present as pending on specified listtrueremains pending, confirmation request email is sentrecipient becomes "subscribed" after clicking on confirmation link received by email
OPTOUT- Recipient is already present as unsubscribed on specified listfalseno change on subscription status (unsubscribed)
OPTOUT- Recipient is already present as unsubscribed on specified listtruemoved to pending status, confirmation request email is sentrecipient becomes "subscribed" after clicking on confirmation link received by email

*Usually it does not matter if recipient is already subscribed/unsubscribed on another list, but be aware that a "key mismatch" may occur if recipient is already registered with a different phone number.In this casethe request is denied and no action applies


Description

Retrieve recipient dynamic field definitions.

HTTP Method

POST

URL

You can add a new recipient to a Console account, adding it to a specific List or a specific Group, by calling the following methods:

Code Block
POST https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/{id_List}/Recipient

If you add a recipient to a group, automatically it will be added to the list related to that group.

Code Block
POST https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Group/{id_Group}/Recipient

To enable Confirmed Opt-In (COI) the querystring parameter ConfirmEmail must be set to true

Code Block
POST https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/{id_List}/Recipient?ConfirmEmail=true
POST https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Group/{id_Group}/Recipient?ConfirmEmail=true


JSON request (example)


Expand

Email is mandatory, mobile number is optional. Personal data fields are updated in any case, regardless the previous subscription status (if any).

Code Block
{
	"Fields":[{
		"Description":"name",
		"Id":1,
		"Value":"test"
	}],
	"Name":"String content",
	"Email":"test@example.com",
	"MobileNumber":"",
	"MobilePrefix":""
}



JSON response (example)

Recipient ID is returned (e.g. 77)


Paging and filtering (example)

none


Update personal data fields of a subscriber

This section refers to changes to a specific subscriber's personal data field (the subscriber must already exist)

The update operation requires:

  • Recipient ID, which can be retrieved with the operation listed above (Check if a subscriber exists)
  • The IDs of the fields to be updated

Description

Retrieve recipient dynamic field definitions.

HTTP Method

PUT

URL


Code Block
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Recipient/Detail


JSON request (example)


Expand

Modifying the "Region" field (whose Id is 8) for the recipient with ID = 23

Code Block
{
	"Email":"test25@example.com",
	"Fields":[{
		"Description":"Region",
		"Id":8,
		"Value":"England"
	}],
	"Name":"Test",
	"idRecipient":23
}



JSON response (example)


Expand


Code Block
{"IsPaginated":false,"Items":[{"Email":"test25@example.com","Fields":[{"Description":"FirstName","Id":1,"Value":""},{"Description":"LastName","Id":2,"Value":""},{"Description":"Company","Id":3,"Value":""},{"Description":"City","Id":4,"Value":""},{"Description":"Province","Id":5,"Value":""},{"Description":"ZIP","Id":6,"Value":""},{"Description":"State","Id":7,"Value":""},{"Description":"Region","Id":8,"Value":"Italy"},{"Description":"Address","Id":9,"Value":""},{"Description":"Gender ","Id":10,"Value":""},{"Description":"phone","Id":11,"Value":""},{"Description":"CustomerID","Id":12,"Value":""},{"Description":"LatestOrderID","Id":13,"Value":""},{"Description":"LatestOrderDate","Id":14,"Value":""},{"Description":"LatestOrderAmount","Id":15,"Value":""},{"Description":"LatestOrderProductIDs","Id":16,"Value":""},{"Description":"LatestOrderCategoryIDs","Id":17,"Value":""},{"Description":"LatestShippedOrderDate","Id":18,"Value":""},{"Description":"LatestShippedOrderID","Id":19,"Value":""},{"Description":"LatestAbandonedCartDate","Id":20,"Value":""},{"Description":"LatestAbandonedCartTotal","Id":21,"Value":""},{"Description":"LatestAbandonedCartID","Id":22,"Value":""},{"Description":"TotalOrdered","Id":23,"Value":""},{"Description":"TotalOrderedLast12m","Id":24,"Value":""},{"Description":"TotalOrderedLast30d","Id":25,"Value":""},{"Description":"AllOrderedProductIDs","Id":26,"Value":""}],"MobileNumber":null,"MobilePrefix":null,"Name":null,"idRecipient":23}],"PageNumber":0,"PageSize":20,"Skipped":0,"TotalElementsCount":1}



Paging and filtering (example)

none


Update subscription status of a recipient

You can change the subscription status of an existing recipient in a specified List. To update multiple recipients at the same time, see Manage multiple recipients below.

Update operation requires

  • Recipient ID (refer to section "Check if a subscriber exists")
  • List ID
Note

POST operation described in this section has been designed only to extend subscription to another list (e.g. recipient with ID=21 is already subscribed to list 1 and I want to add it also to list 2 -> POST /Console/List/2/Subscribe/21).
The function here described cannot be used to force subscription of unsubscribed recipients: the only way to subscribe again an unsubscribed recipient is to import it with doubleoptin (i.e. imported as pending with confirmation request email e.g. POST /Console/List/2/Recipient?ConfirmEmail=true)


Description

Add/remove the recipient with the related id in the List specified.

HTTP Method

POST/DELETE

URL

Subscribe

Code Block
titleEmail
POST https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/{id_List}/Subscribe/{id_Recipient}


Code Block
titleSMS
POST https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{id_List}/Subscribe/{id_Recipient}


Unsubscribe

Code Block
titleEmail
DELETE https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/{id_List}/Unsubscribe/{id_Recipient}


Code Block
titleSMS
DELETE https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{id_List}/Unsubscribe/{id_Recipient}


JSON request (example)

none

JSON response (example)

none

Paging and filtering (example)

none


Update group assignment

A group in MailUp is a subset of a list. Subscribe/unsubscribe is at the list level, not at the group level. Groups are typically used for segmentation purposes within a list.

You can use the API to assign or remove an existing recipient to/from a specified group. Removing a recipient from a group does not affect its list subscription status.

Update operation requires

  • Recipient ID (see section "Check if a subscriber exists")
  • Group ID

Description

Add/remove the recipient with the related id to the specified group

HTTP Method

POST/DELETE

URL

Add

Code Block
titleEMAIL - Also subscribes to the MailUp list the group belongs to (confirmSubscription=true by default)
POST https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Group/{id_Group}/Subscribe/{id_Recipient}


Code Block
titleSMS - Also subscribes to the MailUp list the group belongs to (confirmSubscription=true by default)
POST https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/SMS/Group/{id_Group}/Subscribe/{id_Recipient}


Code Block
titleEMAIL - Assigns to group without changing subscription status
POST https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Group/{id_Group}/Subscribe/{id_Recipient}?confirmSubscription=false


Code Block
titleSMS - Assigns to group without changing subscription status
POST https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/SMS/Group/{id_Group}/Subscribe/{id_Recipient}?confirmSubscription=false


Remove from a group

Code Block
DELETE https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Group/{id_Group}/Unsubscribe/{id_Recipient}


JSON request (example)

none

JSON response (example)

none

Paging and filtering (example)

none

Check if a subscriber exists

This method allows you to:

  • verify whether a certain recipient is already a subscriber in a certain list within a specified MailUp account
  • retrieve the recipientID and personal data fields for that recipient, if it is found
Note
titleKnown restriction

At this time unfortunately the REST API does not include a method to search a recipient by email address regardless the subscription status, within a specific list. To accomplish that at the moment you will need to do one of the following:

  • run the same search three times for subscribed, unsubscribed and finally pending recipients.
  • access to EmailOptins resource filtering by Status (requires the Recipient ID instead of the email address)


Description

Check subscriber and retreive data

HTTP Method

GET

URL

https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/{id_List}/Recipients/Subscribed?filterby="Email=='{Email}'"

see example in the "paging and filtering" row

JSON request (example)

none


JSON response (example)


Expand

when the specified recipient belongs to listsuscribersthe response contains the personal data fields of the recipient

Code Block
languagehtml/xml
{"IsPaginated":false,"Items":[{"Email":"peter@example.com","Fields":[{"Description":"FirstName","Id":1,"Value":""},{"Description":"LastName","Id":2,"Value":""},{"Description":"Company","Id":3,"Value":""},{"Description":"City","Id":4,"Value":""},{"Description":"Province","Id":5,"Value":""},{"Description":"ZIP","Id":6,"Value":""},{"Description":"State","Id":7,"Value":""},{"Description":"Region","Id":8,"Value":""},{"Description":"Address","Id":9,"Value":""},{"Description":"Gender ","Id":10,"Value":""},{"Description":"phone","Id":11,"Value":""},{"Description":"CustomerID","Id":12,"Value":""},{"Description":"LatestOrderID","Id":13,"Value":""},{"Description":"LatestOrderDate","Id":14,"Value":""},{"Description":"LatestOrderAmount","Id":15,"Value":""},{"Description":"LatestOrderProductIDs","Id":16,"Value":""},{"Description":"LatestOrderCategoryIDs","Id":17,"Value":""},{"Description":"LatestShippedOrderDate","Id":18,"Value":""},{"Description":"LatestShippedOrderID","Id":19,"Value":""},{"Description":"LatestAbandonedCartDate","Id":20,"Value":""},{"Description":"LatestAbandonedCartTotal","Id":21,"Value":""},{"Description":"LatestAbandonedCartID","Id":22,"Value":""},{"Description":"TotalOrdered","Id":23,"Value":""},{"Description":"TotalOrderedLast12m","Id":24,"Value":""},{"Description":"TotalOrderedLast30d","Id":25,"Value":""},{"Description":"AllOrderedProductIDs","Id":26,"Value":""}],"MobileNumber":null,"MobilePrefix":null,"Name":null,"idRecipient":13}],"PageNumber":0,"PageSize":20,"Skipped":0,"TotalElementsCount":1}

when the specified recipient does not belong to list subscribers (i.e. it may be not existing but also unsubscribed or subscribed only to other MailUp lists for that console account) an empty list is returned

Code Block
{"IsPaginated":false,"Items":[],"PageNumber":0,"PageSize":20,"Skipped":0,"TotalElementsCount":0}



Paging and filtering (example)

https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/3/Recipients/Subscribed?filterby="Email==%27peter@example.com%27"




Manage multiple recipients 

If you need to subscribe or unsubscribe multiple recipients it is strongly recommended to use an asynchronous method instead of calling many times the single import method. The Confimed Opt-in subscription method is availble in this mode by performing a few different API calls, as described below (see Send confirmation email).

Subscribe/unsubscribe recipients - asynchronous import 

Asynchronous import is used to perform a bulk import of several recipients into the specified list. Since the process is not synchronous, it is fast and it immediately returns an import ID (without waiting for the end of the import process), but it's not real time and there cannot be two or more imports at the same time with a single MailUp account. A HTTP 500 error with description="Resource internal error. Another import is running" is returned when you try to do more import at the same time. Please check the import status in order to know whether the import task has been completed.  

Note

In case of bulk import, the upper limit for parameter size is configured to support an upload size that is about 7MB for each call. This limit approximately corresponds to 5,000 recipients with 27 personal data fields (upload time = 300s) or 50,000 recipients with only email field (upload time = 370s). In any case, we recommend to set a configurable upload size limit in your application and make a test with this size. When upload size exceeds this limit you can split the list of recipients in more blocks and perform more requests. When more import requests are pending, MailUp processes them in a sequential order.


The import process is able to recognize existing recipients (using the email address or the mobile number as unique identifiers), and update them according to the given input details. It is possible to add somequerystringparameters to specify some advanced behavior for the import process:

  • ConfirmEmail=true: if specified, sets the new recipients status to "Pending", and a confirmation email is generated (but not yet sent). Please check below in the section "Send Confirmation Email" the procedure to actually send the emails generated so far.
  • importType=asOptout: if specified, the given recipients' status is set to "Optout", except for the ones already in “Pending” Status. A complete explanation of the available scenarios is provided below.
  • clearMissingOrEmptyFields: when set to "true", the import process clears on MailUp field that is not specified or set as empty in the request body.

  • removeFromPrevGroups: when set to "true", first the import process removes the given recipients from any group they have been part of, then it adds them only to the group specified along with this request. This querystring parameter applies only to "Import recipients into a group" cases.

  • ignoreMobile: (RECOMMENDED if you are not going to send SMS) when set to "true", the import process ignores the MobileNumber and MobilePrefix fields. As multi-channel import is much slower than single-channel import (up to 60 times), you should avoid importing on both channels when it is not mandatory for your business goals.

  • fileName: accepts a recipients' list in a file format instead of passing it through the request body. This option is recommended when uploading a large amount of data with a single call (e.g. more than 10K recipients). Please refer to the second of the links below for more details


Expand
titleClick here to see how already existing recipients are managed
  • Brand new recipents are added and subscribed to the list
  • Recipents that exist on other lists are subscribed to the list
  • Already subscribed recipents remain subscribed
  • Previously unsubscribed or pending recipients are updated but their subscription status does not change
  • If the recipient already exists it is updated if specified personal data are different from the specified ones. Empty fields are managed as "do not change"
  • Please refer to management of single recipient if you want to access to more advanced features like forcing subscription/unsubsubscriptionor if you want to clear a personal data field



New RecipientsPreviously SubscribedPreviously PendingPreviously unsubscribed
POST /Console/List/{id_List}/Recipients
Subscribedno changeno changeno change
POST /Console/List/{id_List}/Recipients?ConfirmEmail=true
Pending*Pending*no changeno change
POST /Console/List/{id_List}/Recipients?importType=asOptout
UnsubscribedUnsubscribedno changeno change

*Confirmation request message will be sent immediately



Expand
titleClick here to see how to pass a list of recipients using a file

Prerequisite: you must have a valid MailUp FTP account. Please contact your sales representative or MailUp support to request one

Here is how to import a list of recipients using the fileName parameter.

  1. Create a CSV file (e.g. myfile.csv)
    1. please check out the CSV File Format page for more details
  2. Transfer your file using FTP to the target folder (e.g. /import/1 if you want your file to be imported into MailUp list 1)
  3. Call MailUp API to start uploading

    Code Block
    POST /Console/List/{id_list}/Recipients?fileName="myFile.csv"

    please note that the request body is ignored when fileName parameter is used

  4. Check the request result to understand if it has been accepted
    1. HTTP 200 is returned if the request has a valid format, then you can monitor the import status using the ReadImportStatus method
    2. Error HTTP 400 (Bad Request) is returned if one of the following occurs
      1. the specified file is not found
      2. the specified file has not the expected format
      3. the header row is missing or invalid




Description

Create and execute a task that imports specified recipients. Import task ID is returned

HTTP Method

POST

URL

Import recipients into a list

Code Block
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/{id_List}/Recipients


Import recipients into a group (a group always belongs to a single list)

Code Block
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Group/{ID_GROUP}/Recipients


JSON request (example)


Expand

The example below imports two recipients. The first is subscribed to both email and SMS (Mobile) channels,while the second is subscribed only to email channel. For each recipient to be imported you may specify a different set of "Fields" values in a random order. Please note that field "description" field is optional. In this example the default values for English version are used, therefore names in your console account can be different than what you see below. "Name" field is mandatory but it is not accessible with MailUp console account (you can leave it empty)

Code Block
languagehtml/xml
[{"Email":"john@doe.uk",
"Fields":[{"Description":"FirstName","Id":1,"Value":"John"},
{"Description":"Province","Id":5,"Value":"East Midlands"},
{"Description":"LastName","Id":2,"Value":"Doe"},
{"Description":"TotalOrdered","Id":23,"Value":"2000"},
{"Description":"Company","Id":3,"Value":"Main Ltd"}],
"MobileNumber":"9874561153","MobilePrefix":"0044","Name":""},
{"Email":"mary@poppins.uk",
"Fields":[{"Description":"FirstName","Id":1,"Value":"Mary"},
{"Id":3,"Value":"Baby sitter"},
{"Id":4,"Value":"London"}],
"Name":""}]



JSON response (example)

3 (import ID, a progressive number)


Paging and filtering (example)

none



Send Confirmation Email

The confirmation emails (generated in the bulk import process as the result of "ConfirmEmail=true"querystring parameter) can be sentwith the following process;

  1.  Retrieve the SendingID of that confirmation email, with the following call, where {id_import} is the result of the current import call.  The result of this GET call is a structure with the SendingID (idImport) and the number of generated emails (EnqueuedEmails).
Code Block
GET https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Import/{id_import}/Sending
  1. Send the email immediately or planning a schedule by calling one of these methods where {id_sending} is the SendingID retrieved at previousstep, with no body. Moreover a body like  {Date:'yyyy-MM-dd HH:mm'} is required: for the "Deferred" case. NOTE: the specified date must be in UTC and at least 5 minutes in the future, with the format described in the section 'Type and cast definition' of "Paging and filtering" page
Code Block
POST https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Email/Sendings/{id_sending}/Immediate
POST https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Email/Sendings/{id_sending}/Deferred




Read import information

As stated above, bulk import tasks are asynchronous. Since you can run only one import task a time, it is important to check if there is a running process before starting a new one.

This section contains a method to query the status of a process by specifying its ID, a method to get a list of import tasks and a method to get all the details of a completed import.

Read Import Status

Description

Read status of an import task by specifying its ID. List ID is not required.

HTTP Method

GET

URL


Code Block
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Import/{IMPORT_ID}


JSON request (example)

none


JSON response (example)


Code Block
languagehtml/xml
{"Completed":true,"CreatedRecipients":1,"ImportedRecipients":0,"NotValidRecipients":0,"UpdatedRecipients":0,"ValidRecipients":1,"idImport":3}


Paging and filtering (example)

none


Get import status codes

Description

Retrieve the status codes of import tasks

HTTP Method

GET

URL


Code Block
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Imports/StatusCodes


JSON request (example)

none

JSON response (example)


Expand


Code Block
languagehtml/xml
[
  {
    "ImportStatusCode": 1,
    "ImportStatusName": "ToBeExecuted"
  },
  {
    "ImportStatusCode": 2,
    "ImportStatusName": "InProgress"
  },
  {
    "ImportStatusCode": 3,
    "ImportStatusName": "Completed"
  },
  {
    "ImportStatusCode": 4,
    "ImportStatusName": "Failed"
  }
]



Paging and filtering (example)

None

Get list of import tasks

Description

Retrieve the list of all the import tasks

HTTP Method

GET

URL


Code Block
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Imports


JSON request (example)

none

JSON response (example)


Expand


Code Block
languagehtml/xml
{
  "IsPaginated": true,
  "Items": [
    {
      "Filename": "Sub_cc7b4b18-afb8-495e-b023-33e4a6510771.csv",
      "IdImport": 179,
      "IdList": 14,
      "Rows": 2,
      "StartDate": "2017-03-02 15:48:29Z",
      "StatusCode": 3
    },
    ...
  ],
  "PageNumber": 0,
  "PageSize": 20,
  "Skipped": 0,
  "TotalElementsCount": 100
}



Paging and filtering (example)

Get import report

Description

Retrieve the import details by specifying the import ID. This method is useful when the task is completed and you need a report of how many recipients have been imported

HTTP Method

GET

URL


Code Block
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Imports/{id_Import}


JSON request (example)

none

JSON response (example)


Expand


Code Block
languagehtml/xml
{
  	"EndDate": "2017-05-10 09:17:56Z",
  	"FieldSeparator": "|",
  	"Filename": "Sub_bcada311-d2dd-4914-bb9c-69cc7569807f.csv",
  	"IdGroups": [
    	89
  	],
  	"IdImport": 146,
  	"IdList": 28,
  	"IgnoreDoubleQuotes": false,
  	"IgnoreFirstRow": false,
  	"ImportAsUnsubscribed": false,
  	"IncludePendingRecipients": false,
  	"OverwriteEmptyFields": false,
  	"ReplaceExistingGroup": false,
  	"Rows": {
    	"Total": 3,
    	"Invalid": {
      		"InvalidEmail": 0,
      		"InvalidNumber": 3,
      		"WithoutEmail": 0,
      		"WithoutNumber": 3,
      		"WithoutPrefix": 3,
      		"Total": 0
    	},
	    "Valid": {
			"EmailNew": 2,
      		"EmailUpdate": 0,
      		"NumberNew": 0,
      		"NumberUpdate": 0,
      		"RepeatedEmail": 1,
      		"RepeatedNumber": 0,
      		"Total": 3
    	}
  	},
  	"SendConfirmationEmail": false,
  	"StartDate": "2017-05-10 09:17:53Z",
  	"StatusCode": 3,
  	"StopDate": null,
  	"TextDelimiter": ""
}



Paging and filtering (example)

None




Read personal data fields configuration

Any update of recipients' personal data fields requires the IDs of the fields to be updated. Resource /Console/Recipient/DynamicFields allows you to retrieve personal data fields settings for a specific MailUp account (number of fields, names and IDs).

Description

Retrieve recipient dynamic field definitions.

HTTP Method

GET

URL


Code Block
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Recipient/DynamicFields


JSON request (example)

none


JSON response (example)


Expand

This is the response when URI /Console/Recipient/DynamicFields?PageNumber=0&PageSize=30&orderby="Id+asc" is called

Code Block
languagehtml/xml
{"IsPaginated":false,"Items":[{"Description":"FirstName","Id":1},{"Description":"LastName","Id":2},{"Description":"Company","Id":3},{"Description":"City","Id":4},{"Description":"Province","Id":5},{"Description":"ZIP","Id":6},{"Description":"State","Id":7},{"Description":"Region","Id":8},{"Description":"Address","Id":9},{"Description":"Gender ","Id":10},{"Description":"phone","Id":11},{"Description":"CustomerID","Id":12},{"Description":"LatestOrderID","Id":13},{"Description":"LatestOrderDate","Id":14},{"Description":"LatestOrderAmount","Id":15},{"Description":"LatestOrderProductIDs","Id":16},{"Description":"LatestOrderCategoryIDs","Id":17},{"Description":"LatestShippedOrderDate","Id":18},{"Description":"LatestShippedOrderID","Id":19},{"Description":"LatestAbandonedCartDate","Id":20},{"Description":"LatestAbandonedCartTotal","Id":21},{"Description":"LatestAbandonedCartID","Id":22},{"Description":"TotalOrdered","Id":23},{"Description":"TotalOrderedLast12m","Id":24},{"Description":"TotalOrderedLast30d","Id":25},{"Description":"AllOrderedProductIDs","Id":26}],"PageNumber":0,"PageSize":30,"Skipped":0,"TotalElementsCount":26}



Paging and filtering (example)

Use endpoint /Console/Recipient/DynamicFields?PageNumber=0&PageSize=30&orderby="Id+asc" to get with a single response the full list ordered by Id, otherwise paging (20 items/page) is applied


 


Retrieve all subscribed/unsubscribed/pending recipients from a list

For each MailUp list and for each channel, these are the available subscription conditions:

  1. subscribed 
  2. unsubscribed
  3. pending
  4. not subscribed (has one of the statuses listed above at least in another list of that account)

"Unsubscribed" and "pending" conditions apply only to lists, not to groups. 

 

Read recipients with all subscription details

 

Description

Retreive subscribed/unsubscribed recipients including all the available details about subscriptions and unsubscription

HTTP Method

GET

URL

For EMAIL channel:

Code Block
titleAll recipients that belong to a list
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/{ID_LIST}/Recipients/EmailOptins


Code Block
titleOnly recipients that belong to at least one of the specified groups
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/{ID_LIST}/Recipients/EmailOptins?Groups=GroupId1,GroupId2

For SMS channel:

Code Block
titleAll recipients that belong to a list
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{ID_LIST}/Recipients/SmsOptins


Code Block
titleOnly recipients that belong to at least one of the specified groups
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{ID_LIST}/Recipients/SmsOptins?Groups=GroupId1,GroupId2


JSON request (example)

none

JSON response (example)


Expand
titleResponse fields


Field nameScopeDescriptionIt is important when recipient's status is
EmailEMAIL channel onlyRecipient's email addressany
MobileNumberSMS channel onlyRecipient's mobile numberany
MobilePrefixSMS channel onlyRecipient's mobile prefixany
idRecipientAllInternal MailUp IDany
StatusAll

Allowed values are:

  1. OPTIN (subscribed)
  2. OPTOUT (unsubscribed)
  3. PENDING (confirmation requested)
any
Optin_DateAllSubscription dateOPTIN
Optin_Request_DateAllUsed in case of double optin, it is the date when confirmation request email is sentPENDING
Optin_Request_IPAllIP address requesting subscriptionPENDING
Optout_DateAllUnsubscription date and timeOPTOUT
Optout_MsgIDAllThe message ID the recipient unsubscribed fromOPTOUT
Optout_SubtypeEMAIL channel onlyAn additional detail about Optout_typeOPTOUT
Optout_TypeAllThe reason of unsubscriptionOPTOUT



Expand
titleOptout types and subtypes


Optout_TypeOptout_subtypeDescription
0
User forced optout through the MailUp admin console
2
Recipient clicked on unsubscription link
4
Imported as unsubscribed
81Hard bounce 
82Hard bounce 
83Hard bounce 
16
Feedback loop (spam notification) 
32
Newsletter (unsubscribe header)
64
Newsletter (unsubscribe header)
128
Inactive recipients
256
Unsubscribed due to blocked email (when specified, subtype provides more details)
2561
  • Blocked by destination MTA
2562
  • SPAM content 
2563
  • Configuration problem on destination MTA 
512
Email automatically unsubscribed due to repeated soft bounces.
5121
  • Email temporarily unsubscribed due to repeated soft bounces.
5122
  • Email permanently unsubscribed due to repeated soft bounces.
1024
Unsubscribed due to the "right to be forgotten" (or "right to oblivion")



Expand
titleFor EMAIL channel: example...


Code Block
languagejs
{
	"IsPaginated":false,
	"Items":[
		{
			"Email":"adam@example.com",
			"Optin_Date":"2014-12-04 10:33:34.683",
			"Optin_Request_Date":"",
			"Optin_Request_IP":null,
			"Optout_Date":"2016-02-04 17:22:41.107",
			"Optout_MsgID":null,
			"Optout_Subtype":null,
			"Optout_Type":0,
			"Status":"OPTOUT",
			"idRecipient":205
		},
		{
			"Email":"eve@example.com",
			"Optin_Date":"2014-12-03 10:58:00.000",
			"Optin_Request_Date":"",
			"Optin_Request_IP":null,
			"Optout_Date":"",
			"Optout_MsgID":null,
			"Optout_Subtype":null,
			"Optout_Type":null,
			"Status":"OPTIN",
			"idRecipient":92
		},
		{
			"Email":"mark@example.com",
			"Optin_Date":"2015-02-19 10:23:01.747",
			"Optin_Request_Date":"",
			"Optin_Request_IP":null,
			"Optout_Date":"",
			"Optout_MsgID":null,
			"Optout_Subtype":null,
			"Optout_Type":null,
			"Status":"OPTIN",
			"idRecipient":18
		},
		{
			"Email":"lisa@example.com",
			"Optin_Date":"2014-11-14 16:43:33.443",
			"Optin_Request_Date":"2014-11-14 16:43:33.443",
			"Optin_Request_IP":null,
			"Optout_Date":"2014-11-23 16:43:33.493",
			"Optout_MsgID":1,
			"Optout_Subtype":null,
			"Optout_Type":null,
			"Status":"OPTIN",
			"idRecipient":1
		}],
	"PageNumber":0,
	"PageSize":20,
	"Skipped":0,
	"TotalElementsCount":4
}



Expand
titleFor SMS channel: example...


Code Block
languagejs
{
  	"IsPaginated": true,
  	"Items": [
		{
      		"MobileNumber": "3409629230",
      		"MobilePrefix": "0039",
     	 	"Optin_Date": "2017-04-19 15:20:00.000",
      		"Optin_Request_Date": "",
      		"Optin_Request_IP": null,
      		"Optout_Date": "",
      		"Optout_MsgID": null,
      		"Optout_Type": null,
      		"Status": "OPTIN",
      		"idRecipient": 1182257
    	},
    	{
      		"MobileNumber": "338345232432",
      		"MobilePrefix": "0039",
      		"Optin_Date": "2017-04-10 13:05:28.127",
      		"Optin_Request_Date": "",
      		"Optin_Request_IP": null,
      		"Optout_Date": "",
      		"Optout_MsgID": null,
      		"Optout_Type": null,
      		"Status": "OPTIN",
      		"idRecipient": 1182254
    	},
    	....
  	],
  	"PageNumber": 0,
  	"PageSize": 20,
  	"Skipped": 0,
  	"TotalElementsCount": 66
}



Paging and filtering (examples)

2 items per page, get first page (count starts from zero)

  1. https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/1/Recipients/EmailOptins?PageNumber=0&PageSize=2

  2. https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/1/Recipients/SmsOptins?PageNumber=0&PageSize=2

Retrieve the subscriber of a specified list whose Email is 'peter@example.com' filterby="Email=='peter@example.com'". Parameter names can be retreived from the response body. Please note that strict filter matching with "==" is much more performing than using "Contains" directive.

  1. https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/1/Recipients/EmailOptins?filterby="Email==%27example%27"


Retrieve all the subscribers of a specified list whose MobilePrefix is '0039' filterby="MobilePrefix=='0039'" and sort them by recipient identifier orderby="idRecipient asc". Parameter names can be retreived from the response body.

  1. https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/1/Recipients/SmsOptins?filterby="MobilePrefix==%270039%27"&orderby="idRecipient+asc"


Read subscribed recipients

Description

Retreive subscribers of specified list

HTTP Method

GET

URL

For EMAIL channel:

Code Block
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/{ID_LIST}/Recipients/Subscribed

For SMS channel:

Code Block
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{ID_LIST}/Recipients/Subscribed


JSON request (example)

none

JSON response (example)


Expand


Code Block
languagehtml/xml
{"IsPaginated":false,"Items":[{"Email":"john@example.com","Fields":[{"Description":"FirstName","Id":1,"Value":""},{"Description":"LastName","Id":2,"Value":""},{"Description":"Company","Id":3,"Value":""},{"Description":"City","Id":4,"Value":""},{"Description":"Province","Id":5,"Value":""},{"Description":"ZIP","Id":6,"Value":""},{"Description":"State","Id":7,"Value":""},{"Description":"Region","Id":8,"Value":""},{"Description":"Address","Id":9,"Value":""},{"Description":"Gender ","Id":10,"Value":""},{"Description":"phone","Id":11,"Value":""},{"Description":"CustomerID","Id":12,"Value":""},{"Description":"LatestOrderID","Id":13,"Value":""},{"Description":"LatestOrderDate","Id":14,"Value":""},{"Description":"LatestOrderAmount","Id":15,"Value":""},{"Description":"LatestOrderProductIDs","Id":16,"Value":""},{"Description":"LatestOrderCategoryIDs","Id":17,"Value":""},{"Description":"LatestShippedOrderDate","Id":18,"Value":""},{"Description":"LatestShippedOrderID","Id":19,"Value":""},{"Description":"LatestAbandonedCartDate","Id":20,"Value":""},{"Description":"LatestAbandonedCartTotal","Id":21,"Value":""},{"Description":"LatestAbandonedCartID","Id":22,"Value":""},{"Description":"TotalOrdered","Id":23,"Value":""},{"Description":"TotalOrderedLast12m","Id":24,"Value":""},{"Description":"TotalOrderedLast30d","Id":25,"Value":""},{"Description":"AllOrderedProductIDs","Id":26,"Value":""}],"MobileNumber":null,"MobilePrefix":null,"Name":null,"idRecipient":16},{"Email":"mary@example.com","Fields":[{"Description":"FirstName","Id":1,"Value":""},{"Description":"LastName","Id":2,"Value":""},{"Description":"Company","Id":3,"Value":""},{"Description":"City","Id":4,"Value":""},{"Description":"Province","Id":5,"Value":""},{"Description":"ZIP","Id":6,"Value":""},{"Description":"State","Id":7,"Value":""},{"Description":"Region","Id":8,"Value":""},{"Description":"Address","Id":9,"Value":""},{"Description":"Gender ","Id":10,"Value":""},{"Description":"phone","Id":11,"Value":""},{"Description":"CustomerID","Id":12,"Value":""},{"Description":"LatestOrderID","Id":13,"Value":""},{"Description":"LatestOrderDate","Id":14,"Value":""},{"Description":"LatestOrderAmount","Id":15,"Value":""},{"Description":"LatestOrderProductIDs","Id":16,"Value":""},{"Description":"LatestOrderCategoryIDs","Id":17,"Value":""},{"Description":"LatestShippedOrderDate","Id":18,"Value":""},{"Description":"LatestShippedOrderID","Id":19,"Value":""},{"Description":"LatestAbandonedCartDate","Id":20,"Value":""},{"Description":"LatestAbandonedCartTotal","Id":21,"Value":""},{"Description":"LatestAbandonedCartID","Id":22,"Value":""},{"Description":"TotalOrdered","Id":23,"Value":""},{"Description":"TotalOrderedLast12m","Id":24,"Value":""},{"Description":"TotalOrderedLast30d","Id":25,"Value":""},{"Description":"AllOrderedProductIDs","Id":26,"Value":""}],"MobileNumber":null,"MobilePrefix":null,"Name":null,"idRecipient":15},{"Email":"susan@example.com","Fields":[{"Description":"FirstName","Id":1,"Value":"Susan"},{"Description":"LastName","Id":2,"Value":"Smith"},{"Description":"Company","Id":3,"Value":"ACME"},{"Description":"City","Id":4,"Value":"Milan"},{"Description":"Province","Id":5,"Value":"MI"},{"Description":"ZIP","Id":6,"Value":"20100"},{"Description":"State","Id":7,"Value":"Italy"},{"Description":"Region","Id":8,"Value":""},{"Description":"Address","Id":9,"Value":""},{"Description":"Gender ","Id":10,"Value":"male"},{"Description":"phone","Id":11,"Value":"1234567"},{"Description":"CustomerID","Id":12,"Value":"1"},{"Description":"LatestOrderID","Id":13,"Value":"6"},{"Description":"LatestOrderDate","Id":14,"Value":"1397470773"},{"Description":"LatestOrderAmount","Id":15,"Value":"1000"},{"Description":"LatestOrderProductIDs","Id":16,"Value":"1"},{"Description":"LatestOrderCategoryIDs","Id":17,"Value":"1"},{"Description":"LatestShippedOrderDate","Id":18,"Value":"1397470973"},{"Description":"LatestShippedOrderID","Id":19,"Value":"6"},{"Description":"LatestAbandonedCartDate","Id":20,"Value":"1397468462"},{"Description":"LatestAbandonedCartTotal","Id":21,"Value":"200"},{"Description":"LatestAbandonedCartID","Id":22,"Value":"1"},{"Description":"TotalOrdered","Id":23,"Value":"1200"},{"Description":"TotalOrderedLast12m","Id":24,"Value":"1200"},{"Description":"TotalOrderedLast30d","Id":25,"Value":"1200"},{"Description":"AllOrderedProductIDs","Id":26,"Value":"1,2"}],"MobileNumber":"","MobilePrefix":"","Name":"Test","idRecipient":14},{"Email":"peter@example.com","Fields":[{"Description":"FirstName","Id":1,"Value":""},{"Description":"LastName","Id":2,"Value":""},{"Description":"Company","Id":3,"Value":""},{"Description":"City","Id":4,"Value":""},{"Description":"Province","Id":5,"Value":""},{"Description":"ZIP","Id":6,"Value":""},{"Description":"State","Id":7,"Value":""},{"Description":"Region","Id":8,"Value":""},{"Description":"Address","Id":9,"Value":""},{"Description":"Gender ","Id":10,"Value":""},{"Description":"phone","Id":11,"Value":""},{"Description":"CustomerID","Id":12,"Value":""},{"Description":"LatestOrderID","Id":13,"Value":""},{"Description":"LatestOrderDate","Id":14,"Value":""},{"Description":"LatestOrderAmount","Id":15,"Value":""},{"Description":"LatestOrderProductIDs","Id":16,"Value":""},{"Description":"LatestOrderCategoryIDs","Id":17,"Value":""},{"Description":"LatestShippedOrderDate","Id":18,"Value":""},{"Description":"LatestShippedOrderID","Id":19,"Value":""},{"Description":"LatestAbandonedCartDate","Id":20,"Value":""},{"Description":"LatestAbandonedCartTotal","Id":21,"Value":""},{"Description":"LatestAbandonedCartID","Id":22,"Value":""},{"Description":"TotalOrdered","Id":23,"Value":""},{"Description":"TotalOrderedLast12m","Id":24,"Value":""},{"Description":"TotalOrderedLast30d","Id":25,"Value":""},{"Description":"AllOrderedProductIDs","Id":26,"Value":""}],"MobileNumber":null,"MobilePrefix":null,"Name":null,"idRecipient":13}],"PageNumber":0,"PageSize":20,"Skipped":0,"TotalElementsCount":4}



Paging and filtering (example)

2 items per page, get first page (count starts from zero)

  1. https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/1/Recipients/Subscribed?PageNumber=0&PageSize=2

Filtering by channel:

  1. if you need to find one or more recipients using an email address, search into EMAIL channel.
    For example, to
    retrieve the subscriber of a specified list whose Email is 'peter@example.com' call this endpoint using filterby querystring parameter
    filterby="Email=='peter@example.com'".

    A complete example is shown below:
     

    https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/{id_list}/Recipients/Subscribed?filterby="Email==%27peter@example.com%27"


  2. if you need to find one or more recipients using the mobile prefix and/or the mobile number, search into SMS channel. For example, to retrieve all the subscribers of a specified list whose mobile prefix equals to '0039' call this endpoint using filterby querystring parameter
    filterby="MobilePrefix=='0039'"
    and, if you want, sort them by idRecipient
    orderby="idRecipient desc".
    A complete example is shown below:
     


    1. https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{id_list}/Recipients/Subscribed?filterby="MobilePrefix==%270039%27"&orderby="idRecipient+desc"


NB: remember that parameter names can be retrieved from the response body.

 

Read unsubscribed recipients

As for "subscribed", but in this case the endpoint is /Console/List/{ID_LIST}/Recipients/Unsubscribed. 

For EMAIL channel:

Code Block
GET https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/{ID_LIST}/Recipients/Unsubscribed

For SMS channel:

Code Block
GET https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{ID_LIST}/Recipients/Unsubscribed


Read pending recipients

As for "subscribed", but in this case the endpoint is /Console/List/{ID_LIST}/Recipients/Pending. 

For EMAIL channel:

Code Block
GET https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/{ID_LIST}/Recipients/Pending

For SMS channel:

Code Block
GET https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{ID_LIST}/Recipients/Pending



Retrieve recipients by ID, email or mobile number


Description

Global search based on ID, email or mobile number

HTTP Method

GET

URL


Code Block
// Available options
 
// 1. get by ID 
Console/Recipients/{id_Recipient}
 
// 2. get by email (max 10 email addresses)
Console/Recipients?email="email1,email2, ..., email10"
 
// 3. get by mobile number (max 10 numbers)
Console/Recipients?sms="prefixandnumber1,prefixandnumber2, ..., prefixandnumber10"
 
// 4. get recipients who matches at least one of the provided emails and mobile numbers
Console/Recipients?email="email1,email2"&sms="prefixandnumber1,prefixandnumber2"
 


JSON request (example)

none

JSON response (example)


Expand

Success: HTTP 200 - A single JSON object is returned when querying by ID otherwise you get an array.
In addition to personal data, this method also provides the subscription details by means of six arrays of MailUp lists' IDs.

Code Block
titleArray format
{
    "IsPaginated": false,
    "Items": [
        {
            "Fields": [
                {
                    "Description": "name",
                    "Id": 1,
                    "Value": "test1"
                },...
            ],
            "Name": "",
            "idRecipient": 25195,
            "Email": "email_343@integrationtests.com",
            "MobileNumber": "4357577746",
            "MobilePrefix": "0039",
          	"SubscribedOnEmailChannel": [1,2, ...],
        	"SubscribedOnSmsChannel": [1,2,3,...],
        	"UnsubscribedOnEmailChannel": [4,5,6, ...],
	        "UnsubscribedOnSmsChannel ": [4,5,6, ...],
    	    "PendingOnEmailChannel": [8,9,...],
        	"PendingOnSmsChannel": []
        }
    ],
    "PageNumber": 0,
    "PageSize": 1,
    "Skipped": 0,
    "TotalElementsCount": 1
}

Failure: HTTP 400 BadRequest is returned for options 2, 3, 4 if the querystring parameters are not provided


Paging and filtering (example)



Retrieve recipients that belong to a group

A recipient can belong to zero, one or more groups of a list, regardless its subscription statusinthat list. 

Read group members

Description

Retrieve only email subscribers that belong to specified group. Group members that are not subscribed one mail channel are not returned

HTTP Method

GET

URL


Code Block
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Group/{id_Group}/Recipients


JSON request (example)

none

JSON response (example)


Expand


Code Block
languagehtml/xml
{"IsPaginated":false,"Items":[{"Email":"peter@example.com","Fields":[{"Description":"FirstName","Id":1,"Value":""},{"Description":"LastName","Id":2,"Value":""},{"Description":"Company","Id":3,"Value":""},{"Description":"City","Id":4,"Value":""},{"Description":"Province","Id":5,"Value":""},{"Description":"ZIP","Id":6,"Value":""},{"Description":"State","Id":7,"Value":""},{"Description":"Region","Id":8,"Value":""},{"Description":"Address","Id":9,"Value":""},{"Description":"Gender ","Id":10,"Value":""},{"Description":"phone","Id":11,"Value":""},{"Description":"CustomerID","Id":12,"Value":""},{"Description":"LatestOrderID","Id":13,"Value":""},{"Description":"LatestOrderDate","Id":14,"Value":""},{"Description":"LatestOrderAmount","Id":15,"Value":""},{"Description":"LatestOrderProductIDs","Id":16,"Value":""},{"Description":"LatestOrderCategoryIDs","Id":17,"Value":""},{"Description":"LatestShippedOrderDate","Id":18,"Value":""},{"Description":"LatestShippedOrderID","Id":19,"Value":""},{"Description":"LatestAbandonedCartDate","Id":20,"Value":""},{"Description":"LatestAbandonedCartTotal","Id":21,"Value":""},{"Description":"LatestAbandonedCartID","Id":22,"Value":""},{"Description":"TotalOrdered","Id":23,"Value":""},{"Description":"TotalOrderedLast12m","Id":24,"Value":""},{"Description":"TotalOrderedLast30d","Id":25,"Value":""},{"Description":"AllOrderedProductIDs","Id":26,"Value":""}],"MobileNumber":null,"MobilePrefix":null,"Name":null,"idRecipient":13}],"PageNumber":0,"PageSize":20,"Skipped":0,"TotalElementsCount":1}



Paging and filtering (example)

2 items per page, get first page (count starts from zero)

  1. https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Group/27/Recipients?PageNumber=0&PageSize=2

Retreive the subscriber of a specified list whose Email is 'peter@example.com' filterby="Email=='peter@example.com'". Parameter names can be retreived from the response body.

  1. https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Group/27/Recipients?filterby="Email==%27example%27"


Manage recipient subscription status

Retrieve recipient subscription status by list

The same recipient can belong to different lists with a different subscription status. For example, imagine your account has three different lists: the same recipient belongs to the first list as subscribed, to the second one as unsubscribed and to the third one as pending.
The following method allows you to retrieve all the the list subscription statuses for the specified recipient.

Description

Retrieve the list subscription status by recipient

HTTP Method

GET

URL

For EMAIL channel:

Code Block
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Recipients/{id_Recipient}/EmailOptins

For SMS channel:

Code Block
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Recipients/{id_Recipient}/SmsOptins


JSON request (example)

none

JSON response (example)


Expand
titleFor EMAIL channel: click here to expand...


Code Block
languagehtml/xml
{
  "IsPaginated": false,
  "Items": [
    {
      "IdList": 1,
      "Optin_Date": "2017-02-14 15:44:00.750",
      "Optin_Request_Date": "",
      "Optin_Request_IP": null,
      "Optout_Date": "2017-04-11 10:54:57.007",
      "Optout_MsgID": null,
      "Optout_Subtype": null,
      "Optout_Type": 4,
      "Status": "OPTOUT"
    },
    {
      "IdList": 10,
      "Optin_Date": "2017-04-11 11:53:17.150",
      "Optin_Request_Date": "",
      "Optin_Request_IP": null,
      "Optout_Date": "2017-04-11 10:55:10.617",
      "Optout_MsgID": null,
      "Optout_Subtype": null,
      "Optout_Type": 4,
      "Status": "OPTIN"
    }
  ],
  "PageNumber": 0,
  "PageSize": 20,
  "Skipped": 0,
  "TotalElementsCount": 2
}



Expand
titleFor SMS channel: click here to expand...


Code Block
languagehtml/xml
{
  "IsPaginated": false,
  "Items": [
    {
      "IdList": 1,
      "Optin_Date": "2016-12-19 15:23:11.713",
      "Optin_Request_Date": "",
      "Optin_Request_IP": null,
      "Optout_Date": "",
      "Optout_MsgID": null,
      "Optout_Type": null,
      "Status": "OPTIN"
    },
    {
      "IdList": 2,
      "Optin_Date": "2017-04-20 14:42:00.000",
      "Optin_Request_Date": "",
      "Optin_Request_IP": null,
      "Optout_Date": "2017-04-20 14:42:00.000",
      "Optout_MsgID": null,
      "Optout_Type": 0,
      "Status": "OPTOUT"
    },
    {
      "IdList": 3,
      "Optin_Date": "2017-04-20 14:43:00.000",
      "Optin_Request_Date": "",
      "Optin_Request_IP": null,
      "Optout_Date": "",
      "Optout_MsgID": null,
      "Optout_Type": null,
      "Status": "PENDING"
    }
  ],
  "PageNumber": 0,
  "PageSize": 20,
  "Skipped": 0,
  "TotalElementsCount": 3
}



Paging and filtering (example)

2 items per page, get first page (count starts from zero)

  1. https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Recipients/77/EmailOptins?PageNumber=0&PageSize=2

  2. https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Recipients/77/SmsOptins?PageNumber=0&PageSize=2

Retrieve all the lists where the recipient is subscribed (OPTIN) filterBy="Status=='PENDING'" and sort them by Optin_Date descending orderBy="Optin_Date desc". Parameter names can be retreived from the response body.

  1. https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Recipients/77/EmailOptins?filterBy="Status==%27OPTIN%27"&orderBy="Optin_Date+desc"

  2. https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Recipients/77/SmsOptins?filterBy="Status==%27OPTIN%27"&orderBy="Optin_Date+desc"

Unsubscribe recipient from specified lists

This method could be very useful if you need to unsubscribe an optin recipient from multiple lists.
To perform this operation you need to specify into the body of the the array of list identifiers from which the recipient should be unsubscribed. As you can see in the box below, the response contains 2 arrays:

  1. UnsubscribedFrom: this array contains the identifiers of the lists from which the method execution unsubscribes the recipient

  2. NotUnsubscribedFrom: this array contains the identifiers of the lists from which the method execution does not unsubscribe the recipient, because:

    1. it has already unsubscribed
    2. it was in a PENDING status
    3. the recipient does not belong to this list

Description

Unsubscribe a subscribed recipient from one or more specified lists

HTTP Method

DELETE

URL

For EMAIL channel:

Code Block
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/Unsubscribe/{id_Recipient}

For SMS channel:

Code Block
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/Unsubscribe/{id_Recipient}


JSON request (example)


Code Block
languagejs
[1,10]


JSON response (example)


Expand


Code Block
languagehtml/xml
{
  "NotUnsubscribedFrom": [
    1
  ],
  "UnsubscribedFrom": [
    10
  ]
}



Paging and filtering (example)

-


Remove recipient

You can fully remove a recipient from a single list or from all lists. Personal data fields are kept (i.e. not deleted) until the recipient is present in at least one MailUp list, regardless its subscription status.

Description

Remove a recipient from a single list or from all lists

HTTP Method

DELETE

URL


Code Block
titleRemove from a list
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/{id_List}/Recipient/{id_Recipient}


Code Block
titleRemove from all lists
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Recipients/{id_Recipient}


Please note that the first endpoint uses "Recipient" (singular) while the second uses "Recipients" (plural)

JSON request (example)

none

JSON response (example)


Expand


Code Block
titleRemove from a list
{
        "Deleted": true,
        "IdList": 1,
        "Message": "Ok"
    }


Code Block
titleRemove from all lists
[
    {
        "Deleted": true,
        "IdList": 1,
        "Message": "Ok"
    },
    {
        "Deleted": true,
        "IdList": 2,
        "Message": "Ok"
    }
]

In case of failure when deleting an item, the "Deleted" field is set to false and the field "Message" contains the error description


Paging and filtering (example)

-


Enable or disable tracking

Email tracking (i.e. opens and clicks) can be enabled or disabled at recipient level.

Description

Enable or disable tracking

HTTP Method

POST

URL


Code Block
titleFor a single list
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/{{ID_LIST}}/Tracking/{{ID_RECIPIENT}}


Code Block
titleFor all the lists
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Tracking/{id_Recipient}


JSON request (example)


Code Block
titleDisable tracking. According to the specified resource (endpoint) it applies to a single list or to all the lists
{
	"Enable": false
}


JSON response (example)


Expand


Code Block
titleTracking is disabled on a list
{
        "Enabled": false,
        "IdList": 1,
        "TimeStamp": "2018-08-28 15:21:34Z"
    }


Code Block
titleTracking is disabled on all the lists
[
{
    "Enabled": false,
    "IdList": 1,
    "TimeStamp": "2018-08-28 15:21:34Z"
},
{
    "Enabled": false,
    "IdList": 2,
    "TimeStamp": "2018-08-28 15:21:34Z"
}
]


The TimeStamp field is set only when disabling tracking. If you enable it, this field is cleared

Paging and filtering (example)

-



Read tracking status

Before changing the tracking status, you may need to check the current value

Description

Read tracking status for a recipient on a specified list

HTTP Method

GET

URL


Code Block
titleFor a single list
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/List/{id_List}/Tracking/{id_Recipient}



JSON request (example)

none

JSON response (example)


Expand


Code Block
titleTracking is enabled on list 2
{
    "Enabled": true,
    "IdList": 2,
    "TimeStamp": ""
}


Code Block
titleTracking is disabled on list 3
{
    "Enabled": false,
    "IdList": 3,
    "TimeStamp": "2018-08-28 15:21:34Z"
}


The TimeStamp field is set only when disabling tracking. If you enable it, this field is cleared

Paging and filtering (example)

-