Can we detect whether participants' computers meet all technical requirements?

Yes, we have a client-side component that can be implemented to check that all technical requirements are met. Please note, when using the checker it should NOT be downloaded to your own servers, but rather will be run from our servers. The full details on our Environmental Conditions Detection API are below.

Environmental Conditions Detection API

Realeyes uses webcams to read peoples facial expressions and behaviour. Although most new devices rolling out already have a webcam,
there is still a notable portion of users who don't have webcams to have their facial expressions read.

This can lead to the following annoying scenarios for users:

  • Spending tens of minutes going through a lengthy screener or survey only to discover they can't do the study because they don't have a webcam when they get to the facial coding part
  • Being routed to studies which require webcams several times in a row and being disqualified repeatedly
  • Being asked to take part in a survey via a web page pop-up even though they couldn't possibly do the study in the first place

And the following scenarios for sample providers:

  • Sample burn
  • Low incidence rates

It's clear that this is an annoyance for the users and causes unnecessary burn for sample providers.

One option is to ask for existence of webcam manually as a separate question, but by our experience running webcam based studies we've noted that this doesn't work well. People sometimes don't even know they have webcams or don't care to answer correctly. This leads to a reduction in the number of people doing the study in the end.

Fortunately, all the capability to do the checks for existence of webcam and other requirements can be fully automated such that it wouldn't require any user intervention whatsoever. This makes it possible to make a quick and transparent check for capability of doing a Realeyes test and only invite or route capable people into the study.

Our Environmental Conditions Detector, a client-side script that uses flash to perform the required checks, is light-weight and easy to insert in webpages or surveys. The environment checker itself is distributed via the Amazon CDN to ensure it loads and executes at speeds which will not affect the user experience.

This component checks that:

  • The respondent is using a compatible web browser
  • The respondent isn't visiting the site from a mobile device
  • The respondent has at least one webcam

These checks can be done fully automatically without user intervention and are unnoticeable to the respondent.

Possible usage scenarios:

  • Integrated into a survey router before screeners so that only capable people are routed into webcam studies or studies where there is part which strictly requires a webcam access
  • Inside a script that captures users from websites or other river sampling scenarios such that only capable people are asked to participate in surveys
  • To automatically update data about the participant capabilities when they are updating their panel profile
  • Integrated as the first step in the screener or survey script to make sure they don't unnecessarily waste time answering questions if they are not capable

Implementation and use of the Environmental Conditions Detector is simple. Insert the following JS script on which ever HTML page(s) you require, and replace the comments with appropriate code that executes the actions you desire depending on the result of the checks.


Example Code Snippet 

<script type="text/javascript">

function _RealeyesitEnvDetectCallback(result) {
if (result.checksPassed==true) {
//Insert your code that handles a successful test here. It can be a
redirect to the webcam study or to store the result in a survey variable or
anything else.
} else {
//Insert your code that handles a failed test here.
(function() {
var e = document.createElement('script');e.type = 'text/javascript';e.async
= true;
e.src = ('https:' == document.location.protocol ? 'https://' : 'http://') +
var s =
document.getElementsByTagName('script')[0];s.parentNode.insertBefore(e, s);




The script gets executed by the browser and result is returned to the callback function as an argument object with the following format:



Examples of Callback result argument

//In case when all tests are passed
checksPassed: true
,failureReasonCode: null
,failureReasonString: null
//In case when a check fails
checksPassed: false
,failureReasonCode: 4
,failureReasonString: BROWSER_NOT_CAPABLE


Possible failure reasons that we report: 









In 99% cases the component finishes all the script downloads and checks in under a second. There is a built in timeout mechanism which fails the check if for some reason it's not possible to get a result in 10 seconds, so in case the script file is downloaded, an answer is guaranteed.

A very basic example of the code in action is provided here: you can easily modify and try out changes to the code to understand how it works.

If you have any questions about how to use the component or if something is not working, please report it to

Have more questions? Submit a request


Please sign in to leave a comment.