Renewal & Expansion Cadence Template
Churn is decided at T-90, not at T-7. A renewal pipeline with verifiable stages, a T-90/T-60/T-30 touch cadence, an expansion-signal checklist, a 30-minute QBR skeleton - and copy-paste JSON that stands it all up in two API calls.
Who this is for
Teams with annual or multi-year contracts where a person - or an AI agent - owns the renewal book: a founder doing customer success, a first CSM, a RevOps lead wiring a motion an agent will run. It assumes roughly $5k+ ACV; below that, renewals should be automatic billing plus a health email, not a pipeline.
Use it when your first annual contracts are coming up with no renewal process, or after the classic failure: learning about a churn at T-7, when the only lever left was a discount.
Renewals get their own pipeline
The core opinion of this template: a renewal is a deal, and it lives in its own pipeline. Not a task, not a reminder, not a stage bolted onto new business. Renewals start at ~85-90% probability and decay when neglected; new business starts near 20% and climbs - mixing them corrupts both forecasts. A dedicated pipeline also makes revenue retention computable from the terminal stages.
| Stage | Enter at | The deal is here when... | Advance when |
|---|---|---|---|
| Upcoming | T-120 | Renewal deal created with renewal date and current ARR. | The clock hits T-90 - a mechanical daily move by an agent or automation. |
| Health check | T-90 | Usage and adoption under review; risk being graded. | Account graded green/yellow/red, value review booked. |
| Value review | T-60 | The QBR is scheduled or delivered. | QBR held, expansion signals logged, buyer stated continuation intent out loud. |
| Proposal | T-30 | Written renewal terms - including any scoped expansion - in the buyer's hands. | Buyer engaged with the terms. Silence is not engagement. |
| Negotiation | - | Verbal yes; terms being finalized. | Signature. Nothing else counts. |
| Renewed | - | Signed. Terminal. Amount = new ARR, expansion included. | Never moves again. |
| Churned | - | Non-renewal confirmed or the date passed unsigned. Terminal. | Record a churn reason. "No reason" should be an invalid move. |
Auto-renew clauses do not exempt you from the cadence - a silent auto-renewal is churn risk deferred twelve months.
The T-90/T-60/T-30 cadence
Three outbound touches, each with one job, each earning the next - all anchored to the contract date.
| Touch | When | Channel | The one job |
|---|---|---|---|
| Health check | T-90 | Surface blockers while there is time to fix them. Nothing commercial - say so explicitly. | |
| Value review invite | T-60 | Email → meeting at ~T-45 | Book the QBR. It builds the case the proposal rests on and scopes the expansion. |
| Renewal proposal | T-30 | Email + document | Deliver written terms: same scope by default, expansion options priced in. |
| Escalation | T-14 | Human | If the proposal got silence, leave the cadence: call the champion, involve the exec sponsor. See the follow-up sequence templates. |
Between the touches: grade health after T-90 (red means swarm now), prepare the QBR with the customer's own numbers, log expansion signals as they appear.
Expansion-signal checklist
Expansion is cheaper revenue than acquisition - if you catch the signals early enough to scope at T-60 and price into the T-30 proposal. Log each as an activity on the renewal deal the day you see it.
| Signal | Where you see it | The move |
|---|---|---|
| Seat utilization >80% | Usage data | Propose the next seat tier in the renewal, priced as growth, not penalty. |
| Repeated plan-limit hits | Usage data, support tickets | The strongest signal. Scope the upgrade before the workaround hardens. |
| Invites from a new team | User list, email domains | Ask who the new group is; a second use case is a second line item. |
| Sustained API usage growth | Usage data | They are building on you. Discuss volume tiers before an overage surprise. |
| Inbound "does it also do X" | Support, sales inbox | Log it - three of these is a roadmap slide in the QBR. |
| Champion promoted or new exec sponsor | LinkedIn, meeting attendees | New budget authority. Congratulate, then book 15 minutes to re-anchor goals. |
| Hiring spree or funding round | Job boards, news | Headcount growth is seat growth. Put it on the T-60 agenda. |
The QBR skeleton
Thirty minutes, five slides maximum, their data. QBRs die when they become feature tours; keep the agenda about the customer's numbers.
- 1. Their goals, restated (3 min). What they said success looked like. If you never wrote it down, this QBR's output is writing it down.
- 2. Outcomes against those goals (10 min). Their numbers - hours saved, revenue influenced, tickets deflected. No outcome data? That absence is the health finding: grade red.
- 3. Adoption gaps (5 min). What they pay for and do not use, and what closing each gap is worth - where yellow accounts turn green.
- 4. Roadmap, filtered (5 min). Only items that map to their goals. Three maximum.
- 5. Next-quarter plan and the commercial path (7 min). Success plan, renewal date on the table, expansion scoped if signals exist. The only block where money is discussed.
The artifact: renewal pipeline + T-minus sequence
Two payloads. The first creates the pipeline via POST /v1/pipelines - key, name, and an ordered stages array of {key, label} objects. The second creates the cadence via POST /v1/sequences: it enrolls the deal's primary contact the moment a deal in renewals moves into health_check, sends the T-90 email immediately and the T-60/T-30 emails 30 days apart. Each step's delay counts from the previous send, so the whole schedule hangs off that T-90 move into health_check - a move driven by an agent reading the deal's renewal_date custom field (create it with POST /v1/fields). exit_when is re-checked before every send and the instant the deal changes, so a deal that moves forward - or churns - never gets a stale email.
{
"key": "renewals",
"name": "Renewals",
"is_default": false,
"stages": [
{ "key": "upcoming", "label": "Upcoming" },
{ "key": "health_check", "label": "Health check (T-90)" },
{ "key": "value_review", "label": "Value review (T-60)" },
{ "key": "proposal", "label": "Proposal (T-30)" },
{ "key": "negotiation", "label": "Negotiation" },
{ "key": "renewed", "label": "Renewed" },
{ "key": "churned", "label": "Churned" }
]
}
{
"name": "Renewal T-minus cadence",
"trigger": {
"event": "deal.stage_changed",
"filter": [
{ "field": "pipeline", "op": "eq", "value": "renewals" },
{ "field": "stage", "op": "eq", "value": "health_check" }
]
},
"exit_when": [
{ "field": "stage", "op": "in", "value": ["proposal", "negotiation", "renewed", "churned"] }
],
"steps": [
{
"wait_days": 0,
"subject": "Quick check-in - anything in the way?",
"body": "<p>Hi {{first_name}},</p><p>Your renewal is about three months out, so this is the point where I ask: is anything in the way of you getting full value? Blockers, missing features, teammates who never onboarded - reply with whatever is on the list and we will clear it while there is time.</p><p>Nothing commercial in this email. That conversation comes later, and it goes better when everything works.</p>"
},
{
"wait_days": 30,
"subject": "30 minutes on your numbers this quarter",
"body": "<p>Hi {{first_name}},</p><p>I would like to walk you through what your team actually did with the product this quarter - adoption, outcomes against the goals we set, and what is underused. Thirty minutes, five slides, your data.</p><p>If there is anything you want on the agenda, reply and I will add it.</p>"
},
{
"wait_days": 30,
"subject": "Your renewal - written terms this week",
"body": "<p>Hi {{first_name}},</p><p>Your renewal date is about 30 days out. You will have written terms from me this week - same scope by default, plus the options we discussed in the review if you want them.</p><p>If anything changed on your side - budget, team, scope - tell me now and I will build it into the proposal instead of negotiating it later.</p>"
}
],
"enroll_existing": false
}
Note: deals without a primary_contact_id do not enroll; enroll_existing: true would immediately enroll deals already in health_check. Enrollment is idempotent per contact.
Apply it with your agent
If your agent speaks MCP, point it at https://api.relmcrm.com/mcp with a bearer key and paste:
Connect to the Relm MCP server. Then:
1. Call relm_describe_schema. Create the custom deal field renewal_date (date)
via relm_create_field if it does not exist.
2. Create the "Renewals" pipeline exactly as in the pipeline JSON above.
3. Create the "Renewal T-minus cadence" sequence exactly as in the sequence
JSON above, then preview it and confirm the step schedule is 0 / 30 / 60 days.
4. For every customer on an annual contract, create a deal in the Renewals
pipeline, stage "upcoming", amount = current ARR, custom_fields.renewal_date
set, and the account champion as primary contact.
5. Every day, move deals in "upcoming" whose renewal_date is 90 days out or
less into "health_check" - that move enrolls the champion in the cadence.
Use my test key first; only repeat on live after I confirm.
Over REST, post the sequence payload from a file. Rehearse with a relm_test_ key - test-mode sends are simulated, never delivered - then re-run with relm_live_:
curl https://api.relmcrm.com/v1/sequences \
-H "Authorization: Bearer relm_test_..." \
-H "Content-Type: application/json" \
-d @renewal-cadence.json
Before enabling anything on live, hit GET /v1/sequences/{id}/preview - a dry run that returns the step schedule and who would enroll right now, with no side effects. Full reference in the docs; if the agent is new to CRM work, start with how to give your AI agent a CRM. For what should fire on every pipeline move beyond email, see the stage-change playbooks; for accounts already dark, use the re-engagement sequence instead.
FAQ
When should a renewal cadence start?
Ninety days before the contract date at minimum, 120 for enterprise accounts with procurement or legal review. At T-90 you can still fix a red account; at T-30 you can only discount it. The first touch is a health check with nothing commercial in it - the commercial conversation earns its place at T-30.
Should renewals get their own pipeline?
Yes. Renewal deals start at roughly 85-90% probability and fall when neglected, while new business starts near 20% and climbs - mixing them makes both forecasts wrong. A separate pipeline also makes revenue retention computable straight from the terminal stages.
What are the strongest expansion signals?
Seat utilization above 80% of the licensed count, repeated hits on plan limits, invites landing in a new team or department, sustained API usage growth, and inbound "does it also do X" questions. Log each one on the renewal deal; scope the expansion in the T-60 value review and price it into the T-30 renewal proposal.
What does a good QBR agenda look like?
Thirty minutes, five blocks: restate their goals (3 min), outcomes against those goals using their numbers (10), adoption gaps (5), roadmap items relevant to them only (5), next-quarter success plan plus the renewal and expansion path (7). No feature tour. If you cannot show outcome data, that absence is the health finding - grade red and fix measurement first.
Can I use this cadence without Relm?
Yes. The T-90/T-60/T-30 structure, the pipeline stages, the expansion checklist and the QBR skeleton are tool-agnostic - run them from any CRM plus a calendar. Relm is simply the fastest way to apply them: two API calls or one MCP prompt, free on 1,000 requests a month.
Never learn about a churn at T-7 again
1,000 requests a month on the Free plan, no card. See pricing.
Start free →