How to send surveys from Puzzel IVR

The following section outlines how to send surveys created in Puzzel Customer Insight via sms links, using Puzzel IVR.  

The instructions apply to: 

  • Admins with Callflow/ Scripting permissions who are trained and certified by Puzzel   
  • Puzzel Implementation Teams 
  • Support Teams 
  • Sales Engineers  
  • Solution Architects  
  • Trained Partners  

To send the survey you will need to access the Survey Editor in customer Insight and copy the Survey ID.  

You can find the Survey ID by following the steps below: 

  • Go to the Admin Portal main menu   

  • Click on Insight 

  • Select Survey Management 

  • In the Surveys tab, click on the specific survey 

  • This will open the Edit tab 

  • The Survey ID can be found under “General” 

  • Copy the Survey ID by clicking on the copy icon of the field 

Once you have copied the Survey ID, you will then need to modify the call flow to trigger your chosen survey. This is usually done at the end of a call, for example in the “finally” section of the callflow.  

Example code using rest tag and json body:   

<assignlocal variable="surveyId" value="2b156ca0-7562-4f2e-b851-e51f0bc27647"/>
<!-- Survey Language (optional). Default en if not assigned -->
<assign variable="survey_language" value="sv" />
<!-- Define survey_expiry if you want it to not be the default 3 days -->
<!-- <assignlocal notexpression="§exist{survey_expiry}" variable="survey_expiry" value="$dateadd(system_datetime,day,3)" /> -->
<include src="/Common/CustomerInsight/SendLink.xml"/>

Here is an example of the request payload sent through SendLink.xml:

                "clientReference": "$(system_session_id)",  
                "expiryTime": "§{survey_expiry}",  
                "userSessionVariables": [  
                    "key": "agentId",  
                    "value": "$(system_last_user_id)"  
                    "key": "queueKey",  
                    "value": "$(system_queue_key)"  
                    "key": "consumerChannel",  
                    "value": "Phone"  
                    "key": "consumerSession",  
                    "value": "$(system_session_id)"  
                    "key": "consumerPhone",  
                    "value": "$(system_caller_ano)"  
                    "key": "systemCountry",  
                    "value": "$(system_country)"  
                "identifier": "$(system_caller_ano)",  
                "identifierType": "Phone",  
                "channel": "SMS",  
                "language": "$(survey_language)",
                "content": "Click the link to give your feedback."

The userSessionVariables can contain any key/value information which can later be used in reporting and visualisation of the results.   

We strongly recommend the use of the following standard key/values at a minimum for the results to be useful especially for performance management (agentId and queueKey are essential).  

All keys are optional except agentId, queueKey which are mandatory for Performance Management integration.  

Key nameDescription
consumerEmail  Email address of consumer 
consumerPhone  Phone number of consumer  
consumerChannel  Channel used in the request (SMS, Phone, Web, Email, Social etc.)  
consumerSession  Identifier for session that handled the request
queueKey  Identifier for contact centre queue that handled the request  (required for Performance Management)
agentId  Identifier for contact centre agent that handled the request  (required for Performance Management)
userGroupId  Identifier for contact centre user group that handled the request  
systemCountryAccess number country code needed for statistics (applies to Puzzel IVR / CFT use cases)


The ExpiryTime, which determines the validity of a survey session sent to a user, if undefined, is 3 days. The ExpiryTime information will need to be defined for a different duration. 
Please note that where a survey is sent via SMS, any messages including questions that are more than 160 characters long will be split into 2 or more consecutive messages depending on the length. This may have an impact on the total message cost.

Where possible use CFT module 'messaging-> survey' to simplify trigerring of surveys as it presents all active suveys from Customer Insight. Choose the Survey and appropriate mechanism type "sendLink" or "sendSurvey"


Last updated