Survey design tips & tricks

Designing your own survey is pretty easy when using Limesurvey. Unfortunately, creating a really bad survey is also pretty easy. That’s why we have set up a list of survey design tips & tricks. Based on our experience with more then 100 survey projects per year the following recommendations hopefully help you designing better surveys.

Motivate users to raise the completion rate

A user being presented with a simple “Please help me by filling out the survey, it will take 10-15 minutes.” will see no benefit in wasting his/her time with this. In such cases an incentive like “All users which fill out the survey completely will be allowed to take part in a lottery and can win one of 5 Amazon vouchers worth 20,00€.” can raise participation and completion rates significantly.

Start with simple questions

A survey should never start with complex questions people have problems answering at all. Instead, place very simple questions like demographic questions at the beginning. Everyone can answer those and they present an easy introduction. Once people have started filling in simple data they tend to finish their work and not closing a survey early.

Questions should be clear

This may sound pretty obvious but for every question make sure it is clear and precise, collectively allowing for detailed, unambiguous and meaningful answers.

Add screening questions to the start

Nothing is more annoying than having completed several questions asking for complex information and being told later that for certain reasons like your age or gender you were suddenly screened out and are not allowed to complete the survey and maybe receive a certain incentive.

If users need to agree to certain terms and conditions or have to be of a certain age or gender you should always place such screen out questions at the beginning.

Add problematic questions to the end

Similar to placing easy questions at the beginning you should place problematic questions (e.g. about illnesses) at the end. People having already completed 80% of your survey will most likely answer such questions as well.

The fewer questions the better

People tend to ask this and that instead of focusing on the really important questions only. Always make sure a certain question is really important. The fewer questions the higher the completion rate!

Use free text questions to ask for additional information

Open questions may reveal unexpected and very worthy additional information. You should add optional text questions at all important parts of the survey, asking users “Is there anything else you want to tell us about XYZ?”. This may lead to important user feedback you would not have received when using closed questions only.

Make sure your questions are non-suggestive

Asking users “What is your opinion about XYZ?” uses neutral speech while a question like “Don’t you agree that LimeSurvey is a really great tool?” is a very suggestive question which will cause users to give more positive feedback.

Only make the most important questions mandatory

Having to complete a survey at which each question is mandatory can be really painful, especially when it comes to complex matrix questions.

When designing a survey you always need to ask yourself “Is this question important enough to make it mandatory?”. Only the questions related to data you really need should be mandatory.

Keep questions and answers short and easily readable

Nothing to add to this…

Note: There is a second blog post “Survey design tips & tricks – Part 2“.

 

BTW, if you are not very familiar with designing surveys but need to create an important one, we can help with that. Our experience can help you at creating a great survey with a high completion rate.
Just drop us a note if we should review your survey or set it up for you.

 

How to use JavaScript at a Limesurvey template or survey

Limesurvey offers a lot of on board features but for certain issues you can add JavaScript to your survey to extend its abilities. Particularly when it comes to on-screen data validation, data filtering, setting default values or any kind of randomization, using JavaScript is the way to go and we have collected several workarounds in the Limesurvey wiki to deal with different problems.
Since some users have problems embedding JavaScript in their surveys, we want to give some examples on the different approaches.

To avoid re-inventing the wheel, Limesurvey makes use of the JavaScript library jQuery. This library is documented very well and we recommend having a look at some tutorials and the official documentation.

If you want to embed any of the jQuery based workarounds, then there should be a

$(document).ready(function())

function in the template.js file of your template where you can add all of this code so that it is only executed after the page is fully loaded. So option 1 to add JavaScript to your survey is to simply place it in the template.js file of your template.

Pros:

  • You don’t need to disable the internal Limesurvey XSS filter if you add the code directly at the template.js file.
  • You can add your code ot the existing $(document).ready(function()).
  • It is very easy to update/modify.

 

Cons:

  • The file is loaded at every page call, so it might cause some overhead if you only need the script for a certain survey question(s).
  • The code will be loaded for all surveys that use the template, so don’t add survey-specific JavaScript to any template which may be used for other surveys, instead create a copy of the template.

 

The second option is to add the JavaScript/jQuery code directly to the affected question or group. This can easily be done by embedding it in the question/group text for which you have to switch to source code view of the integrated editor:
Source code mode of integrated Limesurvey editorFurthermore, you have to disable the Limesurvey XSS filter at
Global settings -> Security -> “Filter HTML for XSS” = “No”.

Once you have done this, you can use the following code snippets. Copy them to the affected question/group text in source code mode and test if the alert message appears:

1. Embedding Javascript

<script type="text/javascript" charset="utf-8">
    alert("Test!");
</script>

2. Adding jQuery code

<script type="text/javascript" charset="utf-8">

	$(document).ready(function() {

		alert("Test!");
	});
</script>

Pros:

  • The code will only be loaded once (for the affected group/question).
  • You can easily have several similar code snippets and just change some IDs in the code without having any overhead.
  • Limesurvey placeholders and Expression Manager tags are parsed.

Cons:

  • You have to disable the internal XSS filter for which requires admin access to the Limesurvey installation.
  • The code will be split over several questions and gets harder to maintain if you add many different script snippets.

 

Pre-filling a text field at Limesurvey 1.92 using default answers and Expression Manager

At Limesurvey 1.92 we implemented default values for several question types that were missing this feature. In combination with the new and powerful Expression Manager, this offers new possibilities. Using the Expression Manager at Limesurvey 1.92 you can now easily populate a text field with data from previous answers.

Let’s create a simple example for demonstrating how it works:

1. Create a text question at Limesurvey and note the question code:
Limesurvey_text_question-question_code
2. Create a second question of the same type and e.g. ask for the email or last name. Again, note the question code

3. At a third text question, where you want to pre-populate the text field with the previously entered texts, click the “Edit default answers for this question” icon:
Limesurvey edit default answers icon

 

 

4. At the field to enter a default value, add the question codes in {…} brackets:
Limesurvey_default_answers

 

 

5. If you then fill in text for the first two questions, the answers should be inserted at the question for which you defined the default value.

 

Things to watch out for:

  • The question for which you set the default answer has to be shown on a following page.
  • When setting a default value use {…} brackets when referring to a question code of a previous question.

More Information:

 

How to restore data from a deactivated Limesurvey survey

You might run into problems if you deactivate your survey at Limesurvey instead of setting an expiry date (which we recommend to restrict access to a survey), because once a survey is deactivated, a backup of the results table “lime_survey_12345” (12345 refers to the survey ID) is created and it is renamed to “lime_old_survey_12345_20120101235959”. The last part of the table name marks the date (2012-01-01) and time (23:59:59) the survey was deactivated.

If you now want to view results, generate statistics or export the response data, you have a problem: Limesurvey doesn’t show any available data because the response table was backed up and renamed.

To get access to the results, proceed as follows:

  1. Activate the affected survey again.
  2. Go to the “Responses & statistics” screen.
  3. Click at the “Import responses from a deactivated survey table” button (see screenshot below).
  4. Choose your source table.
  5. Click the “Import responses” button.

This is how it looks like at the Limesurvey 3.x interface:

Re-import responses from deactivated survey
Re-import responses from a deactivated survey at Limesurvey 3.x

 

And at the older Limesurvey v2.0x versions the option looks like this:

Import answers from a deactivated survey table
Import answers from a deactivated survey table at Limesurvey v2.0x