What this audit checks
Authentication & access
- Plugin token (identifier:key) valid - auth on /website//operators/list returns 200
- X-Crisp-Tier header correct (plugin vs user) for the supplied token
- website_id resolves to a real Crisp website the token can read
- Token scopes cover conversations read + segments write (for finding tagging)
Findings follow-through
- VortexIQ findings open (pending/unresolved, segment vortexiq:finding) above 20 - backlog turning into a graveyard
- Finding resolution rate (90d) below 50% - audit pipeline creating more than the team absorbs
- Abandoned findings (>14d no activity) above 5 (warn) / 15 (critical)
- Avg time-to-fix above 14 days (sustained)
- Bot-only resolutions inflating resolution rate (resolved with zero human messages)
Backlog & capacity
- Oldest open conversation older than 90 days
- Unassigned open conversations above 5 (warn) / 20 (critical)
- An operator carrying more than 10 open conversations (overloaded)
- Blocked conversations above 3 (warn) / 8 (critical)
- Highest+High priority more than 50% of the open backlog (queue top-heavy)
Flow & throughput
- Weekly resolved count dropped more than 25% versus the prior week
- Avg cycle time degraded more than 25% week-over-week
- Avg lead time above 14 days (queue wait dominating)
- Sprint velocity dropped more than 20% versus prior period
- Mid-sprint scope add above 15% (committed follow-up being preempted)
Cross-channel: revenue-at-risk (the killer area)
- Abandoned Vortex IQ findings (>14d) whose audit_finding maps to a live commerce/ads/payment regression - the unfixed problem is still costing money (sibling = commerce/ads/payment connector via vortexiqFindingId)
- Finding resolution rate below 50% sustained while a commerce sibling shows a 1-3% trailing revenue dip - follow-through failure tied to revenue
- High-priority findings open >14d that reference checkout / payment / inventory problems the commerce sibling confirms are still active
- Findings concentrated on one audit module (e.g. payment, inventory) the team cannot resolve - route to the owning connector for a structural fix
Severity thresholds
| Signal | Warn | Critical |
|---|---|---|
cri_vortexiq_findings_abandoned | 5 | 15 |
cri_vortexiq_finding_resolution_rate | 75 | 50 |
cri_vortexiq_findings_open | 20 | 40 |
cri_oldest_open_ticket_age | 30 | 90 |
cri_unassigned_tickets | 5 | 20 |
cri_blocked_tickets | 3 | 8 |
Data sources
GET https://api.crisp.chat/v1/website/{website_id}/operators/list- Auth probe + operator inventory (team capacity)GET https://api.crisp.chat/v1/website/{website_id}- Website sanity (name/domain) + tier checkGET https://api.crisp.chat/v1/website/{website_id}/conversations/{page_number}- List conversations - state counts, segments (priority + vortexiq:finding), assignee, agesGET https://api.crisp.chat/v1/website/{website_id}/conversation/{session_id}/meta- Per-conversation meta - assigned operator, segments, timestampsGET https://api.crisp.chat/v1/website/{website_id}/conversation/{session_id}/messages- Message timeline - last_activity_at, first-response/resolution timing, human-vs-bot detection