Welcome! This is my personal blog about Web technologies, software development, open source and other related topics
The ideas and opinions expressed here are solely mine and don't represent those of others, either individuals or companies.The code snippets or references to software products or analogous are to be used without any warranty of any kind. If you enjoy the content, feel free to share it and re-use it as long as you provide a link to the original post.
Run interactive expereince using the friendlyID attribute. When the expereinces are created in Sitecore CDP an ID is created for the experience. Use this ID to run an experiemnet.
How to create a fullstack experience in Sitecore CDP-
In the menu option click on Experiences => Full stack
This should show the list of existing experiences . Click on Create Experience
Select Interactive Experimence option-
Provide a name and note the ID –
Click on the Configure API response option-
Create a json response. Use “Copy Path as Freemaker” to copy the field name. In this case guest.title, guest.firstname etc.
One variant
You can have only one variant in an experience. Optionally, choose who will receive this experience using the audience filter. If you want to have multiple variants, create an experiment instead.
Click Save and “Preview API” to test the response
Note: dont forget to Save before testing the response.
Search for the guests. See how to create guests here <<enter blog details>>
Response for the guest that is searched. Back to “Interactive Expereience”
Error- if you receive this error. I had to add “” to the field names-
Run the Expereince immediately or schedule-
Experience is now live and the performance can be tracked in “Operational” Tab
At this point of time there are no executions. Check the “Operational” tab-
See this Full Stack Experiences list-
Next run the Experience in Postman or from the Web Site.
Continuing with the post – Sitecore Personalize – Create Fullstack Experience
In earlier post created a new Fullstack experience named- pastoral grill experience and ID for same was “”
Get the ID of the expereince in “Details” tab and a code snippet to run this in frontend. But in this post will see how to interact using rest api endpoint.
Create connection to external service used to trigger experience. This connections are outbound.
In this blog will see an example to create a connection to mailjet which can be used to trigger a expereience for abandon cart(covered in another blog post)- here
// Sample mail
{
"Messages": [
{
"From": {
"Email": "pilot@mailjet.com",
"Name": "Your Mailjet Pilot"
},
"To": [
{
"Email": "passenger@mailjet.com",
"Name": "Customer 1"
}
],
"Subject": "Your cart is waiting",
"TextPart": "Dear passenger, Welcome to pastoral grill",
"HTMLPart": "<h3>Dear passenger 1, welcome to <a href=\"https://www.mailjet.com/\">Mailjet!</a></h3><br />May the delivery force be with you!"
}
]
}
Tet the connection-
Note- add sender address to the contact list in mailjet or the mails will be blocked. Also the mails from gmail wont be triggered. Use this URL to add sender address-
The browser ID is a universally unique identifier (UUID) that Sitecore CDP assigns to every user of your application. It associates sessions, events, and orders with the respective user.
To generate browser id at server side in this case using postman use following URL-
{{apiEndpoint}} – API target endpoint depends on the region client key is available in. Following are the regions and url available at the point of writing this blog and as per this document –
Europe – https://api.boxever.com
Asia Pacific – https://api-ap-southeast-2-production.boxever.com
Top right click the clog icon. Select API Access option
Get teh client key from this page-
Request/Response-
Status- OK. The request was served successfuly
Anantmous(Guest) should be created. Browser ID is in “ref” field in the response
Check the guest details in portal with the Browser ID-
Goto the Guests page –
Search guests with browser id. (bid: <<browser id>>)
This should the Guest Type as Visitor which means its Anonymous and not yet known or uniquely identified.
CURL code snippet-
curl --location -g --request GET 'https://api.boxever.com/v1.2/browser/create.json?client_key=<<client key>>&message={}'
C# code snippet-
var client = new RestClient("https://api.boxever.com/v1.2/browser/create.json?client_key=<<client key>>&message={}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
In the session event you should be able to see the Purchase Complete event with the Order Number where the customer completed the checkout.
This should help to get the revenue earned.
cURL code snippet-
curl --location -g --request GET 'https://api.boxever.com/v1.2/event/create.json?client_key=<<Client Key>>&message={"channel":"WEB","type":"CHECKOUT","language":"EN","currency":"GBP","page":"home page","pos":"pastoral-witty-grill","browser_id":"7ed103bd-08c2-47f4-8f69-91141ca3200d","status":"PURCHASED","reference_id":"ORDER_1"}'
C# code snippet-
var client = new RestClient("https://api.boxever.com/v1.2/event/create.json?client_key=<<Client Key>>&message={\"channel\":\"WEB\",\"type\":\"CHECKOUT\",\"language\":\"EN\",\"currency\":\"GBP\",\"page\":\"home page\",\"pos\":\"pastoral-witty-grill\",\"browser_id\":\"7ed103bd-08c2-47f4-8f69-91141ca3200d\",\"status\":\"PURCHASED\",\"reference_id\":\"ORDER_1\"}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
See how to create a browser id and Add Event before a confirm event is sent.
CONFIRM Event
Search Customer by browserid or Name.
You should be able to see the customer Online at that point odf instance
Click on Timeline and View Session details
Get the session details and should see the Order Confirmed event
Clieck on the settings icon to see more details-
cURL code snippet-
curl --location -g --request GET 'https://api.boxever.com/v1.2/event/create.json?client_key=<<Client Key>>&message={"channel":"WEB","type":"CONFIRM","language":"EN","currency":"GBP","page":"home page","pos":"pastoral-witty-grill","browser_id":"7ed103bd-08c2-47f4-8f69-91141ca3200d","product":[{"item_id":"EXACT_90"}]}'
C# code snippet-
var client = new RestClient("https://api.boxever.com/v1.2/event/create.json?client_key=<<Client Key>>&message={\"channel\":\"WEB\",\"type\":\"CONFIRM\",\"language\":\"EN\",\"currency\":\"GBP\",\"page\":\"home page\",\"pos\":\"pastoral-witty-grill\",\"browser_id\":\"7ed103bd-08c2-47f4-8f69-91141ca3200d\",\"product\":[{\"item_id\":\"EXACT_90\"}]}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
You can force close event to test Abandon Cart. This works only in non-prod environments.
Assumption- An identified guest which is active and has added products in cart.
If you are corectly tracking you should see in the timeline Session and event a Product been added.
So whilst developing if you want to force close this session, since you might not want to wait for 20 minutes for session to expire or whatever time is set to expire the session, you can force close the session to see or perform the next steps if the cart is been abandoned.
The force close event can be triggered by providing message type as FORCE_CLOSE in the payload.
Send the payload to this endpoint. For more details on what should be the apiEndpoint and client key see this blog
var browser_id = pm.environment.get("browserId") -- browser id
var pointOfSale = pm.environment.get("PointOfSale") -- point of sale
var message = {
"channel": "WEB",
"type": "FORCE_CLOSE",
"language": "EN",
"currency": "GBP",
"page": "home page",
"pos": pointOfSale,
"browser_id": browser_id
}
postman.setEnvironmentVariable("message", JSON.stringify(message));
Since the session is now closed we can see the Abandoned Revenue. Further reminder mails can be sent to user to complete the purchase on the abandoned cart.