What renewals tracks
The renewals system in Halo gives you a single place to see:- When each customer’s contract is up for renewal
- What contract terms they’re on
- Their current renewal status (
up_for_renewal,at_risk,set_to_cancel,renewed, etc.) - Whether they’re trending toward expansion or churn
- Stripe — subscription status, MRR, renewal dates
- PandaDoc — contract dates and terms from signed documents
- Manual — anything you enter or push via the API
Where data lives
Renewal fields live on both companies and contacts:| Field | Type | Set by |
|---|---|---|
renewal_status | Enum | Auto rules + manual override |
renewal_date | Date | Stripe / PandaDoc / manual |
contract_term | Enum | Stripe / PandaDoc / manual |
payment_terms | Enum | Stripe / manual |
on_contract | Boolean | Stripe / PandaDoc / manual |
monthly_spend | Number | Stripe / manual |
Renewal statuses
| Status | Meaning |
|---|---|
up_for_renewal | Renewal date is approaching |
in_progress | Active renewal conversation underway |
likely_to_renew | Indicators are positive |
expansion_opportunity | Strong indicators for upsell |
set_to_cancel | Customer has communicated they won’t renew |
set_to_cancel_trial | Trial customer has communicated they won’t convert |
at_risk | Renewal in jeopardy (low health, support volume, etc.) |
renewed | Renewal completed |
lost | Did not renew |
Auto-status rules
In Settings > Renewals, you can configure rules that automatically update renewal status:- “Up for renewal” within N days — when
renewal_dateis within N days, set status toup_for_renewal - “At risk” below health threshold — when health score drops below N, set status to
at_risk - “Expansion opportunity” — based on health score, employee count, or MRR thresholds
- “Set to cancel” — pulled directly from Stripe when the subscription is canceled or scheduled to cancel
Data sources
Pick which sources Halo uses for which fields:- Stripe (preferred) — for subscription-based businesses. Requires Stripe connected.
- PandaDoc — for contract-driven sales. Requires PandaDoc connected.
- Manual — when you don’t have either, or want full control.
renewal_date and payment_terms — Stripe, PandaDoc, or manual only.
Visibility filters
Choose what shows up in renewal-related views:- All — every record, even those with no renewal data
- With renewal data — only records that have a
renewal_dateorcontract_term - Active only — only records currently active (filtered by Stripe status when applicable)
CSV import
For bulk migration of renewal data from a spreadsheet, use CSV Import under Settings > Renewals:- Click Import
- Upload a CSV (up to 5,000 rows)
- Map columns to fields
- Identify records by company name / domain / external ID or user email / external ID
- Confirm
Renewals on company and contact pages
Open any company at Companies > [Company] to see:- A renewal panel showing status, dates, terms
- Edit-in-place for manual updates
- A view of recent activity that might affect renewal
users.
Where to go next
Health Scores
Health scores feed the “At Risk” auto-status rule.
Stripe Integration
Connect Stripe so renewal data syncs automatically.
PandaDoc Integration
Connect PandaDoc to pull contract dates and terms.