Skip to Content
Technical Articles

Customer Experience Live in Rio

Authors: Thiago Mendes and Gianluigi Bagnoli.

Companies have ever been concerned about customer experience.

First format I can recall is the suggestion box sticked to the wall. You could take a piece of paper and write down what went wrong, suggest improvements or even compliment a specific employee or service. Those papers were regularly collected and eventually tabulated for further analysis.

Then there were some paid surveys, people hiring others at the streets as they were passing by, for explicitly testing new products or services. This format required more dedication on trying and answering specific questions in a controlled environment, and was completely guided by the product/service owner.

The most interesting one is called hidden customer, or mystery shopper. This is basically implemented by companies to check the level of quality and standard for their products and services. It consists in hiring and guiding people to behave in a specific way when shopping at a given place, while they must register and report their experiences.

Finally others, with much less insights, suddenly pop up all around physical stores such as a terminal with four faces so you could just vote for their service, while in-store or leaving a specific area. They were even placed at bathrooms to assess cleanliness. 😅

And of course, not mentioning the e-mails asking for online feedback on goods and services, mostly pushed by market places such as Amazon.com.

All of them serve different strategies and purposes, but at the end of the day, how much it takes to collect, organize and leverage customer experience data, cross it with the operational data, and take the best decision at the right moment?

SAP went ahead and acquired Qualtrics in 2018, envisioning a new fuel for the companies, called X+O: experience and operational data working together for better results.

Of course that, also at the SME space, we got all the right tools to go for it along with our innovative partner’s ecosystem.

You probably have seen some PoCs like this one: XO for SMBs – showcasing Qualtrics, SAP Business ByDesign and SAP Cloud Platform Integration; or this one There’s more than a smile in your face! where we demonstrated how to orchestrate Qualtrics and AWS Rekognition APIs to gather a bunch of implicit data along with customers’ feedback to enrich the insights.

Live in Rio!

It’s now time to check X+O running live!

ALFA Sistemas, a Brazilian SAP Business One partner and their passionate customer Impecável, from Rio de Janeiro, built their first customer experience real-time dashboard leveraging the power of Qualtrics (X) and SAP Business One (O): customers’ feedbacks flow real-time from Qualtrics to the SAP Business One, version for SAP HANA, where the data is crossed with operational data and transformed into ready-to-consume dashboards and KPI’s available at the manager’s Cockpit.

With that, Impecavel’s management team got real-time customer’s satisfaction visibility on every and each store, and can now take immediate action over complains or suggestions while measuring the short and mid-term impact on sales. They can also evaluate the reactions over different store layouts and product-mix effectiveness by region.

There’s a long list of advantages they take from the X+O and this is fuelling them to the next level, really putting the customer at the center of every single decision.

Enough of business, let’s jump into the tech side and see how it’s done.

The X+O Strategy

We basically need three pieces working independently together:

  1. Qualtrics Surveys: collecting shoppers’ experience data;
  2. SAP Business One: processing Impecável’s operational data; and
  3. Partner’s Solution: to orchestrate the integration and transform the data into insights.

  1. Qualtrics provides a set of APIs and webhooks so the partners’ solutions can connect and retrieve data real time;
  2. At the other side, SAP Business One securely exposes its business objects though the Service Layer, a set of RESTful web services, enabling the partner’s solution to consume the operational engine in a loosely-coupled approach.
  3. In the middle, orchestrating all these services, it’s ALFA Sistemas‘ solution, running real time integration using the best tools and technologies available to leverage the Intelligent Enterprise.

Lets analyse how it works, step-by-step:

At the check-out point, shopper may opt to share his/her e-mail address to be contacted later, and also receive a link to Qualtrics survey.

Qualtrics (THE “X”)

The customer may answer Qualtrics survey, rating the experience from 1 to 10, and the response is initially stored in Qualtrics system, as a response to that given survey.

Before going on with the scenario flow, let’s see how to grab that survey response’s data:

To catch all responses real time, our partner ALFA Sistemas registered his own developed web service application running on SAP Cloud Platform to get triggered as soon as a response is posted to Qualtrics:

This is ran only once – the main POST URL is the Qualtrics tenant followed by the API for event subscription.

In the body, you see “topics” – here we need to indicate what is the event we want to register to, and in this case is the Completed Response, followed by the Survey ID.

We finally need to provide the “publicationUrl”: the web service that will handle this call, and of course this is the end-point of the app running on SAP Cloud Platform developed by our partner ALFA Sistemas.

Partner’s solution (THE “+”)

Ok, now we can go ahead, read all the survey data, and push it to SAP Business One.

Below you’ll see the code snippet that runs on SAP Cloud Platform and would handle the webhook call. We get the survey response ID from the request body and do a GET request back to Qualtrics to retrieve whatever field we want from the specific survey response:

//End-point called by qualtrics webhooks
app.post("/", function(req, res) {
  // loop to avoid duplicated calls with the same ResponseID
  if (responseID != req.body.ResponseID) {
    responseID = req.body.ResponseID;
  } else { return };
  
  //Get Survey response and post to B1
  QUALTRICS.EventSurvey(req.body, function(error, resp) {
    if (error) {
      console.error("Error - " + error);
      res.send(error);
    } else {
      var jsonResponse = JSON.stringify({ surveyresp: resp });
      res.setHeader("Content-Type", "application/json");
      res.status(200).send(jsonResponse);
    }
  });
});

This is how we call Qualtrics API to retrieve survey’s response data, and finally call SAP Business One Service Layer to post data to the core ERP:

function EventSurvey(eventData, callback) {
  console.log("Qualtrics Event Data: " + JSON.stringify(eventData));

  var uri =
    "https://" +
    process.env.QUALTRICS_TENANT +
    ".qualtrics.com/API/v3/surveys/" +
    eventData.SurveyID +
    "/responses/" +
    eventData.ResponseID;

  //Set HTTP Request Options
  var options = {
    uri: uri,
    headers: {
      "X-API-TOKEN": process.env.QUALTRICS_TOKEN
    }
  };

  //Make Request
  console.log("Getting Survey data from Qualtrics " + uri);
  req.get(options, function(error, response, body) {
    if (!error && response.statusCode == 200) {
      var obj = JSON.parse(body);
      var rating = obj.result.values.QID1;
        var surveyText = obj.result.values.QID2_TEXT;
        console.log("Survey Text:" + surveyText);
        B1SL.PostActivity(surveyText, callback);
    } else {
      callback(response.statusMessage, response);
    }
  });
}

Core ERP (THE “O”)

The data posted into SAP Business One using the Service Layer is modelled into SAP HANA Views and finally deployed as dashboards into SAP Business One cockpit, as you could see before and below again:

Customer can now close the loop and take better decisions, on the flight, with the whole scenario at his finger tips: from the customer experience to the operational data.

If you are interested to get a full and simple working code prototype for X+O, please check our github repository here.

Stay tuned for the next customer’s use cases on X+O!

Be the first to leave a comment
You must be Logged on to comment or reply to a post.