salesascode
← All feature docs
Feature docs · /renewals

Renewal Workspace

Your renewals bucketed by quarter with the ARR at stake, gross and net revenue retention computed only from resolved renewals, and a churn list from Stripe with drafts for each customer.

Included with cscron . A seat without it sees an upsell here instead of the page.

Overview

Renewal Workspace is the cscron renewal view: it buckets every account up for renewal by the quarter it renews, shows the ARR at stake and how much is at risk, and computes gross and net revenue retention from the renewals that have already resolved. It reads the same book the customer-health scorer works, so the at-risk weighting lines up with the health score.

What it is for, on the page. Under the headline, this page says what it produces, what makes it run, and where the output lands. Every Work page reads that line from one registry, so the three answers cannot drift from the page.

Pipeline by quarter

Every open account with a renewal date is bucketed into its calendar quarter, earliest first. Each bucket shows the number of accounts, the total ARR up for renewal, and an at-risk ARR figure weighted by each account's churn risk where the health score is known. Accounts with no renewal date are not counted as pipeline, and accounts whose renewal has already resolved move out of the pipeline into the retention calculation.

Gross and net revenue retention

Retention is computed only from renewals with a resolved outcome and a recorded prior-period ARR. Gross revenue retention (GRR) is renewed ARR over prior ARR, so it excludes expansion and can only stay flat or fall. Net revenue retention (NRR) adds expansion back in, so it can exceed 100%. If a renewed account is not itemized, its renewed ARR defaults to its prior ARR. A book with no resolved renewals yet shows "not enough resolved renewals" rather than a fabricated rate, because a retention number you cannot evidence is worse than none.

Churn: card failed and chose to leave

When you connect Stripe, the Churn section lists your own customers whose money stopped, in two tables. Card failed holds failed payments and subscriptions Stripe ended after a payment failed. Chose to leave holds cancellations. Each row shows the customer, the reason, the amount and the drafts written for it, and each draft links to the cscron console.

For a failed payment you get one short email, timed to why it failed. An expired card or a plain decline is drafted to go now, with the link to pay that Stripe put on the invoice. When the bank turned the payment down for funds, the email waits until the day before Stripe tries the card again, or three days when no retry date is known, and it does not mention money in the account. A payment that was paid before the email was drafted stays on the list as "Failed, then paid", with nothing to send.

For a cancellation you get one exit question and one win-back message, both written for the reason the customer picked in Stripe (too expensive, missing features, not using it and so on). When they gave no reason, the exit question asks for one. The win-back stays out of your queue for two weeks. A subscription that ended in a payment dispute gets no draft: answer the dispute first.

Nothing on this list sends. Every draft waits in your queue until you enter the recipient and approve it on Campaigns, and an email from a mailbox paused for bounces is refused there. While a mailbox is paused, no new churn drafts are written; the row says so and the drafts follow once you resume. The drafts are fixed templates, not AI output, so they say exactly what is shown here. The list covers events from the last 30 days, which is as far back as Stripe's event history goes.

Where the data comes from

The workspace reads your accounts and their renewal dates, ARR, and any resolved outcome from your connected CRM and stored records. If you have not connected a CRM or added renewal dates yet, the pipeline is empty rather than filled with placeholders. As renewals resolve and outcomes are recorded, the retention section fills in on its own. Turning the workspace into a renewal play stays with the cscron drafting skills.

When a load fails

If the page cannot load, every panel on it says so. Painting the failure into only one card used to leave its neighbours on "Loading…" indefinitely, which reads as still-working rather than failed.

Forecast category

Each open renewal in the pipeline has a Forecast column where you make your call: Commit, Best case or Risk. Pick one from the row's menu and it saves straight away; pick the dash to clear it. The call is yours, so the board never fills it in from churn risk, and a renewal you have not called shows a dash. The pipeline footer totals the open ARR you have called Commit, Best case and Risk, and counts the renewals with no call yet, so the totals never pass for the whole book. If a save fails, the row goes back to its last saved call.

What is not shown

The design mockup also drew a drafted at-risk outreach email on each renewal for you to approve or send. It is omitted here: the outreach drafts are generated content from a separate cscron drafting skill, so they would have to be invented on this board. Each account shows its real churn risk instead.