Qualtrics
Discover Qualtrics experience management data including surveys, responses, projects, and distributions.
- Entities: Surveys, Responses, Projects, Directories, Distributions
- Relationships: Links survey data to customers, products, and support systems
- Discovery: Automated polling-based discovery via API token
- MCP Support: Query Qualtrics data via Model Context Protocol
Survey definitions and configurations.
Spec fields:
id: Survey IDname: Survey namedescription: Survey descriptionowner_id: Survey ownerbrand_id: Brand IDis_active: Active statuscreation_date: Creation timestamplast_modified: Last modified timestampexpiration: Expiration settings
Labels:
name: Survey namestatus: Active/Inactiveowner: Owner ID
Projects that organize surveys and data.
Spec fields:
id: Project IDname: Project namecreation_date: Creation dateowner_id: Project owner
Labels:
name: Project nameowner: Owner ID
Individual survey responses.
Spec fields:
id: Response IDsurvey_id: Associated surveyrecorded_date: Response timestampstatus: Response status (Complete, Partial)progress: Completion percentageduration: Response duration in secondsfinished: Completion statusresponse_data: Survey answers (key-value pairs)
Labels:
status: Response statussurvey: Survey ID
Contact directories for survey distribution.
Spec fields:
id: Directory IDname: Directory nameis_default: Default directory flag
Labels:
name: Directory name
Survey distribution campaigns.
Spec fields:
id: Distribution IDsurvey_id: Associated surveyowner_id: Distribution ownercreated_date: Creation datesend_date: Scheduled send datemethod: Distribution method (Email, SMS, Anonymous)message: Distribution message
Labels:
method: Distribution methodsurvey: Survey ID
| Source | Relation | Target | Description |
|---|---|---|---|
QualtricsSurvey | PART_OF | QualtricsProject | Survey's project |
QualtricsResponse | FOR_SURVEY | QualtricsSurvey | Response's survey |
QualtricsDistribution | DISTRIBUTES | QualtricsSurvey | Distribution campaign |
QualtricsDistribution | USES_DIRECTORY | QualtricsDirectory | Contact source |
| Source | Relation | Target | Description |
|---|---|---|---|
QualtricsResponse | FROM_CUSTOMER | SalesforceAccount | Customer feedback |
QualtricsResponse | ABOUT_PRODUCT | MetaService | Product feedback |
QualtricsSurvey | TRIGGERED_BY | SalesforceCase | Post-case survey |
QualtricsResponse | CREATES | JiraIssue | Negative feedback → ticket |
QualtricsResponse | FROM_USER | HubSpotContact | Contact feedback |
discovery:
enabled: true
settings:
api_token: "YOUR_QUALTRICS_API_TOKEN"
datacenter: "yourdatacenterid" # e.g., ca1, fra1, syd1
# Optional settings
include_surveys: true
include_projects: true
include_responses: false # Can generate large volumes of data
include_directories: true
include_distributions: true
max_surveys: 100 # 0 = unlimited
max_responses_per_survey: 1000 # 0 = unlimited
mcp:
enabled: true
settings:
api_token: "YOUR_QUALTRICS_API_TOKEN"
datacenter: "yourdatacenterid"
- Log into Qualtrics
- Click on your profile (top right)
- Go to Account Settings → Qualtrics IDs
- Click "Generate Token" under API section
- Copy the API token
Your datacenter ID is in your Qualtrics URL:
https://yourdatacenterid.qualtrics.com- Common values:
ca1,fra1,syd1,az1, etc.
The API token needs:
- Read access to Surveys
- Read access to Responses (if collecting response data)
- Read access to Projects
- Read access to Directories
degree discovery run [email protected] --config qualtrics-config.yaml
Query: "Show all negative NPS responses from enterprise customers"
QualtricsResponse[nps_score<7] → FROM_CUSTOMER → SalesforceAccount[type="Enterprise"]
Query: "Which product features have the lowest satisfaction scores?"
QualtricsResponse[satisfaction<3] → ABOUT_PRODUCT → MetaService
Query: "Create Jira tickets for survey responses with negative sentiment"
QualtricsResponse[sentiment="negative"] → CREATES → JiraIssue
Query: "Link support cases to follow-up satisfaction surveys"
SalesforceCase[status="Closed"] → TRIGGERED → QualtricsSurvey → FOR_SURVEY → QualtricsResponse
Query: "Which distribution methods have the highest response rates?"
QualtricsDistribution → DISTRIBUTES → QualtricsSurvey ← FOR_SURVEY ← QualtricsResponse
(calculate response rate by distribution method)
Query: "Track customer feedback across their entire lifecycle"
HubSpotContact → SUBMITTED → QualtricsResponse → FOR_SURVEY → QualtricsSurvey[survey_type=X]
Qualtrics API rate limits (by plan):
- Standard: 20 requests per minute
- Enterprise: 60 requests per minute
- Burst: Up to 200 requests per minute (temporary)
The molecule implements:
- Automatic rate limiting with backoff
- Efficient pagination for large datasets
- Request queuing to stay within limits
MATCH (s:QualtricsSurvey {is_active: true})
RETURN s
MATCH (s:QualtricsSurvey)<-[:FOR_SURVEY]-(r:QualtricsResponse)
RETURN s.name, COUNT(r) AS response_count
ORDER BY response_count DESC
MATCH (r:QualtricsResponse {status: "Complete"})
WHERE r.recorded_date > date() - duration({days: 30})
RETURN COUNT(r) AS recent_responses
MATCH (d:QualtricsDistribution)-[:DISTRIBUTES]->(s:QualtricsSurvey)
MATCH (s)<-[:FOR_SURVEY]-(r:QualtricsResponse)
RETURN d.method, COUNT(r) AS responses
ORDER BY responses DESC
Match by email or custom field:
MATCH (r:QualtricsResponse)
MATCH (a:SalesforceAccount)
WHERE r.customer_email IN [contact emails for account]
CREATE (r)-[:FROM_CUSTOMER]->(a)
Match by survey metadata:
MATCH (s:QualtricsSurvey)
MATCH (svc:MetaService)
WHERE s.name CONTAINS svc.name
CREATE (s)-[:ABOUT_PRODUCT]->(svc)
-
Verify API token is valid and not expired
-
Check that datacenter ID matches your Qualtrics URL
-
Ensure token hasn't been revoked
-
Check
include_*settings are enabled -
Verify API token has required permissions
-
Ensure entities exist in your Qualtrics account
-
Reduce discovery frequency
-
Use
max_surveysandmax_responses_per_surveylimits -
Disable response collection if not needed (
include_responses: false) -
Upgrade to higher Qualtrics plan tier
-
Set
max_responses_per_surveyto reasonable limit -
Consider filtering responses by date range
-
Use incremental sync for recurring discoveries
┌──────────────────┐
│ Qualtrics API │
│ (REST v3) │
└────────┬─────────┘
│
│ HTTPS
│ API Token
│
┌────────▼─────────┐
│ Qualtrics │
│ Molecule │
│ - Surveys │
│ - Responses │
│ - Projects │
│ - Distributions │
└────────┬─────────┘
│
│ gRPC
│
┌────────▼─────────┐
│ SixDegree │
│ Knowledge Graph │
└──────────────────┘
- Link to Salesforce: Connect survey responses to CRM data
- Connect to Jira: Auto-create tickets from negative feedback
- Integrate with Products: Track feature satisfaction scores
- Link to HubSpot: Sync contact feedback data
- Add Custom Questions: Map custom survey questions to graph properties
If you have hundreds of surveys:
- Set
max_surveysto focus on active or recent surveys - Consider filtering by project or brand
- Use survey name patterns to select relevant surveys
Survey responses can be very large:
-
Set
include_responses: falseif you only need survey metadata -
Use
max_responses_per_surveyto limit volume -
Consider storing only aggregate metrics instead of individual responses
-
Filter responses by completion status or date range
-
Disable entity types you don't need
-
Focus on completed responses only
-
Run discovery during off-peak hours for large datasets
Qualtrics responses include:
- Metadata: Response ID, timestamp, status, duration
- Survey answers: Question responses as key-value pairs
- Embedded data: Custom data passed during distribution
- Location data: IP-based location (if enabled)
- User agent: Browser/device information
You can extract specific question responses and map them to graph properties for analysis.
-
salesforce: Link feedback to CRM accounts
-
hubspot: Contact feedback tracking
-
jira: Auto-create issues from feedback
-
zendesk: Post-ticket satisfaction surveys
-
meta: Product feedback tracking