How to track renewals and expansions as Professional Services Founders

Sales & CRMFor Professional Services Founders2 apps12 steps~24 min to set up

Retainer renewals and expansion conversations sneak up on you because your contract end dates live in a Google Drive folder, your deal stages are in HubSpot (if someone remembered to update them), and your actual revenue-per-client data is buried in Stripe or a QuickBooks report you pull manually at month-end. You find out a retainer is expiring when the client asks what's next, not three weeks before when you could have built a case for expanding scope. At a 12-person consultancy, one missed renewal conversation can be $8,000–$40,000 of ARR walking out the door. There's no renewal queue. There's no expansion playbook. There's a spreadsheet somebody stopped maintaining in Q3.

Sales & CRMFor Professional Services Founders2 apps12 steps~24 min to set up
Outcome

What you'll set up

A live renewal dashboard that pulls contract end dates, current retainer value, and last-contact date into one view — so you see every account coming up for renewal in the next 90 days without opening five tabs
Automated alerts that fire 60 and 30 days before a contract expires, with a pre-drafted expansion email ready for you to review and send
A per-client revenue and engagement summary that combines Stripe invoice history, Gmail thread recency, and HubSpot deal stage — so you walk into every renewal call knowing exactly what to ask for
The Starch recipe

Apps, data, and prompts

The combination of Starch apps, the data sources they pull from, and the prompts you use to drive them.

Data sources & config

Starch syncs your Stripe data on a schedule (invoices, subscriptions, charges) and syncs your HubSpot contacts, companies, and deals on a schedule. Starch also syncs your Gmail threads on a schedule so last-contact dates and out-of-scope request history are always current. Contract end dates and terms are pulled into the CRM from your connected sources; if your contracts live in Google Drive, Starch can automate reading them through your browser — no API needed. Contract Lifecycle Management (coming soon) will handle end-to-end contract tracking natively once it launches; in the meantime, the CRM app covers the renewal pipeline view.

Prompts to copy
Build me a renewals tracker that shows every active client, their contract end date, current monthly retainer value from Stripe, the last date someone on my team emailed them from Gmail, and their current deal stage from HubSpot. Sort by days until renewal, flag anything under 60 days in red.
Set up an automation that runs every Monday morning, checks which client contracts are expiring in the next 60 days, drafts a personalized renewal or expansion email for each one using the client's invoice history and recent email thread as context, and sends me a Slack message with the drafts for review before anything goes out.
Create a per-client expansion scorecard: show me each retainer client's average monthly spend over the last 6 months from Stripe, the number of out-of-scope requests they've made (pull from Gmail threads where they asked for work outside the retainer), and a recommended expansion ask based on that data.
Run these in Starch → or paste them into your favorite agent
Walkthrough

Step-by-step

1 Connect Stripe in Starch — Starch syncs your invoices, subscriptions, and payout history on a schedule so every client's real revenue number is always current, not last month's export.
2 Connect HubSpot — Starch syncs your contacts, companies, and deals on a schedule; your existing pipeline stages and deal properties carry over without any remapping.
3 Connect Gmail — Starch syncs your message history on a schedule so the system knows the last time anyone on your team was in active conversation with each client.
4 Open the CRM app and tell Starch: 'Build me a renewals pipeline view with these fields: client name, contract end date, current retainer value, last email date, HubSpot deal stage, and days until renewal. Flag anything under 60 days.' Starch builds that view against your live data.
5 Add your contract end dates directly in the CRM if they're not already in HubSpot — type them in or tell Starch to read them from your Google Drive folder through browser automation.
6 Set up the 60-day alert automation: tell Starch, 'When a contract end date is 60 days away, draft a renewal email using that client's Stripe invoice history and our last three Gmail threads as context, then Slack me the draft.' Starch wires this as a scheduled check.
7 Set up the 30-day escalation: tell Starch, 'If a contract is 30 days from expiry and I haven't sent a renewal email yet, Slack me again with a higher-priority flag and a shorter draft nudging the client to confirm next steps.'
8 Build the expansion scorecard — tell Starch: 'For each active retainer client, show me their average monthly Stripe revenue over 6 months, the count of Gmail threads where they asked for work outside scope, and a suggested expansion line item based on that pattern.' Review this monthly before board or partner meetings.
9 Before each renewal call, ask Starch: 'Give me a one-page briefing on [client name] — their invoice history, any outstanding scope creep threads, current deal stage, and what a 20% retainer increase would look like in annualized terms.' Use this as your call prep.
10 After each renewal is closed, update the deal stage in HubSpot and tell Starch: 'Log the new contract end date and updated monthly value for [client] and remove them from the active renewal queue.' The dashboard updates immediately.
11 Review the renewal pipeline every Monday in your weekly standup — the Starch Slack summary gives the whole team visibility without a separate meeting or status email.
12 When Contract Lifecycle Management launches (coming soon), migrate your contract repository there for end-to-end tracking with automated renewal alerts, e-signature collection, and a full audit trail built in.

See this running on Starch

Connect your tools, describe what you want, and the agent builds it. Closed beta is free.

Try it on Starch →
Worked example

Q2 2026 Renewal Sweep — April through June

