Alerts
Accounts that need your attention
MRR Exposure
Alerts by Category
Alerts by Stage
All clear!
No alerts right now — all customers are in good shape.
Customers
—
No customers yet
Score your first customer manually or bulk-import via CSV.
Segments
Customers grouped by tag
Trends
Portfolio health over time
Score Changes
All accounts sorted by score change in the selected period
CSM Performance
Portfolio metrics for each Customer Success Manager.
CSM Leaderboard ⓘ
Suggested Focus Areas ⓘ
Auto-generated priorities per CSM
Workload Balance ⓘ
Account & MRR distribution across CSMs
Portfolio Movement ⓘ
Health band changes in the last 7 days
CSM Activity Feed ⓘ
Recent actions by each manager
Calendar
Upcoming renewals, scheduled touches & overdue contacts
Reports
Export data, generate printable reports, and analyze your portfolio.
Scheduled Reports
Score a Customer
Fill in the signals below to calculate a health score.
Score Preview
Fill in the form and click Calculate to see results here.
Import / Export
Bulk-import customers or export filtered data.
Or upload any CSV — you can remap columns after upload.
name, manager, mrr, arr, logins_30d, feature_adoption_pct, open_tickets, nps_category, days_since_contact, renewal_date, months_to_renewal, growth_signal, tier, tags, lifecycle, customer_since, next_touch, scoring_profile, note, sentiment
Drop a CSV file here
or click to browse your files
Settings
Customize scoring, thresholds, scoring profiles, and API integrations.
Signal Weights ⓘ
Adjust how much each signal contributes to the health score. Weights must total 100%.
Score Thresholds ⓘ
Define what score ranges map to each of the 5 health bands.
Expansion Estimate ⓘ
How to estimate upsell potential for expansion-ready accounts.
Contact Cadence ⓘ
Days since last contact before follow-up is flagged, by tier.
| Tier | Due Soon (days) | Overdue (days) |
|---|---|---|
| Enterprise | ||
| Mid-Market | ||
| SMB |
Renewal Windows ⓘ
Days before renewal to trigger each alert level.
Signal Thresholds ⓘ
Adjust detection sensitivity for account signals.
Scoring Profiles ⓘ
Click a profile to load its weights into the editor on the left.
Score Distribution ⓘ
Current spread of accounts across health bands.
Data Health ⓘ
Account
Signed in as —
Quick Actions ⓘ
Manage your scoring configuration.
Custom Webhooks ⓘ
Configure per-trigger webhook URLs for Zapier or custom integrations. For simple Slack/Teams/Email alerts, use the Create Alert tab instead.
API Key ⓘ
All inbound API requests require this key in the x-api-key header.
Available Endpoints ⓘ
Event Log
User Management
Create, view, and remove users of this app.
All Users
🏢 Clients
Manage your client businesses. Assign users to clients.
All Clients
Audit Log
Track all changes made to customers, settings, and data.
Config History ⓘ
Alert Rules
Send alerts to Slack, Teams & email — or connect to 5,000+ apps via webhooks & API.
Active Alerts
Add Client
Edit Client
Create New User
Edit User
Help & Guide
Everything you need to know about iQcadence CS Health Score.
Welcome to iQcadence CS Health Score
A customer success management platform that calculates health scores using weighted signals, helping CS teams identify at-risk accounts, track engagement, manage renewals, and take proactive action before churn occurs.
Quick Start
Get up and running in five steps
- Add customers — Use the Score Customer form or CSV Import to load your customer data.
- Score them — Enter signal values (Logins, Adoption, Tickets, NPS, CSAT, Days Since Contact, Growth) and the system calculates a weighted health score automatically.
- Monitor your portfolio — Home Base shows KPI cards, briefing items, and a portfolio health ring. The Alerts page surfaces accounts that need attention.
- Analyze & segment — Use Segments (by tag, tier, or lifecycle stage), Trends (metric charts over time), and CSM Performance to find patterns.
- Act & report — Open customer details for Playbooks and QBR Prep, generate PDF/CSV reports, and set up automated alert rules for Slack, Teams, or email.
Sidebar Navigation
All pages organized by function
| Section | Pages |
|---|---|
| Monitor | Home Base, Alerts, Customers, Segments, Trends, CSM Performance, Calendar |
| Automate | Alert Rules, Reports |
| Data | Score Customer, Import / Export |
| Settings | Weights & Config, Audit Log |
Key Concepts
Core ideas that power the platform
- Health Score (0–100) — A weighted composite of your customer signals. Higher = healthier. Configurable weights and thresholds in Settings.
- Status Bands — Customers are automatically categorized: Critical, At Risk, Watch, Healthy, or Expansion based on score thresholds.
- Dynamic Decay — Scores gradually decrease as days since last contact increases — no manual update needed.
- Lifecycle Stages — Track each customer's journey: Onboarding → Active → At Risk → Won/Upsold or Churned.
- Tiers — Classify customers as SMB, Mid-Market, or Enterprise for segmented views and cadence thresholds.
- Scoring Profiles — Create custom weight presets (e.g., heavier adoption weight for Enterprise) assignable per customer.
How Scores Work
Weighted composite of customer signals
Each customer's health score is calculated from up to seven signals. Each signal is converted to a 0–100 scale, then combined into a single weighted score.
| Signal | What It Measures | How It's Scored |
|---|---|---|
| Logins | Monthly login count | More logins = higher. 30+ logins/month = max score |
| Adoption | Feature adoption % | Direct percentage. 100% = max score |
| Tickets | Open support tickets | Fewer = better. 0 tickets = max, 5+ = zero |
| NPS | Net Promoter Score (0–10) | Promoter (9–10) = best, Passive = moderate, Detractor = worst |
| CSAT | Customer satisfaction (1–5) | 5 = max, 1 = zero. Optionally enabled in Settings |
| Days Since Contact | Days since last touch | Recent = higher. Degrades over time, zero at 180 days |
| Growth | Expansion signal | Strong = best, Mild = moderate, None = low |
Score Weights
Configurable influence per signal
The final score is a weighted average of all signals. Signals with higher weights have more influence. Default weights (customizable in Weights & Config):
| Signal | Default Weight | Share |
|---|---|---|
| Logins | 25 | 25% |
| Adoption | 25 | 25% |
| Tickets | 20 | 20% |
| NPS | 15 | 15% |
| Days Since Contact | 10 | 10% |
| Growth | 5 | 5% |
Status Bands
Automatic categorization by score
| Status | Default Range | Meaning |
|---|---|---|
| Critical | 0 – 24 | Immediate attention required, high churn risk |
| At Risk | 25 – 49 | Significant health concerns, needs intervention |
| Watch | 50 – 64 | Showing early warning signs, monitor closely |
| Healthy | 65 – 79 | Good engagement, stable account |
| Expansion | 80 – 100 | Strong health, potential upsell opportunity |
Thresholds are configurable in Weights & Config. The values shown are defaults.
Dynamic Score Decay
Scores adjust automatically over time
When a customer is scored, the "days since contact" baseline is saved. Each time the app loads, the system adds elapsed days since the last update — accounts that haven't been touched gradually see their score decrease without manual updates.
Scoring Profiles
Custom weight presets per segment
Create custom weight presets for different customer types. For example, Enterprise accounts might weigh Adoption more heavily, while SMB accounts might prioritize NPS. Profiles are assigned per-customer and override the global weights during score calculation.
Manage profiles in Weights & Config → Scoring Profiles.
Scoring a Customer
Step-by-step guide
- Navigate to Score Customer in the sidebar.
- Enter the customer name, tier (SMB / Mid-Market / Enterprise), MRR, and ARR.
- Fill in signal values — logins, adoption %, open tickets, NPS, CSAT, days since contact, and growth indicator.
- Optionally set a renewal date, lifecycle stage, manager, tags, and sentiment.
- Click Save Score. The system calculates the health score and status automatically.
Home Base
Your daily command center and landing page
Home Base is the first screen you see when you log in. It provides a personalized briefing with at-a-glance KPIs and quick-action items.
Displays a personalized greeting with the current date, a portfolio health ring showing your average score, and quick stats (Healthy %, At Risk count, Improving, Declining). Briefing cards highlight the most urgent items — renewals, alerts, and overdue contacts — with one-click navigation.
| Card | What It Shows |
|---|---|
| Portfolio Health | Active account count with a 5-segment health bar showing status distribution and counts. Click to navigate to Customers filtered by status. |
| Revenue at Risk | Combined MRR from Critical + At Risk accounts. Click to jump to Alerts. |
| Upcoming Renewals | Accounts renewing within the next month with total MRR. Click to view the renewal pipeline. |
| Expansion Opportunity | Expansion-band accounts with estimated upsell revenue (20% of their MRR). |
| Total MRR | Sum of monthly recurring revenue across all active accounts. |
- Renewal Pipeline — Three time-horizon buckets (0–30d, 31–60d, 61–90d) showing count, MRR, and at-risk count per bucket.
- Priority Accounts — Top accounts ranked by urgency (renewal proximity × health risk). Click any row to open the detail modal.
- Biggest Drops — Accounts with the largest recent score declines. Click to open and take action.
- Health Heatmap — Visual heatmap of all customers color-coded by score.
- Tier Cards — SMB, Mid-Market, and Enterprise summary cards with count, MRR, average score, and at-risk count.
Alerts
Accounts that need your attention, auto-surfaced
Alerts are automatically generated from customer signal values. The sidebar badge shows the active count.
| Severity | Meaning |
|---|---|
| Red / Critical | Health crisis, high-ticket load, or imminent renewal at risk |
| Amber / Warning | Declining trends, overdue contact, negative sentiment, momentum drop |
| Blue / Attention | Upcoming renewals not yet urgent |
| Green / Opportunity | Expansion or upsell opportunity detected |
| Category | Triggers |
|---|---|
| Health | Critical or At Risk status (red), Watch status (amber) |
| Tickets | 3+ open support tickets |
| Engagement | Low logins or adoption below thresholds |
| Renewal | Renewal within 60 days. Escalates: blue → amber → red by proximity |
| Quiet Accounts | No activity signals detected — gone silent |
| Momentum | Score trending downward over recent updates |
| Sentiment | Negative sentiment logged, NPS detractor, or low CSAT |
| Expansion | Healthy account with MRR over $3K and 30+ days since touch |
- Category — Grouped by alert category with collapsible sections
- Priority — Ranked by severity (Critical → Warning → Attention → Opportunity)
- Customer — All alerts grouped by account
- Table — Compact sortable table view
- MRR Exposure — Revenue at risk broken down by risk category (Critical/Risk, Watch, Renewal, No Contact, etc.) with horizontal bars. Click any row to filter the Customers table.
- By Category — Alert count per category with bar chart. Click to filter.
- Insights — AI-generated actionable patterns: renewals at risk, engagement clusters, cadence gaps, and more.
- Snooze — Hide for 1 day, 7 days, or 30 days. Auto-returns when expired.
- Dismiss — Permanently remove from the active view.
- Wake — Un-snooze a snoozed alert immediately.
- Bulk Actions — Select multiple alerts to snooze or dismiss in batch.
Customers
Full account list with advanced filtering and bulk actions
- Search — Filter by customer name or tag in real time
- Status Tabs — Quick filter: All, Healthy, Watch, At Risk, Critical, Expansion, Churned
- Column Filters — Click the filter icon on any column header for per-column filtering (ranges, enums, text search)
- Sort — Click column headers to sort by name, score, status, MRR, tier, renewal, delta, and more
- Bulk Actions — Select multiple customers to assign tags, change lifecycle, assign a manager, or delete
- Inline Edit — Quick-edit signal values without leaving the table
- Detail Modal — Click any customer name to open the full detail view
The detail modal contains seven tabbed sections:
| Tab | What It Shows |
|---|---|
| Overview | Score ring, signal breakdown bars, account info (tier, MRR, ARR, renewal, lifecycle, manager, tags), cadence status, and quick action buttons (Edit, QBR Prep, Print, Delete) |
| Alerts | All active alerts for this customer with snooze/dismiss actions |
| Playbook | Auto-generated action plans based on signal values. Each play has a priority badge, talking points, and checkable action items with tracked progress |
| Notes | Timestamped notes for interactions, decisions, and context. Reverse chronological order |
| Sentiment | Log Positive/Neutral/Negative sentiment with context notes. Negative entries trigger alerts |
| History | Score timeline showing all changes with signal snapshots per entry — compare what changed between updates |
| Contacts | Manage customer contacts and stakeholders with roles and contact info |
Generate a complete meeting preparation document with: Executive Summary (auto-generated narrative based on status and signals), Wins & Highlights, Risks & Concerns (severity-tagged), a Suggested Agenda with time estimates, contextual Questions to Ask, and Meeting Context notes. Available as print-ready or copy-to-clipboard.
Segments
Group customers by tag, tier, or lifecycle stage
The Segments page provides portfolio-level analytics. KPI cards at the top show total segments, accounts, MRR, at-risk count, and average health.
| View | Groups By | Details |
|---|---|---|
| Segments | Customer tags | Each tag creates a segment. Untagged customers are grouped separately (can be hidden). Shows count, avg score, MRR, at-risk %, trend, renewals |
| Tiers | SMB / Mid-Market / Enterprise | Same metrics per tier. Expand any row to see all accounts in that tier with urgency-sorted drill-down |
| Stage | Lifecycle stage | Onboarding, Active, At Risk, Won/Upsold, Churned. Expand for drill-down. "View in Customers" button filters by stage |
Below the table, a multi-line trend chart compares segments over time. Use the metric dropdown to switch between Health Score, Logins, Adoption, MRR, and more. Filter pills let you focus on specific segments. Includes an auto-generated trend analysis with momentum, convergence/divergence, and risk insights.
Trends
Portfolio metrics over time with overlays and analysis
A configurable time-series chart showing your portfolio's performance. Controls include:
- Primary Metric — Health Score, Logins, Adoption %, Tickets, NPS, CSAT, Days Since Contact, MRR, ARR, or Customer Count
- Secondary Metric — Overlay a second metric on a right-axis for correlation analysis
- Time Range — 7d, 30d, 90d, 6 months, 1 year, 2 years, or year-to-date
- CSM Overlay — Overlay a specific manager's portfolio line on top of the portfolio average
- Client Overlays — Add individual customer lines to compare against the portfolio
Auto-generated insights below the chart detect momentum shifts, divergence patterns, and acceleration/deceleration in your metrics.
A sortable table of customers with the biggest score changes in the selected time range. Columns: name, current score, delta, status, MRR, manager, tickets, logins, and adoption. Click any row to open the customer detail.
CSM Performance
Team-level portfolio health and manager leaderboard
- Manager Leaderboard — Ranked by average portfolio health score with status distribution bars, account count, and total MRR
- Drill-Down — Expand any manager row to see their individual accounts sorted by urgency, with summary stats
- Focus Areas — Auto-generated insights highlighting managers with high at-risk percentages, overdue contacts, or declining portfolios
Calendar
Renewals, touch dates, and cadence events on a calendar
A month-view calendar showing all time-sensitive customer events:
- Renewals — Shown as blue dots on renewal dates. Hover for customer name and MRR.
- Next Touch Dates — Scheduled follow-ups shown as green dots.
- Overdue Contacts — Customers past their cadence threshold flagged in red.
Navigate between months with arrow buttons. Click any day with events to see the full list.
Lifecycle & Cadence
Customer journey stages and contact cadence rules
| Stage | Description |
|---|---|
| Onboarding | New customer being set up and trained |
| Active | Fully onboarded, engaged customer (default) |
| At Risk | Customer showing signs of disengagement or dissatisfaction |
| Won / Upsold | Recently renewed or expansion completed |
| Churned | Customer has left. Excluded from dashboards, alerts, and scoring |
| Tier | Warning | Overdue |
|---|---|---|
| Enterprise | 14 days | 30 days |
| Mid-Market | 21 days | 45 days |
| SMB | 30 days | 60 days |
Ranks accounts by urgency: Renewal Factor (60%) × proximity + Risk Factor (40%) × inverse health. Levels: Critical (70+), High (45–69), Medium (20–44), Low (<20).
CSV Import
Bulk-load customers from a spreadsheet
Import customers in bulk via drag-and-drop or file picker. The preview step shows a column mapping table — unmatched columns can be manually mapped.
| Field | Required | Recognized Column Names |
|---|---|---|
| Customer Name | Yes | name, company, customer, account |
| Manager | No | manager, csm, owner, rep |
| MRR / ARR | No | mrr, arr, revenue, annual recurring revenue |
| Logins | No | logins, logins_30d, login_frequency |
| Adoption | No | adoption, feature_adoption_pct |
| Tickets | No | tickets, open_tickets |
| NPS / CSAT | No | nps, nps_category, csat |
| Days Since Contact | No | days, days_since_contact |
| Renewal Date | No | renewal_date, renews on |
| Growth / Tier / Tags | No | growth, tier, tags (pipe-separated) |
| Lifecycle / Sentiment | No | lifecycle, stage, sentiment |
CSV Export / Bulksheet
Export enriched data for analysis
Export your full customer dataset as a CSV with 20+ columns including calculated fields (priority score, cadence status, days until renewal). Ideal for pivot tables, Excel, or BI tools. The Bulksheet export from the Customers page includes all editable fields for round-trip editing.
Reports
10 pre-built reports with PDF and CSV output
| Report | Description | Tier |
|---|---|---|
| Portfolio Summary | Overall book health with KPIs, status distribution, tier breakdown | Starter |
| At-Risk Accounts | Customers scoring below 50, sorted by urgency | Starter |
| Renewal Forecast | Upcoming renewals grouped by month with risk flags | Starter |
| CSM Performance | Manager portfolio comparison with scores | Growth |
| Segment Analysis | Health breakdown by tier and lifecycle stage | Growth |
| Trend (90 Days) | Score trend lines and movement analysis | Growth |
| Churn Risk | Churn probability with contributing factors | Growth |
| Customer Health | Individual customer deep-dive | Enterprise |
| Score History | Historical score changes with timeline | Enterprise |
| Weekly Digest | Auto-generated weekly health summary | Enterprise |
Each report can be printed as a branded PDF with SVG charts, color-coded tables, and professional headers/footers. Use Ctrl+P / Cmd+P to save as PDF.
Backup & Restore
Full dataset export and import as JSON
- Export / Backup — Downloads a JSON file with all customers, scores, weights, thresholds, and profiles. Timestamped filename.
- Restore — Upload a previously exported JSON backup. Replaces all current data after confirmation.
Audit Log
Full history of every action in the app
Records every significant action: customer scored, settings changed, alerts snoozed, CSV imports, and more. Each entry captures the action type, associated customer, user email, timestamp, and details summary.
The Config History tab shows a timeline of settings changes (weights, thresholds, profiles) for compliance and troubleshooting.
Alert Rules
Automated notifications when conditions are met
Configure automated notifications delivered to Slack, Microsoft Teams, Email, or custom Webhook endpoints.
- Slack — Posts rich cards to a Slack channel via incoming webhook URL
- Microsoft Teams — Posts adaptive cards to a Teams channel via webhook URL
- Email — Sends formatted email notifications
- Webhook — Sends JSON payloads to any custom endpoint for CRM/ticketing integration
Alert Event Types
Seven configurable triggers
| Event | Triggers When | Config |
|---|---|---|
| Health Below Threshold | Score drops below configured value | Score threshold (default: 50) |
| Account At-Risk | Status transitions to At Risk or Critical | — |
| Renewal Approaching | Renewal date within configured days | Days (default: 30) |
| No Contact Alert | Days since contact exceeds maximum | Max days (default: 14) |
| NPS Detractor | NPS changes to Detractor | — |
| Lifecycle Change | Lifecycle transitions to At Risk or Churned | — |
| Rapid Score Drop | Score drops by more than configured points | Points (default: 15) |
Each event type can be individually enabled or disabled. Events are evaluated whenever a customer is scored or updated.
Scheduling & Scope
When and for whom alerts fire
- Real-time — Fires immediately when the condition is detected
- Daily — Batches alerts into a daily summary
- Weekly — Batches alerts into a weekly summary
Filter automated alerts to a specific manager's portfolio. When set, alerts only fire for customers assigned to that manager — useful for routing notifications to the right CSM's Slack channel or email inbox.
REST API
Push and pull customer data via API — connect Zapier, CRMs, or any HTTP client
All API requests require an x-api-key header. Generate your API key in Settings → Automations → Advanced.
https://qctiyigznbztxcowehnl.supabase.co/functions/v1/api-inbound
| Action | Method | Purpose |
|---|---|---|
| list_customers | GET / POST | Paginated customer list with filters — ideal for Zapier polling triggers |
| get_customer | GET / POST | Get a single customer by ID or name |
| upsert_account | POST | Create or update a customer — auto-rescores when signal fields change |
| update_health | POST | Update a single field — auto-rescores when signal fields change |
| delete_customer | POST | Soft-delete a customer (recoverable) |
| score_customer | POST | Force a full re-score using your saved weights |
| Field | Type | Description |
|---|---|---|
name | String | Account name (required for create, used for lookup) |
logins | Number (0+) | Login count this month — signal, triggers rescore |
adoption | Number (0–100) | Feature adoption percentage — signal, triggers rescore |
tickets | Number (0+) | Open support tickets — signal, triggers rescore |
nps | Number (0–10) | Net Promoter Score — signal, triggers rescore |
csat | Number (1–5) | Customer Satisfaction score — signal, triggers rescore |
days | Number (0+) | Days since last contact — signal, triggers rescore |
growth | String | none, mild, or strong — signal, triggers rescore |
mrr | Number (0+) | Monthly recurring revenue |
arr | Number (0+) | Annual recurring revenue |
tier | String | Customer tier: enterprise, mid, or smb |
lifecycle | String | onboarding, active, atrisk, won, churned |
manager | String | Assigned CSM name |
tags | Array / CSV | Tags array or comma-separated string |
renewal_date | Date | Contract renewal date (YYYY-MM-DD) |
next_touch | Date | Next scheduled contact date (YYYY-MM-DD) |
since | Date | Customer since date (YYYY-MM-DD) |
score | Number (0–100) | Health score — set manually to override auto-scoring |
Create / Update a customer:
POST /functions/v1/api-inbound
Header: x-api-key: YOUR_KEY
Header: Content-Type: application/json
{
"action": "upsert_account",
"data": {
"name": "Acme Corp",
"mrr": 5000,
"logins": 22,
"adoption": 75,
"tickets": 1,
"tier": "mid",
"manager": "Sarah"
}
}
Update a single field:
POST /functions/v1/api-inbound
{
"action": "update_health",
"data": {
"name": "Acme Corp",
"field": "logins",
"value": 28
}
}
List recently changed customers:
GET /functions/v1/api-inbound?action=list_customers&updated_since=2026-03-01T00:00:00Z&sort=updated_at&order=desc&limit=50
Get a single customer:
GET /functions/v1/api-inbound?action=get_customer&name=Acme%20Corp
| Parameter | Example | Description |
|---|---|---|
status | critical | Filter by status band |
lifecycle | active | Filter by lifecycle stage |
tier | enterprise | Filter by customer tier |
manager | Sarah | Filter by assigned CSM |
tag | vip | Filter by tag |
updated_since | 2026-03-01T00:00:00Z | Only customers changed after this date |
sort | updated_at | Sort field (also: name, score, mrr, arr, created_at) |
order | desc | Sort direction: asc or desc |
limit | 100 | Results per page (max 500) |
offset | 0 | Pagination offset |
When you push signal fields (logins, adoption, tickets, nps, csat, days, growth) via upsert_account or update_health, the customer's health score is automatically recalculated using your saved scoring weights. The response includes the new score and status. Lifecycle auto-transitions (e.g. risk → at-risk) also fire automatically.
To override auto-scoring, pass an explicit score value — this sets the score directly without recalculating.
- Actions (push data in): Use "Webhooks by Zapier" → Custom Request. Set the URL, add
x-api-keyheader, POST your JSON body. - Triggers (poll for changes): Use "Webhooks by Zapier" → Retrieve Poll. Set the GET URL with
?action=list_customers&updated_since={{last_poll}}. Zapier auto-deduplicates by customerid.