Overview
Pull data from Qualtrics (Survey Responses, Brand Tracker Data, Employee Experience, CX Surveys) → analyze with Mavera (Custom Personas, Focus Groups, Mave Agent, Chat) → build enterprise-grade persona libraries from survey exports, enrich brand tracking with competitive intelligence, create internal personas from engagement data, and diagnose CX pain points with synthetic focus groups.
Qualtrics API — Base URL: https://{datacenterid}.qualtrics.com/API/v3/. Auth: API Token via X-API-TOKEN header or OAuth 2.0. Rate limits: ~60 req/min (varies by license tier). Response exports use an async pattern (create → check → download).
Prerequisites
Environment variables
export QUALTRICS_TOKEN="your_api_token"
export QUALTRICS_DC="ca1"
export MAVERA_API_KEY="mvra_live_xxxxx"
Jobs
| # | Job | Qualtrics Data | Mavera Surface | Output |
|---|
| 1 | Enterprise Survey → Persona Library | Full response export (async) | Mave + Personas | Comprehensive persona library |
| 2 | Brand Tracker Data → Competitive Analysis | Brand tracking survey | Mave (web search) | Market dynamics research |
| 3 | Employee Experience → Internal Personas | eNPS + engagement | Personas + Focus Groups | Internal comms testing |
| 4 | CX Survey → Product Focus Group | CX scores by touchpoint | Focus Groups | Touchpoint improvement plan |
Priority Ranking
- Onboarding (5.8/10) — Fix first. Drives 64% of low scores.
Downstream impact: poor onboarding correlates with -15 NPS at renewal.
- Billing (6.3/10) — Fix second. 48% dissatisfied, but lower
downstream churn impact than onboarding.
Quick Wins (2 weeks)
- Create 5-step onboarding checklist (interactive, in-product)
- Add 3 pre-built templates for top use cases
- Auto-schedule 1:1 onboarding call at signup
- Simplify billing page — remove jargon, add cost calculator
Medium-Term (1-3 months)
- Build guided product tour (interactive, context-aware)
- Implement onboarding health score (trigger CS intervention)
- Redesign invoice format based on billing complaints
Estimated NPS Impact
Fixing onboarding to 8/10: +8-12 NPS points
Fixing billing to 8/10: +3-5 NPS points
Combined: +11-17 NPS points (est.)
### Error Handling
<AccordionGroup>
<Accordion title="Touchpoint column naming">CX surveys use custom column names for each touchpoint. Set via env vars (`COL_ONBOARDING`, etc.) or update the `TOUCHPOINTS` dict. Default names assume `CX_` prefix.</Accordion>
<Accordion title="Comment columns">The code looks for `{column}_Comment` fields. If your survey uses a different naming pattern, adjust the comment column lookup.</Accordion>
<Accordion title="All touchpoints above threshold">If all scores are above 7/10, the focus group step is skipped. Adjust `THRESHOLD` to target your desired improvement level.</Accordion>
<Accordion title="Sequential focus groups per touchpoint">Each low-scoring touchpoint gets its own focus group (separate call). With 3 low touchpoints × 6 questions, expect 3-5 minutes. Parallelize with `asyncio`/`Promise.all` if needed.</Accordion>
</AccordionGroup>
---
## Rate Limits & Production Notes
| Endpoint | Limit | Strategy |
|----------|-------|----------|
| Survey details | ~60 req/min | Cache locally |
| Response exports (create) | ~60 req/min | One at a time |
| Export polling | ~60 req/min | 5s intervals |
| File download | No specific limit | Single call per export |
<Warning>
Qualtrics rate limits vary by license tier. Enterprise plans may have higher limits. The async export pattern is the only way to retrieve large response sets — direct `/responses` endpoints are limited to 100 at a time. Always use exports for surveys with 500+ responses.
</Warning>
**Production checklist:**
- Store `QUALTRICS_TOKEN`, `QUALTRICS_DC`, and `MAVERA_API_KEY` in a secrets manager.
- Note your **Datacenter ID** — using the wrong one returns 404 on all calls.
- Cache exported CSV files locally. Qualtrics exports are expensive (rate-limited, slow for large surveys). Don't re-export data that hasn't changed.
- For CX jobs, configure touchpoint column names via env vars to match your survey structure.
- JavaScript implementations need `jszip` (`npm install jszip`) for ZIP decompression.
- Monitor Mavera credits at [Dashboard](https://app.mavera.io/settings/usage).
---
<CardGroup cols={3}>
<Card title="All Integrations" icon="plug" href="/integrations" />
<Card title="Qualtrics API" icon="building-columns" href="https://api.qualtrics.com/" />
<Card title="Personas" icon="user" href="/features/personas" />
<Card title="Focus Groups" icon="users" href="/features/focus-groups" />
<Card title="Mave Agent" icon="brain" href="/features/mave-agent" />
<Card title="Generate" icon="wand-magic-sparkles" href="/features/generate" />
</CardGroup>