First steps
Events and Behaviour Tracking
User Data
- Email Builder Review
- Designing your email
- Creating a Synchronized Module
- Setting Responsivity
- Building Smart Containers
- Creating a Gmail Promotions Annotation
- Adding a Rollover Effect
- Adding a Background to an Email
- Adding Anchor Links
- Adding a Video to an Email
- Adding a Table to an Email
- Adding a Custom Font
- Adding Social Media Buttons
- Editing HTML and CSS
- Working with “Images” block
Omnichannel
Automation
Personalization
Analytics
Multilanguage Campaigns
Recommendations
API
Security and Compliance
Integration
Transferring Website Behavior Data via REST API
To transfer website data to our CDP, you need to install the web tracking script on your site. After, you’ll be able to send the user behavior data and use it to create personalized product recommendations for the site and for your emails.
You can send events through one of the methods:
- Using eS.JS;
- Using REST API.
Important!
When setting up tracking via the REST API, the recommendations functionality on the site will not be available, in this case, you need to use the option of calling eS.JS functions
In this article, we will explain how to use the second method.
Request headers
POST / HTTP/1.1 Host: https://tracker.esputnik.com/api/v2 Content-type: application/json |
Response status code is 204: No authorization is required.
ProductPage
Description
To display correct recommended products or product categories or send triggers for abandoned browses, send a request with data on:
- Product card the user is currently viewing;
- Product price and availability.
Example
{
"GeneralInfo": {
"eventName": "ProductPage",
"siteId": "8A412DC",
"datetime":1579622183208,
"externalCustomerId": "1234509876",
"user_phone": "1-541-754-3010",
"user_email": "user@mail.com",
"user_name": "Gregori Boczynski",
"user_es_contact_id": "255830499",
"cookies": {
"sc": "CDA68358-94FB-4D83-9655-3FEB3C4114A3"
}
},
"ProductPage": {
"Product": {
"productKey": "72354",
"price": "754 USD",
"isInStock": "1",
"tag_something": [
"abc",
"bca"
]
},
"Tags": {
"some_tags": [
"some_tag1",
"some_tag2"
]
}
}
}
Parameters
Name |
Example | Description |
GeneralInfo |
Required Type: object |
General information |
eventName |
“ProductPage” Type: string |
Event name |
siteId |
“8A412DC” Type: string |
|
externalCustomerId | "1234509876" Optional Type: string |
External identifier generated in your system |
user_phone |
"1-541-754-3010" Type: string |
Phone number in the international format |
user_email |
"user@mail.com" Type: string |
User email |
user_name |
"Gregori Boczynski" Type: string |
User name and surname |
user_es_contact_id |
"255830499" type: string |
User ID in the CDP |
cookies |
"CDA68358-94FB-4D83-9655-3FEB3C4114A3" Type: object, string |
|
datetime |
1579622183208 |
Timestamp (millisecond) |
ProductPage |
Required Type: object |
Event description |
productKey |
“72354” Type: string |
|
price |
“754 USD” Type: string |
The price per item can be sent with the currency value. If the price has changed on the site but hasn’t changed in the feed, the sent value will be the value from the site. |
isinStock |
“1” Type: int |
"0" – items are out of stock; "1" – items are in stock.
|
tag_[something] |
["abc","bca"] Type: array of strings |
|
Tags |
Optional Type: object |
Additional fields |
StatusCart
Description
An event is sent after the cart status (with a new GUID) is changed, for example, after clicking a Buy button on the category page. The cart status should be updated from all pages. If the cart is empty, then you need to send an empty cart event (empty array without products).
Example
{
"GeneralInfo": {
"eventName": "StatusCart",
"siteId": "8A412DC",
"datetime":1579622183208,
"externalCustomerId": "1234509876",
"user_phone": "1-541-754-3010",
"user_email": "user@mail.com",
"user_name": "Gregori Boczynski",
"user_es_contact_id": "255830499",
"cookies": {
"sc": "CDA68358-94FB-4D83-9655-3FEB3C4114A3"
}
},
"StatusCart": {
"GUID": "6F9619FF-8B86-D011-B42D-00CF4FC964FF",
"Products": [
{
"productKey": "430738",
"price": 201.95,
"discount": 180,
"quantity": 1,
"price_currency_code": "USD",
"tag_something": [
"aaa",
"bbb"
]
},
{
"productKey": "902339",
"price": 596,
"discount": 590,
"quantity": 1,
"price_currency_code": "USD",
"tag_something": [
"aaa",
"bbb"
]
}
],
"Tags": {
"some_tags": [
"1",
"a2"
],
"some_tags1": [
"4",
"gg"
]
}
}
}
Parameters
Name | Example | Description |
GeneralInfo |
Required Type: object, string |
General information |
eventName |
“StatusCart” Type: string |
Event name |
siteId |
“8A412DC” Type: string |
|
externalCustomerId | "1234509876" Optional Type: string |
External identifier generated in your system |
user_phone |
"1-541-754-3010" Type: string |
Phone number in the international format |
user_email |
"user@mail.com" Type: string |
User email |
user_name |
"Gregori Boczynski" Type: string |
User name and surname |
user_es_contact_id |
"255830499" Type: string |
User ID in the platform |
datetime | 1579622183208 | Timestamp (millisecond) |
GUID |
“6F9619FF-8B86-D011-B42D-00CF4FC964FF” Type: string |
|
StatusCart |
Required Type: object, string |
|
productKey |
“430738” Type: string |
|
price |
“201.95” Type: string |
Price per item |
discount |
“180” Type: string |
Discount per item |
quantity |
“1” Type: Int |
Quantity of items |
price_currency_code |
“USD” Type: string |
Currency |
tag_[something] |
["abc","bca"] Type: array of strings |
|
Tags |
Optional Type: object |
Additional fields |
Wishlist
Description
Sending the AddToWishlist event - at the time of adding a product to the wish list (favorites).
Necessary for calculating and displaying recommendations and sending triggers related to the wish list.
Example
{
"GeneralInfo": {
"eventName": "AddToWishlist",
"siteId": "8A412DC",
"datetime":1579622183208,
"externalCustomerId": "1234509876",
"user_phone": "1-541-754-3010",
"user_email": "user@mail.com",
"user_name": "Gregori Boczynski",
"user_es_contact_id": "255830499",
"cookies": {
"sc": "CDA68358-94FB-4D83-9655-3FEB3C4114A3"
}
},
"AddToWishlist": {
"Product": {
"productKey": "72354",
"price": "754",
"isInStock": "1",
"tag_something": [
"abc",
"bca"
]
},
"Tags": {
"some_tags": [
"some_tag1",
"some_tag2"
]
}
}
}
Parameters
Name |
Example | Description |
GeneralInfo |
Required Type: object |
General information |
eventName |
“AddToWishlist” Type: string |
Event name |
siteId |
“8A412DC” Type: string |
|
externalCustomerId | "1234509876" Optional Type: string |
External identifier generated in your system |
user_phone |
"1-541-754-3010" Type: string |
Phone number in the international format |
user_email |
"user@mail.com" Type: string |
User email |
user_name |
"Gregori Boczynski" Type: string |
User name and surname |
user_es_contact_id |
"255830499" type: string |
User ID in the CDP |
cookies |
"CDA68358-94FB-4D83-9655-3FEB3C4114A3" Type: object, string |
|
datetime |
1579622183208 |
Timestamp (millisecond) |
AddToWishlist |
Required Type: object |
Event description |
productKey |
“72354” Type: string |
|
price |
“754 USD” Type: string |
The price per item can be sent with the currency value. If the price has changed on the site but hasn’t changed in the feed, the sent value will be the value from the site. |
isinStock |
“1” Type: int |
"0" – items are out of stock; "1" – items are in stock.
|
tag_[something] |
["abc","bca"] Type: array of strings |
|
Tags |
Optional Type: object |
Additional fields |
PurchasedItems
Description
To display recommendations on the order confirmation page or to send triggers for abandoned carts, you need to send a request with the data on the purchased products.
Example
{
"GeneralInfo": {
"eventName": "PurchasedItems",
"siteId": "8A412DC",
"datetime":1579622183208,
"externalCustomerId": "1234509876",
"user_phone": "1-541-754-3010",
"user_email": "user@mail.com",
"user_name": "Gregori Boczynski",
"user_es_contact_id": "255830499",
"cookies": {
"sc": "CDA68358-94FB-4D83-9655-3FEB3C4114A3"
}
},
"PurchasedItems": {
"GUID": "6F9619FF-8B86-D011-B42D-00CF4FC964FF",
"OrderNumber": "123/2017",
"Tags": {
"some_tags": [
"1",
"a2"
],
"some_tags1": [
"4",
"gg"
]
}
}
}
Parameters
Name | Example | Description |
GeneralInfo |
Required Type: object, string |
General information |
eventName |
“StatusCart” Type: string |
Event name |
siteId |
“8A412DC” Type: string |
|
externalCustomerId | "1234509876" Optional Type: string |
External identifier generated in your system |
user_phone |
"1-541-754-3010" Type: string |
Phone number in the international format |
user_email |
"user@mail.com" Type: string |
User email |
user_name |
"Gregori Boczynski" Type: string |
User’s name and surname |
user_es_contact_id |
"255830499" Type: string |
User ID in our platform |
cookies |
"CDA68358-94FB-4D83-9655-3FEB3C4114A3" Type: object, string |
|
GUID |
“6F9619FF-8B86-D011-B42D-00CF4FC964FF” Type: string |
|
OrderNumber |
“123/2017” Type: string |
|
Tags |
Optional Type: object |
Additional fields |
PurchasedItems (One Click)
Description
The event is optionally sent after a purchase with one click or a purchase with afterpay.
Example
{
"GeneralInfo": {
"eventName": "PurchasedItems",
"siteId": "8A412DC",
"datetime":1579622183208,
"externalCustomerId": "1234509876",
"user_phone": "1-541-754-3010",
"user_email": "user@mail.com",
"user_name": "Gregori Boczynski",
"user_es_contact_id": "255830499",
"cookies": {
"sc": "CDA68358-94FB-4D83-9655-3FEB3C4114A3"
}
},
"PurchasedItems": {
"Products": [
{
"product_id": "430738",
"unit_price": "201.95",
"quantity": 1
},
{
"product_id": "211452",
"unit_price": "341.80",
"quantity": 2
}
],
"OrderNumber": "123/2017",
"Tags": {
"block_id": [
"21246_r335v507"
],
"some_tags1": [
"4",
"gg"
]
}
}
}
Parameters
Name | Example | Description |
GeneralInfo |
Required Type: object, string |
General information |
eventName |
“StatusCart” Type: string |
Event name |
siteId |
“8A412DC” Type: string |
|
externalCustomerId | "1234509876" Optional Type: string |
External identifier generated in your system |
user_phone |
"1-541-754-3010" Type: string |
Phone number in the international format |
user_email |
"user@mail.com" Type: string |
User email |
user_name |
"Gregori Boczynski" Type: string |
User name and surname |
user_es_contact_id |
"255830499" Type: string |
User ID in our CDP |
datetime | 1579622183208 |
Timestamp (millisecond) |
cookies |
"CDA68358-94FB-4D83-9655-3FEB3C4114A3" Type: object, string |
|
OrderNumber |
“123/2017” Type: string |
|
PurchasedItems | Type: array of strings | List of items |
product_id |
“430738” Type: string |
|
unit_price |
“201.95” Type: string |
Price per item |
quantity |
“1” Type: Integer |
Quantity of items |
block_id |
“21246_r335v507” Type: string |
Recommendation block ID. To get it, contact support. |
Tags |
Optional Type: object |
Additional fields |
ProductImpressions
Description
The event that transfers data on the block display. It’s sent by default through JS API. You don’t need to send it additionally.
Example
{
"GeneralInfo": {
"eventName": "ProductImpressions",
"siteId": "8A412DC",
"datetime":1579622183208,
"externalCustomerId": "1234509876",
"user_phone": "1-541-754-3010",
"user_email": "user@mail.com",
"user_name": "Gregori Boczynski",
"user_es_contact_id": "255830499",
"cookies": {
"sc": "CDA68358-94FB-4D83-9655-3FEB3C4114A3"
}
},
"ProductImpression": {
"Products": [
{
"product_id": "430968",
"container_type": "1253"
},
{
"product_id": "430738",
"container_type": "1254"
},
{
"product_id": "429983",
"container_type": "1255"
}
],
"Tags": {
"some_tags": [
"1",
"a2"
],
"some_tags1": [
"4",
"gg"
]
}
}
}
Parameters
Name | Example | Description |
GeneralInfo |
Required Type: object |
General information |
eventName |
“ProductImpressions” Type: string |
Event name |
siteId |
“8A412DC” Type: string |
|
externalCustomerId | "1234509876" Optional Type: string |
External identifier generated in your system |
user_phone |
"1-541-754-3010" Type: string |
Phone number in the international format |
user_email |
"user@mail.com" Type: string |
User email |
user_name |
"Gregori Boczynski" Type: string |
User name and surname |
user_es_contact_id |
"255830499" Type: string |
User ID in our platform |
datetime | 1579622183208 | Timestamp (millisecond) |
cookies |
"CDA68358-94FB-4D83-9655-3FEB3C4114A3" Type: object, string |
|
ProductImpressions |
Required Type: array of objects |
|
product_id |
“430738” Type: string |
ID of the product or category that is in the feed |
container_type |
“1253” Type: string |
Recommendation block number |
Tags |
Optional Type: object |
Additional fields |
CategoryPage
Description
Can be used to send data on:
- Triggers;
- Category browses without product card viewing;
- Site browses without category or product card viewing.
You need to send a request with the data on the category the user is currently browsing.
Example
{
"GeneralInfo": {
"eventName": "CategoryPage",
"siteId": "8A412DC",
"datetime":1579622183208,
"externalCustomerId": "1234509876",
"user_phone": "1-541-754-3010",
"user_email": "user@mail.com",
"user_name": "Gregori Boczynski",
"user_es_contact_id": "255830499",
"cookies": {
"sc": "CDA68358-94FB-4D83-9655-3FEB3C4114A3"
}
},
"CategoryPage": {
"Category": {
"categoryKey": "509876"
},
"Tags": {
"some_tags": [
"1",
"a2"
],
"some_tags1": [
"4",
"gg"
]
}
}
}
Parameters
Name | Example | Description |
GeneralInfo |
Required Type: object |
General information |
eventName |
“ProductPage” Type: string |
Event name |
siteId |
“8A412DC” Type: string |
|
externalCustomerId | "1234509876" Optional Type: string |
External identifier generated in your system |
user_phone |
"1-541-754-3010" Type: string |
Phone number in the international format |
user_email |
"user@mail.com" Type: string |
User email |
user_name |
"Gregori Boczynski" Type: string |
User’s name and surname |
user_es_contact_id |
"255830499" Type: string |
User ID in the CDP |
datetime | 1579622183208 | Timestamp (millisecond) |
cookies |
"CDA68358-94FB-4D83-9655-3FEB3C4114A3" Type: object, string |
|
CategoryPage |
Required Type: object |
Event description |
categoryKey |
“509876” Type: string |
ID of the product or category |
Tags |
Optional Type: object |
Additional fields |
CustomerData
Description
To send triggers for abandoned browses or abandoned carts, you need to send a request with the data on the user.
Example
{
"GeneralInfo": {
"eventName": "CustomerData",
"siteId": "8D3869C",
"datetime":1579622183208,
"externalCustomerId": "1234509876",
"user_phone": "3801111111111",
"user_email": "user@mail.com",
"user_es_contact_id": "255830499",
"user_name": "Johny",
"cookies": {
"sc": "CDA68358-94FB-4D83-9655-3FEB3CGGG1"
}
}
}
Parameters
Name | Example | Description |
GeneralInfo |
Required Type: array of objects |
General information |
eventName |
“StatusCart” Type: string |
Event name |
siteId |
“8A412DC” Type: string |
|
externalCustomerId | "1234509876" Optional Type: string |
External identifier generated in your system |
user_phone |
"1-541-754-3010" Type: string |
Phone number in the international format |
user_email |
"user@mail.com" Optional Type: string |
User email |
user_name |
"Gregori Boczynski" Type: string |
User name and surname |
user_es_contact_id |
"255830499" Optional Type: string |
User ID in the platform |
datetime | 1579622183208 | Timestamp (millisecond) |
cookies |
"CDA68358-94FB-4D83-9655-3FEB3C4114A3" Type: object, string |
|
CustomEvent
Description
CustomEvent is a custom event. You can give it a custom header depending on the action.
Example
{
"GeneralInfo": {
"eventName": "CustomEvent",
"datetime":1579622183208,
"externalCustomerId": "1234509876",
"screendim": {
"h": 1200,
"w": 2304
},
"adblockEnabled": true,
"device": "Desktop",
"browser": {
"name": "Chrome",
"chrome": true,
"version": "74.0",
"webkit": true,
"a": true
},
"siteId": "8A412DC",
"cookies": {
"sc": "CDA68358-94FB-4D83-9655-3FEB3C4114A3"
},
"s_location": "https://example.com/product_id.html",
"referrer": "https://example.com",
"user_client_id": "",
"user_city": "",
"user_card_id": "",
"user_name": "Gregori Boczynski",
"user_phone": "1-541-754-3010",
"user_email": "user@mail.com",
"user_es_contact_id": "255830499"
},
"CustomEvent": {
"EventName":"my_event",
"Tags": {
"some_tags": [
"1",
"a2"
],
"some_tags1": [
"4",
"gg"
]
}
}
}
Parameters
Name | Example | Description |
GeneralInfo |
Required Type: array of objects |
General information |
eventName |
“CustomEvent” Type: string |
Event name |
siteId |
“8A412DC” Type: string |
|
externalCustomerId | "1234509876" Optional Type: string |
External identifier generated in your system |
user_phone |
"1-541-754-3010" Type: string |
Phone number in the international format |
user_email |
"user@mail.com" Type: string |
User email |
user_name |
"Gregori Boczynski" Type: string |
User name and surname |
datetime | 1579622183208 | Timestamp (millisecond) |
cookies |
"CDA68358-94FB-4D83-9655-3FEB3C4114A3" Type: object, string |
|
CustomEvent |
Required Type: array of objects |
Event description |
EventName |
“my_event” Type: string |
Custom event name |
Tags |
Optional Type: array of objects |
Additional fields where some_tags is the field name and “1” and “2” are its values (always transferred as array of strings) |
ProductUpdate
Description
Used to update products and their data in the block with product recommendations on the site.
Example
{
"GeneralInfo": {
"eventName": "ProductUpdate",
"siteId": "site_id",
},
"ProductUpdate": [
{
"brand": "Apple",
"name": "iPhone 7",
"description": "Some description",
"product_id": "430738",
"imgurl": "https://domain.com/apple/product_large.png",
"unit_price": "201.95",
"isInStock": "1",
"tag_discount": ["10"],
"tag_oldprice": ["224.38"],
"price_currency_code": "UAH",
"category": "level3",
"category_id": ["3"],
"tag_something": [
"aaa",
"bbb"
]
},
{
"brand": "Apple",
"name": "iPhone 7",
"description": "Some description",
"product_id": "430738",
"imgurl": "https://domain.com/apple/product_large.png",
"unit_price": "201.95",
"isInStock": "1",
"tag_discount": ["10"],
"tag_oldprice": ["224.38"],
"price_currency_code": "UAH",
"category": "level1 > level2 > level3",
"category_id": ["1", "2", "3"],
"tag_something": [
"aaa",
"bbb"
]
}
]
}
Parameters
Name | Example | Description |
ProductUpdate |
required |
required |
siteId |
site_id |
required |
product_id |
430738 |
required |
isInStock |
1 |
required, could be 0 or 1 |
unit_price |
201.95 |
optional field |
description |
Some description |
optional field |
name |
iPhone 7 |
optional field |
imgurl |
https://domain.com/apple/product_large.png |
optional field |
brand |
Apple |
optional field |
tag_discount |
10 |
optional field |
price_currency_code |
UAH |
optional field |
tag_oldprice |
224.38 |
optional field |
If the item has a discount pass the next parameters:
{
"product_id": "1111",
"unit_price": 270,
"isInStock": 1,
"price_currency_code": "UAH",
"tag_oldprice": [
"300"
],
"tag_discount": [
"10"
]
}
SearchRequest
Description
To collect statistics on search queries, you need to send the value from the search line.
Use this event for triggers. Send it only if the search returned no results. In the trigger, such contacts will receive personal recommendations (at the moment, recommendations don’t depend on the value entered in the search, we will support this feature in the nearest future).
Example
{
"GeneralInfo": {
"eventName": "SearchRequest",
"siteId": "CE460EC",
"datetime": 1668792552000,
"externalCustomerId": "1234509876",
"user_phone": "1-541-754-3010",
"user_email": "userdech123@mail.com",
"user_name": "Gregori Boczynski",
"user_es_contact_id": "",
"cookies": {
"sc": "CDA68358-94FB-4D83-9655-3FEB3C4114A3"
}
},
"SearchRequest": {
"search": "input_value",
"isFound": 1
}
}
Parameters
Name | Example | Description |
search | "Coffe" Required Type: string |
Value from the search string. What we are looking for on the site. |
isFound | 1/0 Optional Type: int |
If the list is empty, it returns 0 otherwise 1 |