Sample numbers from a real run
Meridian Capital (strategy retainer)18,000
Vela Group (fractional CFO retainer)9,600
Thornwood Partners (market entry engagement)24,000
Castlepoint Logistics (ops advisory)7,200

In April, your Starch renewals dashboard flagged four clients with contracts expiring before June 30, totaling $58,800 in annualized retainer value. Without the dashboard, you would have caught Meridian Capital three weeks late — they'd already started budgeting calls with a competing firm. Instead, Starch drafted a renewal email for Meridian in week one of April, pulling from six months of Stripe invoices ($18,000/month average) and noting three Gmail threads where they'd asked for work outside the original scope. You reviewed the draft, adjusted the ask from flat renewal to a 15% expansion ($20,700/month), and sent it. They signed within a week. Vela Group renewed flat at $9,600/month after a quick call — Starch's briefing showed their usage had been light, so you didn't push for an increase. Thornwood was trickier: the $24,000 engagement was project-based with a defined end, and Starch flagged it as expiring but also surfaced four Gmail threads where their COO had asked about ongoing support. You used that data to propose a $6,000/month light retainer for post-engagement advisory — they accepted. Castlepoint renewed flat. Total Q2 renewal outcome: $58,800 retained, $32,400 in new annualized value from the Thornwood and Meridian expansions, zero renewals missed.

Measurement

How you'll know it's working

Retainer renewal rate (% of expiring contracts renewed, target >85%)
Average retainer value at renewal vs. prior contract (expansion rate)
Days from renewal alert to first outreach (target <7 days)
Revenue at risk in the next 90 days (rolling dollar value of expiring contracts)
Scope creep conversion rate (% of out-of-scope requests converted into formal expansion)
Comparison

What this replaces

The other ways teams handle this today, and how the Starch version compares.

HubSpot Sales Hub (Deals + Reminders)
HubSpot tracks deal stages well but won't correlate Stripe invoice history, Gmail thread recency, and contract end dates into a single renewal view without significant custom configuration and a dedicated HubSpot admin to maintain it.
Google Drive folder + calendar reminders
Costs nothing to set up but requires someone to manually update a spreadsheet and set calendar reminders for every contract — the thing that already isn't happening reliably at your firm.
Kantata / Projector / Deltek
Purpose-built for professional services but priced and scoped for 100+ person firms; implementation takes a quarter and requires a dedicated ops person to maintain, which doesn't exist at a 12-person shop.
Salesforce + a custom renewal dashboard
Powerful enough to do everything described here, but you're looking at a Salesforce admin, a developer for the custom objects, and a price tag that rivals hiring a junior account manager.
On Starch RECOMMENDED

One platform — crm, contract lifecycle management all running on connected data. Setup in plain English; numbers stay current via scheduled syncs and live agent queries.

Try it on Starch →
FAQ

Frequently asked questions

My contract end dates aren't in HubSpot — they're in a Google Drive folder. Can Starch still track them?
Yes. If your contracts are in Google Drive documents, Starch can automate reading them through your browser — no API needed. You can also manually enter end dates directly into the Starch CRM for any client, and they'll persist alongside the synced Stripe and HubSpot data. The cleanest long-term solution is Contract Lifecycle Management (coming soon), which will store and track contracts natively.
Will this replace HubSpot, or do I keep both?
You keep HubSpot. Starch syncs your HubSpot deals, contacts, and companies on a schedule and builds views and automations on top of them. Your team keeps working in HubSpot the same way; Starch adds the renewal intelligence layer without forcing a migration.
What if a client's retainer is invoiced through QuickBooks instead of Stripe?
Starch syncs QuickBooks on a schedule too — invoices, bills, payments, and vendors. You can pull retainer revenue from QuickBooks exactly the same way as from Stripe. If you use both, Starch can surface data from both in the same dashboard.
Is Starch SOC 2 Type II certified? My clients sometimes ask about data security.
Not yet — Starch is not currently SOC 2 Type II certified. If a specific client engagement requires it, that's worth knowing upfront. It's on the roadmap.
The Gmail sync shows the connector's name, not Starch — will my clients see that?
The Gmail OAuth consent screen currently shows the name of Starch's underlying verified client, not 'Starch.' This only affects your team's connection setup, not anything client-facing. A Starch-branded OAuth screen is on the roadmap.
I have some clients on annual contracts and some on month-to-month retainers. Can the renewal tracker handle both?
Yes. When you build the renewals view, you can tell Starch to treat month-to-month retainers as rolling (no hard expiry alert) and set explicit 60- and 30-day alerts only for fixed-term contracts. You describe the logic; Starch applies it to each deal record.
Contract Lifecycle Management is listed as coming soon. What do I do until it launches?
The CRM app covers the renewal pipeline view today — contract end dates, retainer values, last-contact tracking, and automated alerts all work now. Contract Lifecycle Management adds native contract drafting, e-signature workflows, a clause library, and a full audit trail. Request beta access on the Starch site to get notified when it launches.

Ready to run track renewals and expansions on Starch?

Request closed-beta access. Everything is free during beta.

You're on the list! We'll be in touch soon.