General information
Authentication
SALESmanago Mobile API is open for our Clients, meaning that all of them can integrate without requesting additional access. To start using our API you will first need to obtain authentication data:
For endpoints starting with https://xxx.salesmanago.com
:
- clientId – Your Client identifier that can be found in SALESmanago ➔ Integration Center ➔ API ➔ API v2 tab.
- apiKey – Any random string of characters.
- sha – Value generated from sha1(apiKey+vendorId+apiSecret), where the plus sign is used for concatenation. The value of apiSecret is unique for each Client and can be found next to Vendor ID, in the API v2 section.
For endpoints starting with https://api.appmanago.com
:
- clientId—Your Client identifier that can be found in SALESmanago Mobile ➔ Settings ➔ Account ➔ Vendor ID
- apiKey—Any random string of characters.
- sha—Value generated from sha1(apiKey+vendorId+apiSecret), where the plus sign is used for concatenation. The value of apiSecret is unique for each Client and can be found next to Vendor ID, in the API Secret section.
Contact transfer
Transfer Contact to SALESmanago Mobile
Sample request:
{
"clientId": "a1b2-...-c3d4",
"apiKey": "e5f6-...-g7h8",
"sha": "2aa3-...-e00c",
"pushRegistrationId": "abcd-...-ef01",
"applicationSimpleId": "example_app",
"system": "ANDROID",
"systemVersion" : "13",
"deviceModel": "Samsung",
"email": "name@example.com",
"phone": "+1555443322",
"timezone": "Europe/Madrid",
"locale" : "es_ES"
}
Sample response:
{
"success": true,
"message": [
"Contact has been created"
],
"data": {
"userId": "0a1b-...-2c3d"
}
}
This method lets you transfer a mobile User to SALESmanago Mobile without the use of our SDK. This allows you to use SALESmanago Mobile with WebView applications or synchronize Contacts from other systems, such as Data Warehouse.
Endpoint
https://api.appmanago.com/api/contact/create
Body (JSON)
Field | Limits | Description |
---|---|---|
pushRegistrationId* | 512 | Either FCM or APN token (for Android and iOS respectively) |
applicationSimpleId* | 255 | Simple application ID. You can check the value of this field in SALESmanago Mobile -> Application list (simple ID column). |
system* | enum | Mobile operating system matching the pushRegistrationId type. Either “ANDROID” or “IOS” |
systemVersion | 255 | Operating system version |
deviceModel | 255 | Brand and/or model of the phone |
email* | 254 | User’s email address |
phone | 255 | User’s phone number |
timezone | IANA Time Zone | User’s time zone |
locale | ISO 639‑1 + ISO 3166‑1 alpha‑2 |
User’s location (country and language) |
Response:
Field | Description |
---|---|
success | Boolean value informing about the result of request (successful/not successful) |
message | Array of additional information containing error messages |
userId | User’s identifier assigned by SALESmanago Mobile |
Push notifications
List Mobile Push Notifications
Sample request:
{
"clientId": "a1b2-...-c3d4",
"apiKey": "e5f6-...-g7h8",
"sha": "2aa3-...-e00c",
"applicationId": "my_example_app"
}
Sample response:
{
"success": true,
"message": [],
"notifications": [
{
"name": "Example push",
"id": "a1b2-...-c3d4",
"title": "Best deal of the year!",
"content": "Example content of this Mobile Push notification"
}
]
}
This method lets you retrieve a list of all Mobile Push notifications created within SALESmanago Mobile. It provides key details such as the notification name, ID, title, and content.
Endpoint
https://xxx.salesmanago.com/api/mobile/push/list
Body (JSON)
Field | Limits | Description |
---|---|---|
applicationId * | 255 | Simple application ID. You can check the value of this field in SALESmanago Mobile -> Application list (simple ID column). |
Response:
Field | Description |
---|---|
success | Boolean value informing about the result of request (successful/not successful) |
message | Array of additional information containing error messages |
name | Name of the Mobile Push notification in SALESmanago |
id | UUID of Mobile Push notification. The same UUID is used when sending the Mobile push via API. |
title | Title displayed on mobile devices |
content | Content displayed on mobile devices |
Send existing Mobile Push notification
Sample request:
{
"clientId": "a1b2-...-c3d4",
"apiKey": "e5f6-...-g7h8",
"sha": "2aa3-...-e00c",
"pushId": "a1b2-...-c3d4",
"applicationId": "my_example_app",
"email": "name@example.com",
"properties": {
"t_shirt_size": "XL",
"gender": "Male"
},
"sendToAllDevices": "false"
}
Sample response:
{
"success": true,
"message": []
}
This method lets you send a previously created Mobile Push notification by specifying its unique identifier. It supports targeting either specific user devices or all devices associated with a user, utilizing the notification’s UUID for identification.
Endpoint
https://xxx.salesmanago.com/api/mobile/push/send
Body (JSON)
Field | Limits | Description |
---|---|---|
pushId* | UUID | UUID of Mobile Push notification. The same UUID is returned when calling the mobile/push/list method. |
applicationId* | 255 | Simple application ID. You can check the value of this field in SALESmanago Mobile -> Application list (simple ID column). |
email* | 254 | Contact identifier—either their email address, or their identifier from SALESmanago: Contact ID or User ID. You can specify only one of those fields. |
contactId | UUID | |
userId | 255 | |
properties | 16 * 255 | Array of key-value pairs with details to be used in placeholders |
sendToAllDevices | Boolean | Users may access the app from multiple devices. Depending on this flag the Mobile Push is sent to:
|
- | Σ 4kB | Maximum total size of Mobile Push notification supported by Android/iOS |
Response:
Field | Description |
---|---|
success | Boolean value informing about the result of request (successful/not successful) |
message | Array of additional information containing error messages |
Send custom Mobile Push notification
Sample request:
{
"clientId": "a1b2-...-c3d4",
"apiKey": "e5f6-...-g7h8",
"sha": "2aa3-...-e00c",
"pushId": "a1b2-...-c3d4",
"applicationId": "my_example_app",
"email": "name@example.com",
"contactId": "1a2b-...-3c4d",
"title": {
"personalized": false,
"text": "Act now and save big 💰"
},
"content": {
"personalized": true,
"text": "Claim your ${discount:extra} discount now. ${product_rec:Your product} is still waiting for you!"
},
"deeplink": {
"personalized": true,
"text": "myapp://shop/product/${product_rec_slug}"
},
"properties": {
"discount": "20%",
"product_rec": "Turtleneck sweater",
"product_rec_slug": "sweaters/turtleneck_sweater"
},
"imageUrl": "https://example.com/media/mobile_app/notification.png",
"soundName": "reminder_chime",
"sendToAllDevices": "false"
}
Sample response:
{
"success": true,
"message": []
}
This method lets you send a custom Mobile Push notification by specifying the title, content, deeplink, image, and sound values. It supports targeting either specific user devices or all devices associated with a user.
Endpoint
https://xxx.salesmanago.com/api/mobile/push/sendCustom
Body (JSON)
Field | Limits | Description |
---|---|---|
applicationId* | 255 | Simple application ID. You can check the value of this field in SALESmanago Mobile -> Application list (simple ID column). |
email* | 254 | Contact identifier—either their email address, or their identifier from SALESmanago: Contact ID or User ID. You can specify only one of those fields. |
contactId | UUID | |
userId | 255 | |
title* | 255 | Mobile Push title (headline). Maximum of 40 characters recommended for optimal display. |
content | 2048 | Mobile Push content (body). Maximum of 160 characters recommended for optimal display. |
deeplink* | 2048 | Either an URL address pointing to a website or an URI address pointing to a specific module of the application, e.g. myapp://shop/category/promo |
personalized | Boolean | Boolean value. Set to true if the title/content/deeplink is personalized. To personalize the values using details stored in SALESmanago use: ${cst.detailname:fallback} To personalize the values using properties stored in SALESmanago Mobile use: ${propertyname:fallback} |
text | 255/2048 | Value for title/content/deeplink |
properties | 16 * 255 | Array of key-value pairs with details to be used in placeholders |
sendToAllDevices | Boolean | The app User may access the app from multiple devices. Depending on this flag the Mobile Push is sent to:
|
imageUrl | 2048 | URL of PNG or JPG image. Aspect ratio (Android): 2:1, e.g. 512x1024. |
soundName | 255 | Notification sound name (without file extension) as declared in your app’s resources. Android supports .mp3 and .wav sound formats. |
- | Σ 4kB | Maximum total size of Mobile Push notification supported by Android/iOS |
Response:
Field | Description |
---|---|
success | Boolean value informing about the result of request (successful/not successful) |
message | Array of additional information containing error messages |
Batch send existing Mobile Push notification
Sample request:
{
"clientId": "a1b2-...-c3d4",
"apiKey": "e5f6-...-g7h8",
"sha": "2aa3-...-e00c",
"pushId": "a1b2-...-c3d4",
"applicationId": "my_example_app",
"date": "1659938887999",
"contacts": [
{
"addresseeType": "EMAIL",
"value": "name1@example.com, name2@example.com, name3@example.com"
},
{
"addresseeType": "TAG",
"value": "FEMALE_CLOTHING"
}
],
"properties": {
"discount": "20%",
"product_rec": "Turtleneck sweater"
},
"sendToAllDevices": "false"
}
Sample response:
{
"success": true,
"message": []
}
This method lets you send a previously created Mobile Push notification by specifying its unique identifier to multiple Contacts at the same time. It supports targeting by email addresses, Contact and User identifiers as well as tag value from SALESmanago.
Endpoint
https://xxx.salesmanago.com/api/mobile/push/sendMass
Body (JSON)
Field | Limits | Description |
---|---|---|
pushId* | UUID | UUID of Mobile Push notification. The same UUID is returned when calling the mobile/push/list method. |
applicationId* | 255 | Simple application ID. |
date | UNIX timestamp [ms] | UNIX timestamp in milliseconds for scheduling the Mobile Push notification. To send the Push notification immediately, use currentTimeMillis() . |
contacts | Array of addresseeTypes objects | |
addresseeType* | 255 | Addressing type (EMAIL, CONTACT_ID, TAG, USER_ID) |
value* | 255 | Contact email addresses, Contact identifiers, or tag(s) |
properties | 16 * 255 | Array of key-value pairs with details to be used in placeholders |
sendToAllDevices | Boolean | The app User may access the app from multiple devices. Depending on this flag the Mobile Push is sent to:
|
- | Σ 4kB | Maximum total size of Mobile Push notification supported by Android/iOS |
Response:
Field | Description |
---|---|
success | Boolean value informing about the result of request (successful/not successful) |
message | Array of additional information containing error messages |
Batch send custom Mobile Push notification
Sample request:
{
"clientId": "a1b2-...-c3d4",
"apiKey": "e5f6-...-g7h8",
"sha": "2aa3-...-e00c",
"applicationId": "my_example_app",
"date": "1659938887999",
"title": {
"personalized": false,
"text": "Act now and save big 💰"
},
"content": {
"personalized": true,
"text": "Claim your ${discount:extra} discount now. ${product_rec:Your product} is still waiting for you!"
},
"deeplink": {
"personalized": true,
"text": "myapp://shop/product/${product_rec_slug}"
},
"properties": {
"discount": "20%",
"product_rec": "Turtleneck sweater",
"product_rec_slug": "sweaters/turtleneck_sweater"
},
"imageUrl": "https://example.com/media/mobile_app/notification.png",
"soundName": "reminder_chime",
"sendToAllDevices": "false"
}
Sample response:
{
"success": true,
"message": []
}
This method lets you send a custom Mobile Push notification by specifying the title, content, deeplink, image and sound values to multiple Contacts at the same time. It supports targeting by email addresses, Contact and User identifiers as well as tag value from SALESmanago.
Endpoint
https://xxx.salesmanago.com/api/mobile/push/sendMassCustom
Body (JSON)
Field | Limits | Description |
---|---|---|
applicationId* | 255 | Simple application ID. |
date | UNIX timestamp [ms] | UNIX timestamp in milliseconds for scheduling the Mobile Push notification. To send the Push notification immediately, use currentTimeMillis() . |
contacts | Array of addresseeTypes objects | |
addresseeType* | 255 | Addressing type (EMAIL, CONTACT_ID, TAG, USER_ID) |
value* | 255 | Contact email addresses, Contact identifiers, or tag(s) |
title* | 255 | Mobile Push title (headline). Maximum of 40 characters recommended for optimal display. |
content* | 2048 | Mobile Push content (body). Maximum of 160 characters recommended for optimal display. |
deeplink* | 2048 | URI address pointing to a specific module of the application, e.g. myapp://shop/category/promo. You can specify only one of the fields: deeplink or URL |
personalized | Boolean | Boolean value. Set to true if the title/content/deeplink is personalized. Use ${placeholder:fallback} for personalization. |
text | 255/2048 | Value for title/content/deeplink |
properties | 16 * 255 | Array of key-value pairs with details to be used in placeholders |
sendToAllDevices | Boolean | The app User may access the app from multiple devices. Depending on this flag the Mobile Push is sent to:
|
imageUrl* | 2048 | URL of PNG or JPG image. Aspect ratio (Android): 2:1, e.g. 512x1024. |
soundName | 255 | Notification sound name as declared in your app |
- | Σ 4kB | Maximum total size of Mobile Push notification supported by Android/iOS |
Response:
Field | Description |
---|---|
success | Boolean value informing about the result of request (successful/not successful) |
message | Array of additional information containing error messages |
Analytics
Get list of sent Mobile Push notifications
Sample request:
{
"clientId": "a1b2-...-c3d4",
"apiKey": "e5f6-...-g7h8",
"sha": "2aa3-...-e00c",
"email": "name@example.com",
"userId": 1234567,
"entriesNumber": 20,
"dateFrom": 1559938888000,
"dateTo": 1659938888000
}
Sample response with extended scope:
{
"success": true,
"message": [],
"data": [
{
"name": "Example push name",
"title": "Example title",
"message": "Example message",
"sentDate": 1600345364000,
"read": true,
"deeplink": "https://www.salesmanago.com",
"mid": "b4db4d3b-...-ca33289d6c8c",
"cid": "5816705",
"displayed": 1600345388000,
"actionTaken": 1600345390000,
"dismissed": null
}
]
}
This method lets you list sent Mobile Push notifications, detailing their delivery and interaction metrics. It’s useful for tracking the performance and engagement of sent notifications.
Endpoint
https://api.appmanago.com/api/v2/push/history
Important: This method utilizes a different endpoint domain and different request authorization data compared to other methods.
Body (JSON)
Field | Limits | Description |
---|---|---|
userId* | 255 | Contact identifier—either their email address or User ID from SALESmanago. If both fields are present, the User ID will be prioritized. |
email* | 254 | |
entriesNumber | 500 | Number of entries to retrieve. If the number is not within the range of 1-500, it will automatically be set to 500. The default value is 500. |
dateFrom | UNIX timestamp [ms] | Time range of the Mobile Push notifications to be retrieved. If you do not specify those fields, the entriesNumber of last messages will be retrieved. |
dateTo | UNIX timestamp [ms] | |
extended | Boolean | Optional flag to retrieve additional data such as displayed, actionTaken, and dismissed |
Response:
Field | Description |
---|---|
success | Boolean value informing about the result of request (successful/not successful) |
message | Array of additional information containing error messages |
name | Name of the Mobile Push notification |
title | Title displayed on mobile devices |
message | Content of the Mobile Push notification message |
sentDate | The date and time when the Mobile Push notification was sent in UNIX timestamp [ms] |
read | Indicates whether the notification has been read or not |
deeplink | URL or a deep link that the notification can direct to when opened |
mid | ID of Mobile Push notification |
cid | Conversation ID of Mobile Push notification |
displayed | UNIX timestamp when the notification was displayed on the user’s device |
actionTaken | UNIX timestamp when the user has interacted with or dismissed the notification. Note that in most cases, only one of the fields will have a value. |
dismissed |
Get list of conversations by Push ID
Sample request:
{
"clientId": "a1b2-...-c3d4",
"apiKey": "e5f6-...-g7h8",
"sha": "2aa3-...-e00c",
"pushId": "a1b2-...-c3d4"
}
Sample response with extended scope:
{
"success": true,
"message": [],
"data": [
{
"conversationId": 1234567,
"name": "Spring campaign test A",
"sentDate": 1600345364000
},
{
"conversationId": 1234568,
"name": "Spring campaign test B",
"sentDate": 1600345364000
}
]
}
This method lets you retrieve a list of conversations linked to a specific Mobile Push notification using its UUID, providing details such as conversation ID, name, and the date the notification was sent.
Endpoint
https://api.appmanago.com/api/push/conversation/list
Important: This method utilizes a different endpoint domain and different request authorization data compared to other methods.
Body (JSON)
Field | Limits | Description |
---|---|---|
pushId* | UUID | UUID of Mobile Push notification. The same UUID is returned when calling the mobile/push/list method. |
Response:
Field | Description |
---|---|
success | Boolean value informing about the result of request (successful/not successful) |
message | Array of additional information containing error messages |
data | Array of objects with conversation list |
conversationId | ID of conversation |
name | Conversation name |
sentDate | The date and time when the Mobile Push notification was sent in UNIX timestamp [ms] |
Get stats of sent Mobile Push notification
Sample request:
{
"clientId": "a1b2-...-c3d4",
"apiKey": "e5f6-...-g7h8",
"sha": "2aa3-...-e00c",
"conversationId": 1234567
}
Sample response with extended scope:
{
"success": true,
"message": [],
"data": [
{
"name": "Example push name",
"platform": "android",
"sentDate": 1600345364000,
"sentNumber": 234567,
"displayedNumber": 123456,
"clickedNumber": 111111,
"dismissedNumber": 12345
}
]
}
This method lets you obtain overall statistical data for a sent Mobile Push notification by conversation ID, including details like platform, number of notifications sent, displayed, clicked, and dismissed.
Endpoint
https://api.appmanago.com/api/push/conversation/stats
Important: This method utilizes a different endpoint domain and different request authorization data compared to other methods.
Body (JSON)
Field | Limits | Description |
---|---|---|
conversationId* | Int | ID of conversation for Mobile Push notification. The same ID is returned when calling the push/conversation/list method. |
Response:
Field | Description |
---|---|
success | Boolean value informing about the result of request (successful/not successful) |
message | Array of additional information containing error messages |
data | Object with conversation stats |
name | Conversation name |
platform | Platform (android/ios) to which the conversation was sent |
sentDate | The date and time when the Mobile Push notification was sent in UNIX timestamp [ms] |
sentNumber | The number of individual Mobile Push notifications sent |
displayedNumber | The number of times the Mobile Push notification was displayed on users’ devices |
clickedNumber | The count of how many times users clicked the Mobile Push notification |
dismissedNumber | The number of times users dismissed the Mobile Push notification without interacting further |
Get data about sent Mobile Push notification
Sample request:
{
"clientId": "a1b2-...-c3d4",
"apiKey": "e5f6-...-g7h8",
"sha": "2aa3-...-e00c",
"conversationId": 1234567
}
Sample response:
{
"success": true,
"message": [],
"jobId": 123456
}
Method used to get the file URL:
/api/job/status
See docs >>Sample file structure:
contactId,email,phone,name,platform,sentDate,displayedDate,clickedDate,dismissedDate
abcd-...-1234,name1@example.com,+15554443322,Example push name,android,1600345364000,1600345366000,1600345368000,null
cdef-...-5678,name2@example.com,+15554442211,Example push name,ios,1600345364000,1600345366000,1600345368000,null
This method lets you fetch per-contact data about a Mobile Push notification for a specific conversation ID, including user-specific stats such as email, phone, platform, and engagement dates.
Endpoint
https://api.appmanago.com/api/push/conversation/data
Important: This method utilizes a different endpoint domain and different request authorization data compared to other methods.
Body (JSON)
Field | Limits | Description |
---|---|---|
conversationId* | Int | ID of conversation for Mobile Push notification. The same ID is returned when calling the push/conversation/list method. |
As a result of the request you will receive a jobId
that can be used to get the file with exported data using the job/status
method.
File contents (CSV):
Field | Description |
---|---|
contactId | Mobile User identifier from SALESmanago Mobile |
The email address associated with the Contact to whom the Mobile Push notification was sent | |
phone | The phone number associated with the Contact to whom the Mobile Push notification was sent |
name | Conversation name as defined in SALESmanago Mobile |
platform | The operating system platform (Android or iOS) of the user’s device that received the Mobile Push notification |
sentDate | The UNIX timestamp [ms] indicating the date and time when the Mobile Push notification was sent |
displayedDate | The UNIX timestamp [ms] indicating the date and time when the Mobile Push notification was displayed on the user’s device |
clickedDate | The UNIX timestamp [ms] indicating the date and time when the user clicked on the Mobile Push notification |
dismissedDate | The UNIX timestamp [ms] indicating the date and time when the user dismissed the Mobile Push notification without further interaction |
Get conversation analytics for Mobile Push template
Sample request:
{
"clientId": "a1b2-...-c3d4",
"apiKey": "e5f6-...-g7h8",
"sha": "2aa3-...-e00c",
"pushId": "1234-...-abcd",
"timeFrom": 1639938888,
"timeTo": 1659938888
}
Sample response:
{
"success": true,
"message": [],
"jobId": 123456
}
Method used to get the file URL:
/api/job/status
See docs >>Sample file structure (ZIP):
conversation_stats_export_1639938888000_0.csv [120 kB]
conversation_stats_export_1649938888000_1.csv [380 kB]
conversation_stats_export_1659938888000_2.csv [220 kB]
Sample file structure (CSV):
contactId,email,phone,name,platform,sentDate,displayedDate,clickedDate,dismissedDate
abcd-...-1234,name1@example.com,+15554443322,Example push name,android,1600345364000,1600345366000,1600345368000,null
cdef-...-5678,name2@example.com,+15554442211,Example push name,ios,1600345364000,1600345366000,1600345368000,null
This method lets you fetch per-Contact data about a sent Mobile Push notification aggregated into files for each of the conversations the template was used in.
Endpoint:
https://api.appmanago.com/api/push/conversation/data/export
Important: This method utilizes a different endpoint domain and different request authorization data compared to other methods.
Body (JSON):
Field | Limits | Description |
---|---|---|
pushId* | UUID | UUID of Mobile Push notification. The same UUID is returned when calling the mobile/push/list method. |
timeFrom* | UNIX timestamp [s] | Time range for the export of statistics for conversations using the specified template. The maximum available time range is 30 days. |
timeTo* | UNIX timestamp [s] |
As a result of the request you will receive a jobId
that can be used to get the file with exported data using the job/status method
. The file will be a ZIP archive containing CSV files for each of the conversations.
File contents (CSV):
Field | Description |
---|---|
contactId | Mobile User identifier from SALESmanago Mobile |
The email address associated with the Contact to whom the Mobile Push notification was sent | |
phone | The phone number associated with the Contact to whom the Mobile Push notification was sent |
name | Conversation name as defined in SALESmanago Mobile |
platform | The operating system platform (Android or iOS) of the user’s device that received the Mobile Push notification |
sentDate | The UNIX timestamp [ms] indicating the date and time when the Mobile Push notification was sent |
displayedDate | The UNIX timestamp [ms] indicating the date and time when the Mobile Push notification was displayed on the user’s device |
clickedDate | The UNIX timestamp [ms] indicating the date and time when the user clicked on the Mobile Push notification |
dismissedDate | The UNIX timestamp [ms] indicating the date and time when the user dismissed the Mobile Push notification without further interaction |
Supporting methods
Get URL of file with exported data
Sample request:
{
"clientId": "a1b2-...-c3d4",
"apiKey": "e5f6-...-g7h8",
"sha": "2aa3-...-e00c",
"jobId": 123456
}
Sample response:
{
"success": true,
"message": [
"Export done"
],
"fileUrl": "https://salesmanago.s3.amazonaws.com/.../abcd-...-efgh.json"
}
This method lets you fetch per-contact data about a Mobile Push notification for a specific conversation ID, including user-specific stats such as email, phone, platform, and engagement dates.
Endpoint:
https://api.appmanago.com/api/job/status
Some API methods let you asynchronously export data to a JSON file. This allows the HTTP connection to be closed, while the export is being processed in the background. Depending on the export scope, it may take up to several minutes which greatly exceeds the maximum connection time, and thus would not be possible with synchronous requests. The typical export consists of:
1. Export request that returns the jobId
2. Periodic job/status request using the jobId
parameter. This method returns the file URL once the exported has been completed
3. GET request to download the JSON file
The recommended interval for requesting a JSON file with job/status
is 60 seconds.
Body (JSON):
Field | Limits | Description |
---|---|---|
jobId* | Int | Unique job (request) identifier as received from the export method. |
File contents (JSON):
Field | Description |
---|---|
success | Boolean value informing about the result of request (successful/not successful) |
message | Array of additional information containing error messages |
fileUrl | URL of the file with export data, valid for a few minutes after it has been generated. Important: This field is returned only when the export is completed. |