Wishlist feed
The wishlist feed is an optional additional signal for the recommendation engine. Products a user has placed on his wishlist express purchase intent and improve the personalization of user recommendations for that user.
Request
A wishlist is pushed by a PUT to the following endpoint:
PUT {{OpenAppUrl}}/merchant/v1/recommendations/wishlist
The request body contains the full current wishlist of a single user and replaces the previously stored wishlist of that user. Send the request whenever the wishlist changes; send an empty products array when the user clears his wishlist.
- Request
- Schema
{
"loggedUser": "user-id-from-webshop",
"updatedAt": "2026-06-10T09:12:00.000Z",
"products": [
{
"id": "id123-red",
"ean": "5901234123457",
"createdAt": "2026-06-01T20:44:00.000Z"
},
{
"id": "id123-blue",
"ean": "5901234123471",
"createdAt": "2026-06-10T09:12:00.000Z"
}
]
}
loggedUserstringRequiredThe merchant's own stable identifier for the user. Must be consistent with the loggedUser sent in the order feed.
maxLength: 255
updatedAtstringRequiredThe moment the wishlist was last changed in the merchant system. OpenApp ignores snapshots older than the one already stored.
format: date-time
productsarray of WishlistProductRequiredThe full current content of the wishlist. The snapshot replaces the previously stored wishlist; an empty array clears it.
maxItems: 500
Show child parametersHide child parameters3
idstringRequiredThe catalogue variant ID of the product.
maxLength: 36
eanstringOptionalThe ean (or other barcode) of the product.
maxLength: 36
createdAtstringOptionalThe moment the product was added to the wishlist.
format: date-time
Raw JSON Schema
{
"description": "Full snapshot of a single user's wishlist fed by the merchant into the OpenApp recommendation engine",
"additionalProperties": false,
"type": "object",
"properties": {
"loggedUser": {
"description": "The merchant's own stable identifier for the user. Must be consistent with the loggedUser sent in the order feed.",
"maxLength": 255,
"type": "string",
"title": "loggedUser"
},
"updatedAt": {
"description": "The moment the wishlist was last changed in the merchant system. OpenApp ignores snapshots older than the one already stored.",
"format": "date-time",
"type": "string",
"title": "updatedAt"
},
"products": {
"description": "The full current content of the wishlist. The snapshot replaces the previously stored wishlist; an empty array clears it.",
"maxItems": 500,
"type": "array",
"items": {
"$ref": "#/definitions/WishlistProduct"
},
"title": "products"
}
},
"required": [
"loggedUser",
"products",
"updatedAt"
],
"definitions": {
"WishlistProduct": {
"title": "WishlistProduct",
"type": "object",
"properties": {
"id": {
"description": "The catalogue variant ID of the product.",
"maxLength": 36,
"type": "string",
"title": "id"
},
"ean": {
"description": "The ean (or other barcode) of the product.",
"maxLength": 36,
"type": "string",
"title": "ean"
},
"createdAt": {
"description": "The moment the product was added to the wishlist.",
"format": "date-time",
"type": "string",
"title": "createdAt"
}
},
"required": [
"id"
]
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}
The updatedAt field protects against out-of-order delivery: OpenApp ignores a snapshot older than the one it already stores for the user.
loggedUser is mandatory. It is the merchant's own stable user identifier and must be consistent with the loggedUser sent in the order feed.
Wishlist entries whose id is not a known catalogue variant are silently ignored. Since the feed uses snapshot semantics, they are automatically picked up the next time a snapshot is sent after the next catalogue synchronization completes.
Response
OpenApp confirms the update with 200 OK and an empty body.
Errors
| Error name | Code |
|---|---|
WishlistValidationException | 400 |
TooManyProductsException | 413 |