Every retainer renewal surfaces 90 days out and moves through a real pipeline, so agreements get renewed instead of quietly lapsing.
Bring your stack to a call and we will scope it against how your business actually runs.
Book a callRetainer revenue is the most profitable money a professional services firm earns. The scope is known, the team is staffed, the relationship is already paid for, and the margin does not have to carry an acquisition cost. It is also the revenue most firms lose by accident. Nobody sits down and decides to let a retainer lapse. The anniversary date sits inside a signed PDF in a shared drive, the partner who sold the work is heads-down on delivery, and the month the agreement actually runs out is the month nobody remembers to send the renewal paperwork. Three weeks later the team is still working, no current agreement exists, and the next invoice turns into an uncomfortable conversation about whether the client ever agreed to another year.
The leak is timing, not persuasion. A renewal worked ninety days out is a conversation about the next phase of work, held while the last quarter of wins is still fresh and before the client has started building next year's budget without you. The same renewal worked eight days out is a scramble: the client has no time to review terms, the procurement contact is on leave, and the only move left is a month-to-month extension at the old rate. That extension is where the second leak opens. Rates never get reviewed, scope creep never gets priced in, and a retainer signed three years ago keeps running at three-year-old numbers while the cost of delivering it has climbed every quarter.
The third failure is invisibility. Ask most firms what is up for renewal this quarter and what it is worth, and the answer takes someone an afternoon of digging through contracts and invoices. Without that view there is no forecast, no capacity plan, and no way to tell the difference between a client who is drifting and a client who is simply quiet. By the time a lapse is visible it has already happened. This build makes the renewal calendar a pipeline object instead of a memory, puts a dated clock on every active agreement, and runs the outreach that turns a dormant anniversary into a worked opportunity.
One pipeline, Retainer Renewals. Every active retainer lives in it permanently, not just the ones in their renewal window, so the pipeline doubles as the register of agreements in force.
A second pipeline, At Risk Review, holds accounts flagged during the window that need a partner-level intervention rather than a sequence. Three stages: Flagged, Partner Contacted, Resolved.
On the contact or account record, depending on how the firm models clients:
BO handles the inbound half of the window. When a client replies to a recap or a nudge, BO reads the reply, answers scheduling and logistics questions, and books the Renewal Conversation directly against the owner's calendar.
Trigger: submission of the internal Retainer Setup form, or an opportunity entering the stage Signed - Rolled Over.
Conditions: none. This runs on every new or renewed retainer so the register is never partial.
Actions in order:
Exit: single pass, no waits. Re-running on the same record overwrites the dates cleanly, which is exactly what a renewal needs.
Trigger: daily scheduled scan at 06:00 firm time over all contacts tagged retainer-active.
Conditions: retainer_end_date is exactly 90 days from today. Not tagged renewal-paused. Not already tagged renewal-t90.
Actions in order:
Exit: contact loses retainer-active, gains renewal-paused, or the risk flag is At risk.
Trigger: completion of workflow 2 on the Healthy or Watch branch.
Conditions: not tagged renewal-meeting-booked, renewal-at-risk or renewal-paused at each step.
Actions in order:
Exit: renewal-meeting-booked applied, the Renewal Confirmation form is submitted, renewal-at-risk or renewal-paused applied, or the opportunity closes.
Trigger: daily scheduled scan at 06:00 over contacts tagged retainer-active.
Conditions: retainer_end_date is exactly 60 days out, or exactly 30 days out. Not tagged renewal-meeting-booked, renewal-signed, renewal-at-risk or renewal-paused.
Actions in order, T-60 branch:
Actions in order, T-30 branch:
Exit: any of the suppression tags, a booked meeting, or form submission.
Trigger: a booking is created on the Renewal Conversation calendar.
Conditions: branches on appointment status after the slot time.
Actions in order:
Exit: after the post-meeting branch resolves.
Trigger: opportunity moved to Renewal Terms Out.
Conditions: next_term_value must be populated, otherwise the workflow halts and tasks the owner to fill it. Branch on rate-review-due to choose the standard or the uplift version of the terms template.
Actions in order:
Exit: signature received, opportunity closed into Not Renewing, or renewal-paused applied.
Trigger: renewal-at-risk applied, by the owner manually, by BO on a termination or pause signal, or by workflows 4 and 5.
Conditions: none. This path always involves a human.
Actions in order:
Exit: flag removed, or non-renewal recorded.
Trigger: opportunity closed into Not Renewing, or the daily scan finds retainer_end_date is yesterday with no renewal-signed tag.
Conditions: branch on whether the outcome was a decision or a drift.
Actions in order:
Exit: after the single win-back attempt, or on re-signature, which routes back to workflow 1.
Trigger: scheduled, first Monday of each quarter at 07:00 firm time. Also runs on the first Monday of each month in a shorter form.
Conditions: none.
Actions in order:
Exit: single pass each run.
The renewal stops being an act of memory. Every agreement in force has a dated clock attached to it, and that clock opens a worked opportunity ninety days out whether or not anybody happens to think of it. The firm's first renewal conversation moves from the last two weeks of a term to the first week of the window, which is the difference between negotiating from strength and asking for an extension.
Three operational changes follow. Rate reviews actually happen, because the clock flags a retainer that has run twelve months at the same number and the terms workflow picks the uplift template automatically. Silent lapses become loud, because a term ending with no renewal on record generates an urgent notification to the partner and a hold instruction to finance rather than an unbilled month of delivery. And the renewal book becomes a number leadership can see on the first Monday of the quarter without anybody opening a contract folder.
What to measure, from the pipeline rather than from anyone's impression:
The second-order effect is capacity planning. Once renewal dates and next-term hours are structured fields rather than prose in a PDF, the firm can see committed delivery hours three months forward and staff against them instead of reacting.
This build is only as good as its clock, and the clock reads one field. Before switching anything on, somebody has to go through every live agreement and populate retainer_start_date, retainer_end_date, retainer_term_months, notice_period_days and auto_renew_clause for each one. Budget real time for this - it is usually a day or two of someone reading contracts, and it is the step firms skip and then wonder why half their renewals never surface. Run the daily scan in reporting-only mode for a week first, so you can see which accounts it would have flagged and catch bad dates before a client receives anything.
Every build on this page is something we configure, test and hand over with the SOPs your team needs to run it.
Book a call