GraphQL: Onsite Sessions
When a new user comes to the app, you can use this method to get a new session. It will return you a customer-id that can save on the device and use for future requests. This would be ideal.
mutation {
newSession(referer: "https://google.com?q=shoes")
}
When a customer logs in, you can update the existing customer with the customer-reference. This would merge the online and mobile sessions. If not needed, I would omit this for now.
In order to use the GraphQL session mutation to fetch recommendations for your search page, the event, in this case, must be
VIEWED_PRODUCT
and you should specify the product-identifier of the current product being viewed.mutation {
updateSession(by: BY_CID, id: "5b1a481060b221115c4a251e",
params: {
event: {
type: VIEWED_PRODUCT
target: "11923861519"
ref: "front-page-slot-1"
}
}
) {
pages {
forProductPage(params: {
isPreview: false, imageVersion: VERSION_8_400_400
}, product: "11923861519") {
divId
resultId
primary {
productId
}
}
}
}
}
In order to use the GraphQL session mutation to fetch recommendations for your category page, the event, in this case, must be
VIEWED_CATEGORY
and you should specify a fully qualified category path of the current category. For example, if you have a category called "Dresses" under the category "Women", the FQCN would be "/Women/Dresses".mutation {
updateSession(by: BY_CID, id: "5b1a481060b221115c4a251e",
params: {
event: {
type: VIEWED_CATEGORY
target: "/Shorts"
}
}
) {
pages {
forCategoryPage(params: {
isPreview: false, imageVersion: VERSION_8_400_400
}, category: "Shorts") {
divId
resultId
primary {
productId
}
}
}
}
}
In order to use the GraphQL session mutation to fetch recommendations for your search page, the event, in this case, must be
SEARCHED_FOR
and you should specify the search term of the query.mutation {
updateSession(by: BY_CID, id: "5b1a481060b221115c4a251e",
params: {
event: {
type: SEARCHED_FOR
target: "black shoes"
}
}
) {
pages {
forSearchPage(params: {
isPreview: false, imageVersion: VERSION_8_400_400
}, term: "black shoes") {
divId
resultId
primary {
productId
}
}
}
}
}
In order to use the GraphQL session mutation to fetch recommendations for your cart or checkout page, the event, in this case, must be
VIEWED_PAGE
and you should specify a fully qualified URL of the page as the target.mutation {
updateSession(by: BY_CID, id: "5b1a481060b221115c4a251e",
params: {
event: {
type: VIEWED_PAGE
target: "https://example.com/cart"
}
}
) {
pages {
forCartPage(params: {
isPreview: false, imageVersion: VERSION_8_400_400
}, value: 100) {
divId
resultId
primary {
productId
}
}
}
}
}
In order to use the GraphQL session mutation to fetch recommendations for your home or front page, the event, in this case, must be
VIEWED_PAGE
and you should specify a fully qualified URL of the page as the targetmutation {
updateSession(by: BY_CID, id: "5b1a481060b221115c4a251e",
params: {
event: {
type: VIEWED_PAGE
target: "https://example.com"
}
}
) {
pages {
forFrontPage(params: {
isPreview: false, imageVersion: VERSION_8_400_400
}) {
divId
resultId
primary {
productId
}
}
}
}
}
Recommendation results can be attributed to events by setting a session event's
ref
to the recommendation result's resultId
.Here is an example of some recommendations for a front page. You can see recommendation result's
resultId
is "frontpage-nosto-1"
.{
"data": {
"updateSession": {
"pages": {
"forFrontPage": [
{
"resultId": "frontpage-nosto-1",
"primary": [
{
"productId": "9497180547",
"name": "Cool Kicks",
"url": "https://example.com/products/cool-kicks"
},
{
"productId": "9497180163",
"name": "Awesome Sneakers",
"url": "https://example.com/products/awesome-sneakers"
},
{
"productId": "4676165861430",
"name": "Free gift",
"url": "https://example.com/products/free-gift"
},
{
"productId": "2188051218486",
"name": "Furry Dice",
"url": "https://example.com/products/furry-dice"
},
{
"productId": "9497180611",
"name": "Gnarly Shoes",
"url": "https://example.com/products/gnarly-shoes-1"
}
]
}
]
}
}
}
}
If a customer selects to view the Cool Kicks product, you can generate the following request. Note that the event's
ref
is set to "frontpage-nosto-1"
.mutation {
updateSession(by: BY_CID, id: "5b1a481060b221115c4a251e",
params: {
event: {
type: VIEWED_PRODUCT
target: "9497180547"
ref: "frontpage-nosto-1"
}
}
) {
pages {
forProductPage(params: {
isPreview: false, imageVersion: VERSION_8_400_400
}, product: "9497180547") {
divId
resultId
primary {
productId
}
}
}
}
}
Last modified 1mo ago