Skip to main content

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
Data comes from three places:
  1. Stripe — subscription status, MRR, renewal dates
  2. PandaDoc — contract dates and terms from signed documents
  3. Manual — anything you enter or push via the API
Configure at Settings > Renewals.

Where data lives

Renewal fields live on both companies and contacts:
FieldTypeSet by
renewal_statusEnumAuto rules + manual override
renewal_dateDateStripe / PandaDoc / manual
contract_termEnumStripe / PandaDoc / manual
payment_termsEnumStripe / manual
on_contractBooleanStripe / PandaDoc / manual
monthly_spendNumberStripe / manual
You can edit all of these manually on the contact or company detail page, push them via REST, or let auto-status rules manage them.

Renewal statuses

StatusMeaning
up_for_renewalRenewal date is approaching
in_progressActive renewal conversation underway
likely_to_renewIndicators are positive
expansion_opportunityStrong indicators for upsell
set_to_cancelCustomer has communicated they won’t renew
set_to_cancel_trialTrial customer has communicated they won’t convert
at_riskRenewal in jeopardy (low health, support volume, etc.)
renewedRenewal completed
lostDid not renew
Some are set automatically by rules, others are set by your team in the inbox or company detail.

Auto-status rules

In Settings > Renewals, you can configure rules that automatically update renewal status:
  • “Up for renewal” within N days — when renewal_date is within N days, set status to up_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
Rules run on a schedule and on data changes. You can override an auto-set status manually.

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.
When you have Stripe connected, an extra Priority section lets you decide which source wins for 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_date or contract_term
  • Active only — only records currently active (filtered by Stripe status when applicable)
You can also exclude contract-only records that don’t have an active subscription.

CSV import

For bulk migration of renewal data from a spreadsheet, use CSV Import under Settings > Renewals:
  1. Click Import
  2. Upload a CSV (up to 5,000 rows)
  3. Map columns to fields
  4. Identify records by company name / domain / external ID or user email / external ID
  5. Confirm
Failed rows are reported with reasons.

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
Same on contact pages when entity is set to 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.