Consumer bought products
While EVA keeps track of all the products bought via EVA automatically, 'consumer bought products' are an additional category of products, which you can optionally register or push into EVA.
Any product bought by a customer is stored in EVA, allowing you to check users' product history. Consumer bought products however, are registered as a separate category of products. These products, either bought within the context of EVA or via an external system, can then be used for specific functionality in EVA. These are often products which come with warranty periods and can then be included in other flows in EVA such as Repairs.
Although a large part of this functionality will become available in your front ends, currently it can be managed via API only. The necessary services will be described here below based on its integration type:
- Direct integration
- Pushing products into EVA
Checking user bought products
Regardless of your setup, you can check the details of the consumer bought marked products via the following two services.
1. ListUserBoughtProducts
{
"InitialPageConfig": {
"Filter": {
"UserID" : 1,
"ProductID" : 1,
}
}
}
ProductBackendID{
"Results": [
{
"ID": "1",
"UserID" : 1,
"UserFullName": "It's a me, Mario",
"ProductID": 1,
"ProductBackendID": "PROD_A1",
"ProductName": "Mushroom",
"PrimaryImage": /* IProductSearchItemPrimaryImage object */,
"SerialNumber": "",
"LastPurchaseDate": "01-01-23 12:00:00.000",
"LastPurchasedQuantity": 1,
"TotalPurchasedQuantity": 2,
"IsUnderWarranty": true,
"WarrantyExpiryDate": "01-01-24 12:00:00.000"
},
...
]
}
2. GetUserBoughtProducts
{
"ID": 1
}
{
"ID": "1",
"UserID" : 1,
"UserFullName": "It's a me, Mario",
"Product": /* IProductSearchItem object */,
"SerialNumber": "",
"LastPurchaseDate": "01-01-23 12:00:00.000",
"LastPurchasedQuantity": 1,
"TotalPurchasedQuantity": 2,
"IsUnderWarranty": true,
"WarrantyExpiryDate": "01-01-24 12:00:00.000",
"AdditionalWarrantyInfo": "Some random data",
"Details": [
{
"ID": 1,
"FromExternal": false,
"BackendSystemID": "",
"BackendID": "",
"OrderID": 1,
"OrderLineID": 1,
"PurchaseDate": "01-01-23 12:00:00.000",
"PurchasedQuantity": 1
},
...
]
}
Adding and interacting with user bought products
Direct integration
First off: products bought via EVA are not automatically added to the list of consumer bought products.
You can however enable this by setting AutoRegisterUserBoughtProductsFromShippedOrder
to true (defaults to false). In that case, all products contained in each consumer's order will be registered by EVA automatically.
If you do not want all products to be marked as Consumer bought products, then you will have to call the relevant services yourself for the right products.
Creating and updating user bought products
If the products bought via EVA are not automatically added to the Consumer bought products category, then you can use RegisterUserBoughtProducts
to register them individually. This service revolves around working with the EVA ID.
{
"UserID" : 1,
"ProductID": 1,
"SerialNumber": "",
"IsUnderWarranty": true,
"WarrantyExpiryDate": "01-01-24 12:00:00.000",
"AdditionalWarrantyInfo": "Some random data",
"OrderID": 1,
"OrderLineID": 1,
"PurchaseDate": "01-01-23 12:00:00.000",
"PurchasedQuantity": 1
}
{
"UserBoughtProductID" : 1,
"UserBoughtProductDetailID": 1,
}
The following service is used solely for updating the warranty of the product.
{
"UserBoughtProductID" : 1,
"IsUnderWarranty": true,
"WarrantyExpiryDate": "01-01-24 12:00:00.000",
"AdditionalWarrantyInfo": "Some random data",
}
Add/Update/Delete user bought product details
If a product is bought more than once, the following service can be used to add the product to the original registration.
{
"UserBoughtProductID" : 1,
"OrderID": 1,
"OrderLineID": 1,
"PurchaseDate": "01-01-23 12:00:00.000",
"PurchasedQuantity": 1
}
{
"UserBoughtProductID" : 1,
"UserBoughtProductDetailID": 1,
}
{
"UserBoughtProductID" : 1,
"OrderID": 1,
"OrderLineID": 1,
"PurchaseDate": "01-01-23 12:00:00.000",
"PurchasedQuantity": 1
}
{
"UserBoughtProductID" : 1,
"UserBoughtProductDetailID": 1,
}
{
"ID": 1
}
Archiving user bought products
Some things can be deleted, such as a product detail here above, but often they are simply tagged as inactive, like we do with the following service.
{
"ID": 1
}
Pushing user bought products
There are several scenarios in which the products wouldn't yet be known in EVA, for example:
- A separate e-commerce system, with sales being pushed into EVA
- A history of consumer bought products dating before the use of EVA
Regardless of the situation, you can push users and their relevant products to EVA by means of PushBoughtProductsForUsers
. This service can only be used by users with the PushUserBoughtProducts functionality.
This a-sync service can be used for up to 10.000 users at a time.
{
"BoughtProductsForUsers": [
{
"UserID": 262,
"BoughtProducts": [
{
"ProductID": 115,
"SerialNumber": "111",
"IsUnderWarranty": true,
"WarrantyExpiryDate": "2024-02-24T23:00:00.000Z",
"AdditionalWarrantyInfo": "No remarks",
"Archive": false
}
]
},
{
"UserID": 318,
"BoughtProducts": [
{
"ProductID": 117,
"SerialNumber": "222",
"IsUnderWarranty": true,
"WarrantyExpiryDate": "2026-02-24T23:00:00.000Z",
"AdditionalWarrantyInfo": "No remarks",
"Archive": false
}
]
},
{
"UserID": 1511,
"BoughtProducts": [
{
"ProductID": 111,
"SerialNumber": "111",
"IsUnderWarranty": true,
"WarrantyExpiryDate": "2025-02-24T23:00:00.000Z",
"AdditionalWarrantyInfo": "No remarks",
"Archive": false
},
{
"ProductID": 112,
"SerialNumber": "333",
"IsUnderWarranty": false,
"WarrantyExpiryDate": "2023-02-24T23:00:00.000Z",
"AdditionalWarrantyInfo": "No remarks",
"Archive": false
},
{
"ProductID": 116,
"SerialNumber": "333",
"IsUnderWarranty": false,
"WarrantyExpiryDate": "2023-02-24T23:00:00.000Z",
"AdditionalWarrantyInfo": "No remarks",
"Archive": false,
"Details": [
{
"BackendID": "BP-24242",
"OrderID": 3252366223323,
"OrderLineID": 46,
"PurchaseDate": "2021-08-01",
"PurchasedQuantity": 1
}
]
}
]
},
{
"UserID": 2098,
"BoughtProducts": [
{
"ProductID": 113,
"SerialNumber": "444",
"IsUnderWarranty": false,
"WarrantyExpiryDate": "2023-02-24T23:00:00.000Z",
"AdditionalWarrantyInfo": "No remarks",
"Archive": false,
"Details": [
{
"BackendID": "BP-24241",
"OrderID": 131344,
"OrderLineID": 26,
"PurchaseDate": "2021-08-01",
"PurchasedQuantity": 1
}
]
}
]
}
]
}
{
"FailedBoughtProductsForUsers": [
{
"UserID": 1511,
"BoughtProducts": [
{
"ProductID": 116,
"ProductBackendID": "9000025",
"SerialNumber": "333"
}
]
},
{
"UserID": 2098,
"BoughtProducts": [
{
"ProductID": 113,
"ProductBackendID": "9000020",
"SerialNumber": "444"
}
]
}
],
"SuccessfulBoughtProductsForUsers": [
{
"UserID": 262,
"UserBackendID": "507f6278-eb0e-49f2-8397-8706388d1695",
"BoughtProducts": [
{
"UserBoughtProductID": 404,
"ProductID": 115,
"ProductBackendID": "9000022",
"SerialNumber": "111"
}
]
},
{
"UserID": 318,
"BoughtProducts": [
{
"UserBoughtProductID": 643,
"ProductID": 117,
"ProductBackendID": "9000026",
"SerialNumber": "222"
}
]
},
{
"UserID": 1511,
"BoughtProducts": [
{
"UserBoughtProductID": 568,
"ProductID": 111,
"ProductBackendID": "9000018",
"SerialNumber": "111"
},
{
"UserBoughtProductID": 569,
"ProductID": 112,
"ProductBackendID": "9000019",
"SerialNumber": "333"
}
]
}
],
"Metadata": {
"ExternalIDs": {
"User": {
"507f6278-eb0e-49f2-8397-8706388d1695": "262"
},
"Product": {
"9000018": "111",
"9000019": "112",
"9000020": "113",
"9000022": "115",
"9000025": "116",
"9000026": "117"
}
},
"IsAsyncResultAvailable": true
}
}
The service PushUserBoughtProduct
, which has been available for some time. is similar to the above service. Its main difference however, is that it's limited to 1 user at a time. Due to that, there is no more reason to support it in the long run.