Integrating Verisoul Fraud Prevention with Qualtrics
Last updated: December 30, 2025
This guide explains how to integrate Verisoul into your Qualtrics surveys to identify fake users, bots, and multi-accounting in real-time. This integration uses a combination of client-side JavaScript to collect device signals and a server-side Web Service call to receive a risk decision.
Prerequisites
A Verisoul Project ID and API Key (from the Verisoul Dashboard).
Access to the Survey Flow and JavaScript editor in Qualtrics.
Step 1: Install the Verisoul SDK
To collect device signals, you must add the Verisoul JavaScript snippet to your survey.
In your Qualtrics survey, go to the Look & Feel menu.
Click on the General tab.
Find the Header section and click edit.
Switch to the source view (
<>) and paste the following script:
HTML
<script async src="https://js.verisoul.ai/prod/bundle.js" verisoul-project-id="YOUR_PROJECT_ID"></script><script>// Helper to ensure Verisoul is available before call
!function(e){if(e.Verisoul)return;const r=[],t={},o=new Proxy(t,{get:(e,o)=>o in t?t[o]:(...e)=>new Promise(((t,n)=>r.push([o,e,t,n]))),set:(e,r,o)=>(t[r]=o,!0)});e.Verisoul=o;const n=()=>{Object.keys(t).length&&r.splice(0).forEach((([e,r,o,n])=>{try{Promise.resolve(t[e](...r)).then(o,n)}catch(e){n(e)}}))},c=document.querySelector("script[verisoul-project-id]"),s=()=>r.splice(0).forEach((([,,,e])=>e(new Error("Failed to load Verisoul SDK"))));if(!c)return void s();c.addEventListener("load",n,{once:!0}),c.addEventListener("error",(()=>{clearInterval(i),s()}),{once:!0});const i=setInterval((()=>{Object.keys(t).length&&(clearInterval(i),n())}),40)}(window);
</script>[!IMPORTANT]
Replace YOUR_PROJECT_ID with your actual Verisoul Project ID.
Step 2: Capture the Session ID
You need to grab the unique session_id generated by Verisoul and save it as an Embedded Data field in Qualtrics.
Go to Survey Flow.
Add an Embedded Data element at the very top of your flow. Create a field named
session_id.In your first survey question (e.g., the Consent or Intro screen), click on the JavaScript icon (js).
Add the following code to the
addOnReadyfunction:
JavaScript
Qualtrics.SurveyEngine.addOnReady(function() {
var self = this;
window.Verisoul.session().then(function(result) {
// Save the Verisoul session_id to Qualtrics Embedded Data
Qualtrics.SurveyEngine.setEmbeddedData('session_id', result.session_id);
}).catch(function(e) {
console.error("Verisoul failed", e);
});
});
Step 3: Configure the Web Service (Risk Decision)
Once the session_id is captured, you use a Web Service block to ask Verisoul if the user is "Real," "Suspicious," or "Fake."
In Survey Flow, add a Web Service block after the block where the
session_idis captured.URL:
https://api.prod.verisoul.ai/session/authenticateMethod:
POSTCustom Headers:
x-api-key:YOUR_VERISOUL_API_KEYContent-Type:application/json
Body Parameters (JSON): Map the following structure to your Embedded Data:
session_id=${e://Field/session_id}account.id=${e://Field/ResponseID}(or your own internal User ID)
Setting Response Data
Under the "Set Embedded Data" section of the Web Service block, map the Verisoul response to new Qualtrics fields:
decision=decisionaccount_score=account_scorereason=reasons
Step 4: Take Action in Survey Flow
Now that you have the decision field (Real, Suspicious, or Fake), you can branch your survey logic.
Add a Branch element below the Web Service.
Condition: If Embedded Data
decisionis equal toFake.Action: Add an End of Survey element within the branch to immediately disqualify the user.
Summary of Data Flow
Component | Purpose |
Header Script | Loads the Verisoul tracking environment. |
JavaScript Task | Requests a unique |
Web Service | Sends the |
Branch Logic | Filters out bots and fraudsters based on the API response. |