Cloud CherryTechnology & API
Dec 14th 2017
CherryAPI = new APIClient();CherryAPI.Connect();
Introduction to CEM Analytics Platform
Data Acquisi�on Services API
ManagementServices API
CloudCherryAnaly�cs Engine
Paper Survey
Email Survey
Web Survey
Tablet Survey
API
Aquire Analyze Insight
Real�me Analy�cs
Drill Downs
RT No�fica�ons
Excel Reports
API
è Technology Stack & Architecture
Œ � Ž
Cloud Cherry’s Customer Experience Management Analy�cs Pla�orm(CEMP) enables brands & businesses to perform real-�me acquisi�on of Customer Experience(CX) data from their customers using mul�ple channels to acquire, engage & analyze their customers.
Why Collect & Analyze Data Real-Time ?
Ÿ Real-�me data allows you to engage customers in an almost one-on-one, real-�me conversa�on to provide mul�ple chances to amend before any service issues move to be discussed online causing dispropor�onate damage to the brand.
Ÿ Real-�me data analysis help businesses understand how customers perceive their products so that they can adapt them, or their marke�ng, if need be highly curve fi�ng their marke�ng or servicing spends.
Ÿ Data drill down analysis enables businesses to perform pre-impact risk analysis before tweaking any offering to iden�fy what areas cause the most commo�on or happiness to customers, which an non-real-�me overall sa�sfac�on score can’t iden�fy and only shows up in a�ermath.
Ÿ Tracking enterprise-wide insights on single dashboard saves lot of �me to manage quality across wide array of loca�ons servicing customers.
REST API
Analyze Insight
NOSQL
Data Acquisi�on Services API
ManagementServices API
JSON
Import Exis�ng Data3rd Party Developer Integra�on
Na�ve - Android - iOS - Windows
CloudCherryAnaly�cs Engine
REST API
Export Analyzed Resultsor Raw Data
3rd Party Developer Integra�on
Management DashboardBootstrap, AngularJS
Pla�orm Built On
OPEN API
OPEN DATA
OPEN STANDARDS
Aquire
Big Data StoreTerabyte Ready
TransformSplice
Analyze
CaptureAcknowledgeDigi�ze
Customer Experience Management Analy�cs Pla�orm
Analyze Insight
Pla�orm Built On
Aquire
Azure Web App PaaS
CEM Pla�orm API
Edge Deployment
api.getcloudcherry.com
Swap
Live
Azure DocumentDBAccount Analy�cs Store
Azure Private VNet VM Set
MongoDB Data Store
Availability Set
Azure Cloud Service PaaSAnaly�cs Worker Cloud
+-AutoScale
Analy�cs Workers+-AutoScale
Azure Service Bus
Replica Set
Mes
sagi
ng
Redis CachePerf
orm
ance
Azure SchedulerAu
tom
a�o
n
Applica�on InsightsMo
nit
ori
ng
CEM
Op
en A
PI
getc
lou
dch
erry
.co
m/a
pi
OPEN API
REST API.NET SDK
PHP Package
Java Lib
REST/JSON
CEM
Das
hb
oar
dIn
sigh
ts &
An
aly�
csC
EM D
ata
Ch
ann
els
Jou
rney
To
uch
po
ints
Web
Voice/Text
Tablet AppTab
Social Listen
Email Gateway
Voice/Text Gateway
Social Listening
WebApp PaaS
Azure Availablity Set
Cloud Service PaaS
+-AutoScale
Customer Experience Management Analy�cs Pla�orm
+-AutoScale
+-AutoScale
15+ Channels+IBM WatsonA
nal
y�cs
Encrypted Data Recovery Site Off
Analyze Insight
Globally Available On
Aquire
Res
ilien
cy M
atri
xap
i.get
clo
ud
cher
ry.c
om
CEM
Glo
bal
Use
rsC
olle
c�o
n &
An
aly�
csC
EM A
PI M
on
ito
rin
gR
eal-
Tim
e R
ou
�n
g
California + Virginia Netherlands + Ireland Chennai + Pune Singapore London + Cardiff Toronto + Quebec
api.getcloudcherry.comAzure Traffic Manager
DNS Lookup(which IP do we talk to ?)Œ
�
Azure DocumentDB
Account Analy�cs StoreGlobal Monitored Routes
East USWest USNorth EUWest EUSingaporeSouth IndiaCentral India
20ms100ms120ms140ms150ms600ms160ms
OnlineOnlineOnlineOnline
Online
OnlineDegraded
Talk to East USit’s Online and Super Fast
to your loca�on(20ms)
User (New York)
Service Bus Redis Cache NoSQL Store
East US - Virginia
Service Bus Redis Cache NoSQL Store
West US - California
Azure DocumentDBService Bus Redis Cache NoSQL Store
North EU - Ireland
Azure DocumentDBService Bus Redis Cache NoSQL Store
West EU - Netherlands
Azure DocumentDBService Bus Redis Cache NoSQL Store
SouthEastAsia - Singapore
Azure DocumentDBService Bus Redis Cache NoSQL Store
South India - Chennai
Service Bus Redis Cache NoSQL Store
Central India - Pune
East US - This Way!
Lookup Best Route Right Now
Resiliency Matrix
Single ServerIaaSPaaSGlobal PaaS
Serv
er Fai
lure
OS Fai
lure
DC Failu
re
Region Fa
ilure
+
Each Global Region is Independent of OtherData Store Zones are Spread Within Country
+
û û û û
ü ü ü üü ü üü û û û
û
Country Fa
ilure
ûûûü
�
Ž
Customer Experience Management Global API
Technology Platform and Architecture
Cloud Cherry’s Customer Experience Management Pla�orm was architected and designed leveraging the best prac�ces of efficient cloud compu�ng, the pla�orm is architected to be open(OpenStandards/OpenData/OpenAPI), to perform (see benchmarks), to be secure (PCI-DSS Level 1) and long las�ng (based upon rock solid enterprise grade Microso�’s Azure Pla�orm).
The pla�orm is offered as a So�ware as a Service(SaaS) solu�on to businesses, while being deployed on the cloud as a Pla�orm as a Service(PaaS) on-top of Microso� Azure. SaaS frees businesses from chores of running a complex IT system just to support data collec�on, and lets’ their technical teams to be�er u�lize �me to develop systems and install interac�ve and dynamic visualiza�on tools that allow decision makers to analyze, view and benefit from the data, than to be occupied collec�ng it.
The pla�orms open philosophy of implemen�ng Open Standards and Open API allows businesses full control to own their data in-contrast to online applica�ons owning the data that customer’s generate; unlike proprietary solu�ons that only facilitates easy collec�on of data, but no way for data to exit, your data is best trusted with open pla�orms that don’t mine it themselves or use it for adver�sing.
CloudCherry SaaS = CEM Analy�cs + Open Standards + Enterprise Reliability from Microso�
Application
Feature Use
DataStore
Runtime
Middleware
OS
Virtualization
Servers
Storage
Networking
$$$$$+
On Premises
Man
aged
by
you
r o
rgan
izat
ion Application
Feature Use
DataStore
Runtime
Middleware
OS
Virtualization
Servers
Storage
Networking
$$$$
IaaS(Infrastructure as a Service)
Man
aged
by
you
r o
rgan
izat
ion
Am
azon
Application
Feature Use
DataStore
Runtime
Middleware
OS
Virtualization
Servers
Storage
Networking
$$$
PaaS(Platform as a Service)
Man
aged
by
you
r o
rgan
izat
ion
Micro
soft
Application
Feature Use
DataStore
Runtime
Middleware
OS
Virtualization
Servers
Storage
Networking
$
SaaS(Software as a Service)
Man
aged
by
you
r o
rgan
izat
ion
Micro
soft
Clo
ud
Ch
erry
è Global PaaS Delivered
Web API PaaS
+
-
Serv
ers
Ad
ded
On
Dem
and
Analy�cs PaaS
+
-
Serv
ers
Ad
ded
On
Dem
and
PaaS Region EU
Web API PaaS
+
-
Serv
ers
Ad
ded
On
Dem
and
Analy�cs PaaS
+
-
Serv
ers
Ad
ded
On
Dem
and
PaaS Region IN
Global PaaS DeliveredCloudCherry’s CX Pla�orm Deployment is a Global PaaS Deployment.
PaaS itself w/o even being global is possibly the highest form of deployment compared to all other alterna�ves that exist today; PaaS when combined with global deployment, delivers the most rock solid infrastructure performance, reliability and dependability that any analy�cs data pla�orm could hope for in being highly available & infinitely scalable.
Design feature of CX Global PaaS :
Ÿ Disposable/Stateless Instances : Instances are fully managed where servers are built up & torn down all the �me.
Ÿ De-centralized/Decoupled Design : All regions are independent of each other with compute de-coupled & data store de-coupled.
Ÿ Performance Caching - Near network performance from edges serving CX (ex: 15ms is a response �me for a survey token on 2nd use onwards)
Ÿ Global & Regional Backplanes - Co-ordina�ng the cha�er within region and within global network.
Ÿ Distributed NoSQL Store - Globally distributed NoSQL data store.
Red
is B
ackP
lan
e
Mo
ngo
Glo
bal
Bac
kPla
ne
Web API PaaS
+
-
Serv
ers
Ad
ded
On
Dem
and
Global PaaS
Analy�cs PaaS
+
-
Serv
ers
Ad
ded
On
Dem
and
PaaS Region US
Web API PaaS
+
-
Serv
ers
Ad
ded
On
Dem
and
Analy�cs PaaS
+
-
Serv
ers
Ad
ded
On
Dem
and
PaaS Region EU
Web API PaaS
+
-
Serv
ers
Ad
ded
On
Dem
and
Analy�cs PaaS
+
-
Serv
ers
Ad
ded
On
Dem
and
PaaS Region EU
Web API PaaS
+
-
Serv
ers
Ad
ded
On
Dem
and
Analy�cs PaaS
+
-
Serv
ers
Ad
ded
On
Dem
and
PaaS Region EU
Web API PaaS
+
-
Serv
ers
Ad
ded
On
Dem
and
Analy�cs PaaS
+
-
Serv
ers
Ad
ded
On
Dem
and
PaaS Region SGWeb API PaaS
+
-
Serv
ers
Ad
ded
On
Dem
and
Analy�cs PaaS
+
-
Serv
ers
Ad
ded
On
Dem
and
PaaS Region EU
Web API PaaS
+
-
Serv
ers
Ad
ded
On
Dem
and
Analy�cs PaaS
+
-
Serv
ers
Ad
ded
On
Dem
and
PaaS Region EU
api.getclo
ud
cherry.co
m
api-w
est-us.getclo
ud
cherry.co
m
Serv
ice
Bu
s
è Global Data Sovereignty
Choice of 5 Continents for Data Residency & Sovereignty
CloudCherry CEM Pla�orm provides more than 5+ global loca�ons as op�on for CEM programs to operate out of, these enable security conscious businesses to maintain control over the loca�on where regulated data and documents physically reside.
Privacy and data residency requirements vary by country and customers of CEM services need to consider the rules that cover each of the jurisdic�ons they operate in as well as the rules that govern the treatment of data at the loca�ons where the CEM service provider provisions their services (e.g., their data centers), with CloudCherry customers can select their choice of loca�on to meet the regulatory requirements.
Depending on the specific countries in which businesses operate, companies may need to keep certain types of informa�on within a defined geographic jurisdic�on. Addi�onally global API loca�ons also provides shortest latency to improve speed of access to your customers.
Sovereign Zones Loca�ons Regulatory Compliance
United States
European Union
Indian Subcon�nent
Singapore(+SE-Asia)
United Kingdom
Canada
API California Virginia +
California + Virginia
Backup Oregon (Encrypted)
API Netherlands Ireland +
Netherlands + Ireland
Backup Frankfurt (Encrypted)
API Chennai Pune +
Chennai + Pune
Backup Mumbai (Encrypted)
API Singapore
Singapore
Backup Singapore (Encrypted)
London + Cardiff
Backup Ireland (Encrypted)Backup
Toronto + Quebec
Backup Oregon(Encrypted)Backup
MTCS Level 3
G-Cloud v6
è Data Storage, Security, Privacy & Compliance
Data Storage, Security, Privacy & Compliance
CloudCherry’s Customer Experience Management Analy�cs Pla�orm provides a solid cloud hosted solu�on to store terabytes of data based upon NoSQL datastore for real-�me retrieval on demand.
NoSQL databases were developed from the ground up to be distributed, scale out databases. They use a cluster of standard, physical or virtual servers to store data and support database opera�ons. To scale, addi�onal servers are joined to the cluster and the data and database opera�ons are spread across the larger cluster. NoSQL databases are built to tolerate and recover from failure making them highly resilient.
Data Ownership & Privacy :
Customer data belongs to you, CloudCherry’s staff does not have access to customer accounts, unless customers share their login/password for assistance in setup or support.
Storage Security :
CEM Pla�orm is deployed upon Microso� Azure, with NoSQL cluster on a private VNET (virtual network not accessible to general internet) and Azure has been validated for PCI-DSS Level 1 compliance.
Transmission Security :
All API endpoints use HTTPS Secure Protocol with Extended Valida�on(EV), the EV SSL Cer�fica�on is 2048 bit key, with public key signed by GeoTrust using SHA-256. Sensi�ve API Calls are SSL enforced(where it refuses to connect unencrypted), while rest of the call connect in both encrypted and normal mode providing control and choice to the business users.
Infrastructure, Network, PaaS Security Safeguards:
All Security safeguards and reliability assurances of Microso� Azure Apply to CEM PaaS, Refer to Azure Security, Privacy, and Compliance Whitepaper to learn more. ( )h�p://go.microso�.com/fwlink/?linkid=392408&clcid=0x409
è Performance Benchmarks
Performance Benchmarks
SDL development has kept CEM Pla�orm responsive, each and every line has been carefully chosen to be efficient and secure, en�re code base has been performance op�mized and benchmarked before deployment, below is a sample snapshot of total response �mes from the pla�orm API end point to a sample test loca�on.
API Endpoint : api.getcloudcherry.comRegion : Singapore
Benchmark Test Loca�on : Bangalore, India ( Latency to SG ~ 60ms )
è Consumer Analy�cs Data API
Ac�on Ac�vity Response Time*
Get Ques�ons Request from Browser via SSL to API 96 ms
Post Response Post Survey Response via SSL to API 102 ms
Analy�cs Full Analy�cs Summary via SSL 263 ms
External Ref 1 Sending one line email from gmail(SSL) 788 ms
External Ref 2 Clicking one item Checkout on Flipkart 406 ms
* Includes 60 ms in latency1 Seconds = 1000 ms
Lower is Be�er
Customer Experience Measurement & Analytics API
API provides full access for integra�on into external applica�ons and workflow or to access your data when you want, how you want.
What can I do with API ?
The API consists of REST Calls that enables you to make use/integrate/improve every func�on that is possible on the official app & official web insight center.
Ÿ Setup/manage ques�onnaires for data collec�onŸ Gather & collect feedback data using APIŸ Issue unique tokens with bills(PoS Integra�on)Ÿ Sta�s�cally analyze collected data & generate reportsŸ Add & manage real-�me no�fica�ons & se�ngsŸ Export reports or analysis or raw dataŸ Setup/Manage Sub-Users & Roles
API Language Compa�bility : C/C++, Objec�ve-C, Swi�, C#/.NET, JavaScript, Java, PHP, Ruby, PythonOS Compa�bility : Windows, Linux, OSX, iOS, Android, WindowsPhone
èAPI Access & Authoriza�on
API Client
Bearer TokenAuthorizationService
Account Management
API Consumer
Auth Request
Cherry API Provider
Token Issue
Œ
�
SettingsQuestionsAnswersCDM/Insight
APIServices
Token + RequestŽ
Response�
AUTHENTICATION
PUT/GET/DELETE
Cherry API Request - Response Flow
{ "userName": "demo", "hasRegistered": true, "loginProvider": "bearer"}
API Live Explorerè
API Access & Authorization
Accessing API requires :
Ÿ Valid/Ac�vated Cloud Cherry AccountŸ Ac�ve Pay Per Response PlanŸ Login To Dashboard or/& update se�ngs before accessing API
There are 2 authen�ca�on methods for the API: HTTP Basic authen�ca�on and OAuth2. The easiest way to authen�cate is using HTTP Basic authen�ca�on. Enter your username and supply your password or API Key as the password. Star�ng much more secure oAuth2 is similar to obtaining a one-�me pass to a conference hall with many talks going on, you need to produce your id only once at the entrance to be en�tled for entering any room, this pass(here token) iden�fies your account without needing to verify id(here login/password) at every rooms entrance(here your REST Service call)
Example Basic Auth :curl -u <USERNAME> h�ps://api.getcloudcherry.com/api/ques�ons
è Ques�onnaire Management Using API
Sample oAuth2 Authentication Call :
POST https://api.getcloudcherry.com/api/LoginTokenContent-Type: application/x-www-form-urlencodedBody : grant_type=password&username=<USERNAME>&password=<PASSWORD>
{ "access_token": " ",61Abkh.. "token_type": "bearer", "expires_in": 86399, "userName": "<USERNAME>", "email": "<YOUREMAIL>", "primaryRole": "User", "managedBy": "<USERNAME>", ".issued": "Sun, 29 Jun 2014 12:56:04 GMT", ".expires": "Mon, 30 Jun 2014 12:56:04 GMT"}
Retain the for rest of session(or until .expiry) to use for making every other API call,"access_token" add header “Authorization: Bearer ” to every further API request to be identified as {access_token}authorized.
Res
po
nse
Req
ues
t
Questionnaire Management Using API
Survey ques�onnaire can be setup and managed using the API, including func�on such as :
Ÿ Create 25+ Different Type of Ques�onsŸ Setup condi�onal ques�ons based on �me, place, date or on answer to another ques�onŸ Re�re/update/delete exis�ng ques�ons
è Ques�on Structure
Sample Call to Retrieve Questions List :
GET https://api.getcloudcherry.com/api/questionsContent-Type: application/json
Response is a array with questions(if they exist in the account), below is a sample response with a single question
[{ "id": "53621..", "user": "<USERNAME>", "setName": null, "sequence": 2, "text": "How would you rate our staff", "displayType": "Select", "multiSelect": ["Evil", "Average", "Attentive", "Superheroes"], "staffFill": false, "displayLocation": null, "userWeight": 2.0, "cdmWeight": 0.0, "conditionalToQuestion": null, "conditionalAnswerCheck": null, "conditionalNumber": 0, "analyticsTag": null, "isRequired": false, "questionTags": ["Staff"], "goodAfter": null, “goodBefore": null, "timeOfDayAfter": null, "timeOfDayBefore": null, "isRetired": false, "note": null} .. ]
Res
po
nse
Req
ues
t
Question Structure
Ques�ons are represented as JSON when request type is for “applica�on/json” or XML when reques�ng call specifies “applica�on/xml”, both the formats represent the same informa�on fields. Each ques�on is iden�fied with a unique iden�fier assigned by the API on crea�on, this unique id is used to reference the ques�on for modifica�on.
è Create Your First Ques�on Using API
setName : Optional group name for group questionssequence : Order this questions will be displayed to usertext : The main text of the question for query to userdisplayType : Question is displayed and accepted for input as one of the choices Select - Choose one item from list of items(less than 5 choices) Dropdown - choose one item from list of items displayed as drop down(for more than 5 choices) MultiSelect - choose more than one item from list OrderBy - Order a list of item according to priority or importance Star-5 - Rating using 1 to 5 Stars Smile-5 - Rating using 1 to 5 Smiles Like-5 - Rating using 1 to 5 Likes Text - Accept a single line of text MultilineText - Accept a multiple lines of textmultiSelect : Choices valid for a selection or dropdown as a array of stringstaffFill : Questions reserved for surveyor/staff to prefill before handing the data collection over to surved user.displayLocation : Array of locations where the question is only valid for displayuserWeight : Analytics weight for importance of answer to this question, 1 = 1xconditionalToQuestion : Optional id of the question this depends uponconditionalAnswerCheck : Array of conditional check answers(when text) or an single operator(when number), operators for comparison on numeric answers are [ 'eq' ] for equal to / [ 'lt'] for less than / [ 'gt'] for greater thanconditionalNumber : Numeric answer that the conditional answer check operator(eq/lt/gt) is applied on.isRequired : Optionally force user to answer, and do not skipquestionTags : Tags set for user to filter using(ex: “Staff” for questions on performance of staff)goodAfter : Optional Date after which the questions is good to be displayed aftergoodBefore : Optional Date after which the questions should not displayed aftertimeOfDayAfter : Optional time of day after which the questions is good to be displayed aftertimeOfDayBefore : Optional time of day after which the questions should not displayed afterisRetired : Optionally do not display this question anymore but keep the data collected so farnote : user note to add context
Qu
esti
on
Dat
a S
tru
ctu
re
Create Your First Question Using API
Fresh ques�ons can be created using API by pos�ng informa�on that the ques�on will use in the format of the ques�on data structure, all fields that are needed are only essen�al, any un-used or later for use fields can be skipped during crea�on, these will take the default values.
è Update a Ques�on
Sample Call to Create New Question:
POST https://api.getcloudcherry.com/api/questions/addContent-Type: application/json
Body :{ "setName": null, "sequence": 11, "text": "Sample Question", "displayType": "Text", "multiSelect": [], "StaffFill": false, "displayLocation": [], "userWeight": 1, "cdmWeight": 1, "analyticsTag": null, "isRequired": false, "isRetired": false, "goodAfter": null, "goodBefore": null, "timeOfDayAfter": null, "timeOfDayBefore": null}
Response : Successful addition will return the complete question with a API assigned id, using which the question can be referenced going forward.
{"id":"53bd1fd..","user":"demo",“displayType":"Text" .."}
Res
po
nse
Req
ues
t
Update a Question Using API
Exis�ng ques�ons can be updated using API by pos�ng changed informa�on that the ques�on will use in the format of the ques�on data structure, use a copy of exis�ng ques�on containing the unique ques�on ID as obtained from the API to apply the changes required before pos�ng it back to the API.
Update Func�ons: Modify Content Displayed, Change Answer Type, Add Condi�ons, Set Tags, Set Analy�cs Weights, Re�re
è Delete a Ques�on
Sample Call to Update Existing Question:
POST https://api.getcloudcherry.com/api/questions/update/{question_id}Content-Type: application/json
Body :{ "id": "53bd1fd...", "user": "demo", "setName": null, "sequence": 11, "text": "Sample Question 1", "displayType": "Text", "multiSelect": [], "staffFill": false, "locationSpecific": null, "displayLocation": [], "userWeight": 1, "cdmWeight": 1, "conditionalToQuestion": null, "conditionalAnswerCheck": null, "conditionalNumber": 0, "analyticsTag": null,}
Response : Successful modification will return complete modified question for verification.
{"id":"53bd1fd..","user":"demo","text": "Sample Question 1",}
Res
po
nse
Req
ues
t
Delete a Question Using API
Exis�ng ques�ons can be deleted permanently during tes�ng or when not required.
Once a ques�on is deleted all references connec�ng it to responses already collected specifically to this is lost, to retain specific answers while archiving a ques�on, set it to re�re the ques�on via a update instead of dele�ng, re�ring ensures data con�nuity & flow over decades as answers from ques�ons that existed in past(now re�red) will show up only when retrieved for that specific �me period.
è Response Management Using API
Sample Call to Permanently Delete Existing Question:
GET https://api.getcloudcherry.com/api/questions/delete/{question_id}Content-Type: application/json
Response : True or False
Res
po
nse
Req
ues
t
Response Management Using API
Survey responses collected can be managed using the API, including func�on such as :
Ÿ Retrieve all collected responsesŸ Filter collected responses by �me frame, loca�on or answered asŸ Archive responses to be excluded from analy�cs summaryŸ Delete responses that are not required permanently
A single response is a collec�on of answers from a single respondent/person, each response structure contains all the answers that were collected for the ques�ons displayed.
è Filtering Data Using API
questionId : Unique ID of the question the answer is for questionText : Text of question displayed while collecting the answertextInput : Text Answer when provided by usernumberInput : Number Answer when provided by user
id : Unique ID of the response assigned by API, use this to access this response for modificationlocationId : Optional Location where this response was collected, if locations have been setupresponseDateTime : Time Stamp of response collection in ISO-8601 format(YYYY-MM-DDTHH:mm:ss.sssZ)archived : Status of response, set when it is archived to exclude from analysisnotes : Any internal notes associated with this responseresponses : Array of Answer Structure(as above) [ , ]
An
swer
Answer
Res
po
nse
Answer
Filtering Data Using API
Finding the needle in the haystack, especially a big hay stack requires fine grained filter control, and this is provided by the API so business users can narrow data sets to exactly what they require than retrieve the en�re haystack to find it themselves.
Ÿ Match for responses collected at loca�on(like downtown only)Ÿ Match for responses collected at a�er or before dates, or a�er a certain �me of day or before(like
evening in downtown)Ÿ Match responses collected during a specific day of week(like sunday evenings in downtown)Ÿ Match for responses collected that contains a specific answer(like sunday evenings in downtown
responses from first �me visitors who answered yes to their first visit ques�on)
è Retrieve Filtered Responses Using API
location : Array of String Of Locationsafterdate : DateTime after which the response was collected, ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ)beforedate : DateTime before which the response was collected, ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ)filterquestions : Match responses that contain a specific answer, array of responses matches, similar to conditional question matching [{ "questionId": Unique question ID to match answer with "questionText": text of question, so API knows its real "answerCheck": Array of conditional check answers(when text) or an single operator(when number) operators for comparison on numeric answers are [ 'eq' ] for equal to / [ 'lt'] for less than / [ 'gt'] for greater than "number": Numeric answer that the conditional answer check operator(eq/lt/gt) is applied on. },..]archived : Match archived(true) or normal(false),days: Match responses collected during specific days of week, Array of Number(Monday = 1, Sunday = 6)aftertime : Time of Day after which the response was collected, ISO-8601 format(YYYY-MM-DDTHH:mm:ss.sssZ),beforetime : Time of Day before which the response was collected, ISO-8601 format(YYYY-MM-DDTHH:mm:ss.sssZ)
Filt
er S
tru
ctu
re
Retrieve Filtered Responses Using API
Responses can be retrieved from API by pos�ng a filter specifica�on for matches to be performed.
Sample Data Retrieval Using a Filter Specification:
POST https://api.getcloudcherry.com/api/answersContent-Type: application/jsonBody :{ "location": [ “Downtown” ], "afterdate": "2014-06-10T07:00:00.000Z", "beforedate": "2014-07-10T06:59:59.999Z", "filterquestions": [], "archived": false, "days": [1, 2, 3, 4, 5], "aftertime": "2014-07-09T22:12:03.140Z", "beforetime": null}
Response : Array of Response Containing Answers[{ "id": "52c7d3437c1e0c12ac50e538", "user": "demo", "locationId": "Downtown", "responseDateTime": "2013-12-30T09:24:19.839Z", "responses": [ { "questionId": "53621e417c1e0c0ad41ce051", "questionText": "How would you rate our staffs", "textInput": "Superheros", "numberInput": 0, }, ]},..]
Res
po
nse
Req
ues
t
è Retrieve Analy�cs Using API
Retrieve Analytics Using API
Detailed Analy�cs Per Loca�on can be retrieved from API by pos�ng a filter specifica�on for matches to be performed.
Sample Analytics Retrieval Using a Filter Specification:
POST https://api.getcloudcherry.com/api/AnalyticsByLocationContent-Type: application/jsonBody : Filter Spec
{ "all Locations": { "locationName": "All Locations", "perDayResponseCount": [27,32], "mdm": 83, "totalResponses": 59, "locationSummary": [{ "askedQuestion": { "text": "Rate Your Coffee Strength", "displayType": "Star-5", }, "response": { "5": 19, "4": 4, "3": 3 } }..., "wordCloud": ["good", ""delicious"], "liked": "Colors", "disliked": "Music", "netPromoter": { "questionText": "Would you recommend our Cafe to family and friends", "promoters": 76, "passive": 14, "detractors": 10, "netPromoters": 66 }, "npsAnalytics": { “detractors": "Speed" }] }}
Res
po
nse
Req
ues
t
è Mul�ple Channels Surveys Using API
Multi-Channel Surveys Using API Tokens
Businesses are mul�faceted and customer interac�on happen at many levels, making it essen�al to aggregate data from very different channels to arrive into one screen for analysis. Survey tokens enable presen�ng single survey on any channel while enabling customizing per user using built-in pre-fill data.
A typical token is composed of just few characters but enables embedding survey ques�onnaires with preset data(known as staff-fill on tablet mode) and have set life�me (one use, mul� use, valid a�er, valid before).
Using Survey Tokens Enables
Ÿ Tablet to use Token in-place of login/password for survey staff.Ÿ Collect customer feedback over a web survey (ex. on your own website)Ÿ Collect customer feedback over a email (ex. a�er a hotel checkout or service interac�on)Ÿ Trackable surveys by individual responders using single-use tokens per customer over API to get
unique URL per customer.
è Create Your First API Survey Token
User : API access username, questionnaire set for this user will be presentedNote : Note on use of token(ex. “For email to customers”)PreFill : Optional Pre-Fill to include(For speed or to later track response to a unique customer).PreFillViaAPICallBack : Optional automated API End point to obtain pre-fill from.ValidTill : DateTime after which responses are not accepted, ISO-8601 format(YYYY-MM-DDTHH:mm:ss.sssZ)ValidUses : # of responses that are accepted(can be one time use or any number set)Location : Select questionnaire from this location if setRewardCode: Text/HTML to email for response back to surveyed userEmailQuestion : QuestionID which collects a email address to email the RewardCode or thank you
(Web Only)CityQuestion : Prefill City Name to this question from which the survey was submittedStateQuestion : Prefill State Name to this question from which the survey was submittedRegionQuestion : Prefill Region Name to this question from which the survey was submittedSamplingMode : When Set, will pick random question(s) to present on every survey.PerSamplePresent : This many questions per sample are presented.
MicroCampaign : Online Micro Survey Control(see CloudCherry 360 for more information)
Su
rvey
To
ken
Str
uct
ure
Create Your First API Survey Token
Fresh and unique tokens per specific survey or even specific to surveyed customer can be created using API by pos�ng informa�on that the survey token will use in the format of the survey token data structure, all fields that are needed are only essen�al, any un-used or later for use fields can be skipped during crea�on, these will take the default values.
è Get Survey For Presenta�on Using Token
Sample Call to Create New Survey Token :
POST https://api.getcloudcherry.com/api/surveytokenContent-Type: application/json
Body :{ "preFill": [{ "questionId": "53d10eea3ec2411e8c1baa36", "questionText": "Enter your customer number", "textInput": null, "numberInput": 2345, }], "validTill": "2014-10-31T18:30:00.000Z", "validUses": 1, "location": “Downtown”, "rewardCode": "Thank you for letting us improve our service", "emailQuestion": "53d10eea3ec2411e8c1baa3c", "note": "Email After Service Interaction #23456"}
Response : Successful addition will return the fresh token being assigned by API ready for use in web/email (ex. http://CloudCherry.net/DM-21988).{ "id": "DM-21988", "user": "demo", "note": "Email After Service Interaction #23456",}
Res
po
nse
Req
ues
t
Get Survey For Presentation Using Token
Survey with complete ques�onnaire including ac�ve ques�ons, theme, colors, logo & texts can be retrieved for presenta�on on a custom applica�on or device for response collec�on.
Pre-fill provides method to personalize tokens, if set while crea�ng a token, will be available to enable custom response collec�on client to skip presen�ng pre-fileld ques�ons to the responder.
è Submit Response Using Mul�-Channel Token
Sample Call to get Survey By Token:
GET https://api.getcloudcherry.com/api/surveybytoken/DM-21988
Content-Type: application/json{ "logoURL": "https://az592622.vo.msecnd.net/users/demo/logo.png", "backgroundURL": null, "businessName": "Café Beta", "businessTagline": "Brewing the Best - Always", "colorCode1": "#F70D11", "colorCode2": "#CECECE", "colorCode3": "#FFFFFF", "welcomeText": "Welcome to customer satisfaction questionnaire", "thankyouText": "Thank you for sharing your views", "questions": [{ "id": "547ef14d44ed4d230088b989", "sequence": 1, "text": "Rate Our Coffee Variety", "displayType": "Smile-5", ... }, { "id": "547ef85e44ed4d230088b9b1", "sequence": 2, "text": "Rate Effectiveness Of: Barista", "displayType": "Star-5", ... }], "preFill": null}
Res
po
nse
Req
ues
t
Submit Response Using Multi-Channel Token
Responses once collected using a token survey a�er presenta�on on custom channel/device can be posted back to API pla�orm for Analy�cs and Dashboard Access.
è Prefill Contextual Informa�on Using API For Survey Token
Sample Call to Post a Response after Collection:
POST https://api.getcloudcherry.com/api/surveybytoken/DM-21988Content-Type: application/json
Body :{ "locationId": "Downtown", "responseDateTime": "2015-01-10T10:44:17.455Z", "responses": [{ "questionId": "547ef11244ed4d230088b981", "questionText": "Enter your customer number", "textInput": null, "numberInput": 2345, }, { "questionId": "547f3e0244ed4d1900dc68e3", "questionText": "How can we improve, let us know", "textInput": "Valet parking would be nice for this location", "numberInput": 0, }...],}
Response : Successful addition will return the complete response with a response id assigned by API for further reference.{ "id": "54b1028f8c62c31cf036eaf7", "locationId": "Downtown", "responseDateTime": "2015-01-10T10:44:17.455Z",}
Res
po
nse
Req
ues
t
Prefill Contextual Information Using API For Survey Token
Adding the context to data provides great benefits by integra�ng experien�al data with transac�onal data to derive ac�onable analy�cs that can significantly impact the bo�om line for the business collec�ng customer data. Contextual informa�on can be automa�cally pre-filled using a API end-point(as oppose to a staff filling it manually); API end point setup by you will receive the complete response on submission and respond back with pre-fill data to make the response more complete
è Real-�me Push No�fica�on on API
Sample Call Posted after a Response is Collected:
POST http://yourserver.com/api/receiverespondjsonprefillContent-Type: application/json
Body :{ "locationId": "Downtown", "responseDateTime": "2015-01-10T10:44:17.455Z", "responses": [{ "questionId": "547ef11244ed4d230088b981", "questionText": "Customers’s purchase value(Staff-Prefill)", "textInput": null, "numberInput": 0 }, { "questionId": "547f3e0244ed4d1900dc68e3", "questionText": "Enter your bill number", "textInput": null, "numberInput": 1234, }...],}
Sample Prefill Returned By Your API Endpoint:Response : You can lookup information to pre-fill on your side to match that of any filed provided by customer(ex. mobile #, bill #) and provide pre-fill data to add context to this survey response. ( shown is a prefill of adding transaction value using the bill number which could have been pre-filled by the sales clerk; other example pre-fills could be demographics using a membership number)[{ "questionId": "547ef11244ed4d230088b981", "questionText": "Customers’s purchase value(Staff-Prefill)", "numberInput": 100,000}]
Yo
ur A
PI R
esp
on
seJS
ON
AP
I Res
po
nse
PO
ST
Real-time Push Notification on API
Real-�me no�fica�ons set with any criteria filter or even for every response(when criteria set is generic match-all such as ‘Any Ra�ng : Less Than 6’) collected can be forwarded to your own API for further processing, for example you can react to a real-�me ra�ng event from a customer in store that needs to be further pushed using your central CRM for ac�on from the right call center staff.
Set the URL of the controller/script that can receive the complete answer as JSON POST by crea�ng a new no�fica�on in the dashboard, with the URL as the target(in-place of email des�na�on), this will trigger no�fica�on to your server.
è Single Sign-On(SSO) Automa�c Login
Sample JSON POST to your Server/API/Code:
POST http://yourserver.com/api/receivejsonContent-Type: application/json
Body :{ "notification": "Answered With Less Than 12", "answer": { "LocationId": "Downtown", "ResponseDateTime": "2014-12-20T14:34:08.426Z", "Responses": [{ "QuestionId": "547ef11244ed4d230088b981", "QuestionText": "Rate The Service You Received", "TextInput": null, "NumberInput": 3, }, { "QuestionId": "547ef11244ed4d230088b982", "QuestionText": "Would you like us to contact you", "TextInput": “Yes”, "NumberInput": 0, }...], }}
Reply after receive expected by API is a HTTP OK(200), if the API does not receive a successful response from your API or receives a error(404) it may stop sending any more notifications to that URL.
JSO
N A
PI R
esp
on
se P
OS
TR
epo
nse
Single Sign-On(SSO) Automatic Login
Large businesses can enable Role based SSO(Single Sign On) for their users who are already authen�cated by their intranet/website or email system or so�ware such as CMS/ERP/CRM/PoS; SSO prevents duplica�on of effort to create and maintain o�en hundreds of username/password profiles for large businesses with many employees.
SSO works by building a informa�on packet(JSON) with the authen�cated user’s informa�on and then encryp�ng the packet to obtain a SSO token that can be passed on to CloudCherry API for automa�c login.
è Across-Channel Survey Delivery Workflow
Rep
on
se
{ "Userid": "manager", // Unique sub-user/role name(created at sign-on when not existing). "Role": "Manager", // Manager(for All Access) or ManagerReadOnly(For select locations). "Email": “[email protected]"// Verified Email address of user by your system. "Locations": [], // Optional list of locations to lock ‘ManagerReadOnly’ into. "TimeStamp": "2015-04-26T19:10Z" // Current Time UTC ISO-8601 format.} [ ]Download Sample Token Generation Snippet.NET : // json is as above, account is primary username, ssokey as set in primary account settings String token = GetSSOToken(json, account, ssokey); Java : String token = GetSSOToken(json, account, ssokey);
Redirect browser to : https://api.getcloudcherry.com/#/login?sso={account}&ssotoken={token}
API will automatically create the account when non existed, or modify existing sub-user roles as per the User Info JSON and drop into Dashboard with specific permission set; here on, user can set-up/customize the views, reports or execute analytics drill-downs as a normal subuser would do.
Use
r In
form
atio
n
Your User
Œ
Logs-in
Your Corporate Site/Email/CMS/ERP/CRM
/PoS
{JSON}
SSO Token
Automa�callyLogged-in
Redirect to CC
h�ps://api../?ssokey
GenerateEncrypted SSO Token
� Ž
En
cryp
ted
To
ken
Across-Channel Survey Delivery Workflow
Fully Managed Global Survey Delivery Pipeline
Global delivery plans enable delivery of personalized experiences across channels using powerful workflows that can be configured once and then securely re-used across �me within your own transmission channels, for instance, mobile app push no�fica�ons or even to operate highly secure zero knowledge survey invites CEM program.
è Channel Comparison Matrix
"Description" : "You are receiving this as you are a customer of acme corp", "UniqueCustomerIDByPreFilledQuestionTag" : "RealtionshipNo", “RemindOnlyAfterOpenDays”: 1, "Schedule" : [ { "OnChannel" : “email://" "Subject" : "Hello!", "TextBody" : "Hello,\nPlease share your experience,\nFill out our survey at *|Survey URL|*" }, { "OnChannel" : “sms://twilio" "TextBody" : "Don’t keep us waiting,\n*|Survey URL|*\nHelp us deliver a great experience every time!.\nOptout: *|Unsubscribe URL|* " }, { "OnChannel" : “json://mobile-push" "TextBody" : "Never stop improving\nHelp us deliver a great experience every time!. ", “DelayByDays” : 3 } { "OnChannel" : “mircocherry://” } ]
Del
iver
y P
lan
*Survey TokenCreated(w/ Delivery Plan Id)
1 Day Later(a�er email open)
Text/SMS@ Email
Don’t Keep us wai�ng,h�p://nps.bz/DM-XYZHelp us deliver a great ..
Shown for 30 Days
Push Note
9:15 AMYour Mobile App
Never stop imorvingHelp us deliver a great experienceevery �me!. è
One question for youHow likely would you recommend us to your friends and family ?
...
0 1 2 3 4 5 6 7 8 9 10
Not at all Maybe Yes,Sure!
One question for youHow likely would you recommend us to your friends and family ?
...
0 1 2 3 4 5 6 7 8 9 10
Not at all Maybe Yes,Sure!
One question for youHow likely would you recommend us to your friends and family ?
...
0 1 2 3 4 5 6 7 8 9 10
Not at all Maybe Yes,Sure!
3 Days Later(on no response)
In Next 30s(invited for survey)
Website
Across Channels(15+)
+Delivery Reminders Thro�ling+ Analy�cs+w/o PII (Any pseudo iden�fier)
(DND Checked)(Bounce Checked) (Unsub Checked)Any Channel/Per Customer
(Unsub Checked)Any Channel/Per Customer
Channel Comparison
Channel Using Go Live Effort Works Great For
In-Person Tablet Device None - Signup w/ TestDrive Data In-Store, In-Branch, On-site, At-Desk, At-Resturant
Online Website Minimal - Add URL To Site Business Website
Click Link
SmartPhone
Pen & Paper
Telephone(PSTN)
Mobile Phone
After Service Interaction, After Visit/Checkout
High Footfall Areas Such as Counters, Events, Conference, Airports, Railway Stations, Malls
Offline with Zero Technology
Fully Automated Contests, Product FeedbackOr Anonymous Staff/Employee Tip Off Lines
Radio Ad Measurement ( SMS XYZ to YZX )
None - Copy URL To Email
None - Print Poster
None - Print Survey
None - Copy Phone PIN & Call
Minimal - Connect To Raspberry
Voice
Email Outgoing None-Copy Signature Token Image Passive Experience Measure, Ticketing Or Staff
Paper Survey
QR Code
SMS/Text
eSignature
Œ
�
Ž
�
�‘
’
}
See “Create Your First API Survey Token”See “Retrieve Filtered Responses Using API”
1
2
API Call
API Call
API Calls Large - Multiple API Calls Complete Product Integration
Privacy Protected Yet Trackable Using Pre-fill Data
Enterprise Analytics/One Screen/Real-time
Little - Single API Call
Little - Single API Call
API Survey Token
Excel Sheet Minimal - Paste Into Excel Import Existing Data Collection
API Data Pull/Push
API Data Import
API Complete
1
2
”12
”10
”11
Intern
et Free
Online/Browser Minimal - Add JS URL to Header Online Contextual, eCom, Lead Gen & ConversionMicroSurvey
”13
Mo
bile
CE
M A
PI
Email Incoming None-Setup Forwarding Email Text Analytics For Support Email Id’sEmail Incoming“
”14
Twitter None - Enter Twitter @username Social Media Sentiment Map/#Event SentimentSocial Listening”15
14th Jan [email protected]
POS Staff
Store Token: CC-23456Would you like to fill a survey ?
Sure, Show me now
Op
�o
nal
C
om
ple
te P
re-F
ill(e
x: v
alu
e, b
ill #
, m
emb
ersh
ip #
)
No, Email/ No SMS Me
Customer
In-Store/Location - Service Experience Survey
Would you like to take our short experience survey while we complete
your billing ?
Emailed : Please Take our survey hereh�p://CloudCherry.net/CC-23456
Survey Pattern #1
Pre-fill Contextual Info Using API(Whitepaper Page #22)
�
POS/CRM/Database
At Home/Office or On Mobile Survey
Comple�on
Pre-fill Contextual Info Using API(Whitepaper Page #22)
Op�onal Op�onal
ŒCustomer
For Billing
POS Staff
ŒCustomer
For Billing
Bill w/ QR Survey
Op
�o
nal
P
OS
Pre-
Fille
dU
niq
ue
Toke
nIn
clu
din
g va
lue,
bill
#,
pu
rch
ase.
Customer
Post Purchase Product/Sevice Experience Survey & Loyalty Incentive
Survey Pattern #2
At Home/Office or On Mobile Survey
Comple�on
Scan QR code on your phone to complete a short ques�onnaire
5% Off on Your Next Order
Or visit h�p://CloudCherry.NET/RK-61952
******
Bill 23456 Apr 4th 2016
1. Cappuccino x2 $10
Café Beta
SubTotal $10Service Charge $2Amount Due $12
Emai
led
: Yo
ur
Dis
cou
nt
Co
de
: NX
T5O
FF(e
nh
ance
rep
eat
sale
s)
�
One question for youHow likely would you recommend us to your friends and family ?
0 1 2 3 4 5 6 7 8 9 10
Not at all Maybe Yes,Sure!
One question for youHow likely would you recommend us to your friends and family ?
...
0 1 2 3 4 5 6 7 8 9 10
Not at all Maybe Yes,Sure!
One question for youHow likely would you recommend us to your friends and family ?
...
0 1 2 3 4 5 6 7 8 9 10
Not at all Maybe Yes,Sure!
ŒEngaged Customer
Post ac�vity trigger :
Customer
Online Website/Purchase Experience Survey ( MicroCherry )
Survey Pattern #3
One question for youHow likely would you recommend us to your friends and family ?
...
0 1 2 3 4 5 6 7 8 9 10
Not at all Maybe Yes,Sure!
- Page Visit- Page Scroll- On Checkout- About to leave- Delayed- Sampled Traffic
One question for youRate the area you see we need to improveupon ?
... One question for you
Thank you!
Your 10% Coupon Code is : NXT50
...
Variety
PriceSpeed
Find out how you can convert your detractors
Encourage Promotersfor Repeat Sales
Qu
ery
On
ly D
etra
cto
rs(<
7)
Unobtrusive Disappears in few seconds
on no-interaction
Œ
Tailored Unique Identified Customer Survey
Survey Pattern #4
�
xyz40-45Interested to know op�ons on Member # 23458
xyz40-45Interested to know op�ons on wealth management
xyz40-45Interested to know op�ons on Member # 23457
xyz40-45Interested to know op�ons on wealth management
xyz40-45Loca�on : DowntownFavorite : BlueMember # 23456
Your opinion matters! Visithttp://CloudCherry.net/CC-23456
Customer Database
API </>
Query Your Customer Databasefor specific informa�on on file,so as to not make your customerfill what you already know.
Pre-fill Contextual Info Using API(Whitepaper Page #19)
Unique Token - Single UseToken : CC-23456
Customer
Email/SMS Survey URL :
APIClient.AddSurveyToken(token);
w Send Unique Token Survey URL using Email/SMS/Print QR
Complete Response
Rate the area you see we need to improveupon ?
Variety
PriceSpeed
xyz40-45Loca�on : DowntownFavorite : BlueMember # 23456
FIL
LE
DN
OT
FIL
LE
D
At Home/Office or On Mobile Survey
Comple�on
xyz40-45Interested to know op�ons on wealth management
xyz40-45Interested to know op�ons on mutual funds
ŒInquisi�ve Target Customer
Customer
Qualified Sales Lead Generation/Digital Marketing Survey
Survey Pattern #5
Completes Survey to
- Obtain Research Report- Personalized Recommenda�on - Par�cipate in Sweepstakes - Compe��on - Research Study
Your BannerAd
Your CorporateWebsite
Your BrandFacebook Page
Your BrandTwi�er Page
OnlineAd Spots
Online Channels
Enter our Sweepstakes to win a iPadhttp://CloudCherry.net/CC-23456
Select your age group
DemographicsInterestsFinancialsContact Details
25-30 30-40 40-55
xyz40-45Interested to know op�ons on wealth management
xyz40-45Interested to know op�ons on re�rement planning
xyz40-45Interested to know op�ons on wealth management
xyz40-45Interested to know op�ons on wealth management
Qualified Sales Leadsw/ Consent to Contact
for your sales team to work on.
Email : Click here for your PDFThank you for entering�
Drill-down, Slice & Dice Prospects
Customer Success Assist
Need To Know How-to X Noticed a Bug Got a Idea/Feature Suggestion
- How to send a email survey ?- How to create loca�on specific ques�onnaire ?
Exa
mp
le - Excel download is showing incorrect date- Logo upload fails to update
Exa
mp
le - How about Role based views ?- Would be awesome to set exit text based on last ques�on!
Exa
mp
le
RESOLUTIONHOW TO SUGGESTION
Checkout CloudCherry HowTo’s Online at getcloudcherry.com/howto
to get to know step-by-step guide achieving specific tasks.
RE
CO
MM
EN
DE
D
Open a support �cket with the specific issue by emailing :
- Descrip�ve Issue- How to replicate this- Screenshot if possible
Note : CloudCherry tech staff do not have access to customer accounts/data unless you provide them your creden�als.
SU
PP
OR
T T
ICK
ET
Dashboard > Ideas & Features
Suggest ideas and features or new use-cases for considera�on to be added into CloudCherry’s new features road-map to make it realized.
FE
AT
UR
E R
EQ
UE
ST