Skip to main content
Best Practices

Contracts and renewals: keeping recurring clients on the right terms

Start the renewal 60 days before the contract ends, build it as a new quote — copy, template, or Create Renewal Quote — then update costs and recount seats so the next term is on today's numbers.

Written By Mike Forte

Last updated 2 days ago

A recurring contract in your Professional Services Automation (PSA) system does not extend itself in Salesbuildr. The next term is a new deal: a new quote, today's costs, and today's quantities. If you wait until the week the contract ends, there is no time to review the stack, re-price, get internal approval, and get the client to accept — and you risk a coverage gap.

Start 60 days before the end date. Treat the renewal as a new quote, not an automatic extension. Copy last year's proposal or start from a template — both work, and copying saves time — then review every line. Re-price to what you pay today, tell the client about vendor increases you absorbed during the term, and re-count users, endpoints, and servers so you are not over- or underbilling.

The building blocks are:

  • A list of contracts that are actually ending — Contract expirations, the Contracts ending in filter, or the company Contracts tab
  • A new quote for the next term (not an edit of the won quote from last year)
  • Catalog costs (and a pricing book when this client has negotiated rates)
  • Current quantities from the live contract and from Whitespace, not last year's seats

How to assemble any quote from catalog and templates is in Quoting best practices for new quoters. This article is the renewal loop around that job.

Do this in order

  1. Find the contract 60 days out — so review, re-quote, and approval finish before the end date.
  2. Open a new quote — copy the previous proposal, start from a template, or use Create Renewal Quote from the contract. Review every line either way.
  3. Re-price — update cost to what you pay today, and explain absorbed vendor increases so the new number is not a surprise.
  4. Explain why it matters — open with an executive summary of what you delivered and why continuing matters, before the price.
  5. Re-count — users, endpoints, and servers on the live contract, not last year's quantities.
  6. Set the new term and send — Contract duration, then your approval path. After the quote is approved, Add items to contract writes the new service lines to the PSA.

1. Start 60 days before the contract ends

Sixty days is a process, not a Salesbuildr timer. Use it so you can review the stack, rebuild the quote, run internal approval, and still leave the client time to accept before the current term ends.

Salesbuildr does not have a "60 days" filter. Find the work here:

WhereWhat you getWhen to use it
Dashboard → Expiring contractsCount of contracts ending in this quarter, with a link into the calendarMonday scan of the book
Whitespace → Contract expirationsA 12-month calendar of active contracts and their end datesPlanning the next two months of renewals
Whitespace → Contracts ending inPresets: This month, This quarter, This year, and similarA call list for the current window
Company → ContractsThat customer's active contracts, line quantities, and Create Renewal QuoteWhen you already know who is due

Whitespace needs the whitespace feature and the Whitespace viewer permission. If you do not have Whitespace, open the company and use the Contracts tab — that tab appears when PSA contracts (or RoutIT / Pax8) are connected. From an open quote, Open contracts is the same list for that customer.

Only active contracts with a future end date appear. Inactive Autotask contracts do not show on Contract expirations, even if the end date is still ahead. If a card looks wrong, open it and click Update to re-import that company from the PSA before you treat the date as real.

On Whitespace, a green tile is existing coverage. Do not create a second sale for a service they already have — open Contracts on that tile and renew from there. A red dot on a green tile is underbilling (they already pay below list). That is often the fastest correction you will make at renewal.

2. Treat the renewal as a new quote

Do not reopen last year's approved quote and extend it. That quote is the record of the term that is ending. The next term needs its own draft, its own opportunity, and a full line review.

Three ways to start. Copy or a template both work; copying is faster when last year's proposal is still the right shape.

Copy the previous quote

  1. Open last year's quote from Quotes or the company Quotes tab.
  2. Click Make a copy in the quote sidebar.
  3. Leave Keep prices on copy off (that is the default). Salesbuildr then re-reads cost and sell price from the catalog (and any pricing book on the company) instead of freezing last year's numbers.
  4. Leave Quick quote on so the copy gets a new opportunity for the new term. Turn it off only when you already created that renewal opportunity and want this quote on it.
  5. Create the copy and land in the quote editor.

The copy brings layout, widgets, descriptions, quantities, and Contract duration. That is why it is fast. It is also why you still review every line: quantities are last year's, not today's contract units, and a line you should have dropped is still there.

Turn Keep prices on copy on only when you intentionally want last year's sell prices. For a renewal that is almost always the wrong choice.

Create a new quote from a template

Use this when last year's quote is a mess, the stack changed, or you already have a dedicated renewal template.

  1. Open the company or press Q.
  2. Pick the template for this deal type (managed services, renewal, mixed).
  3. Add the listed services the client should be on for the next term — do not type a one-off product in the editor.
  4. Review every line: name, Term, quantity, cost, sell price, and whether the line still belongs.

A template does not set Contract duration. Set that in Manage settings after the quote exists — see Getting the contract term right on every quote.

Create Renewal Quote from the live contract

When the PSA contract is the source of truth for what is billed, start from the contract instead of from last year's PDF.

  1. Open Contracts on the company, from a Whitespace green tile, from Contract expirations, or from Open contracts on a quote.

  2. Expand the contract. Click Create Renewal Quote. To renew several contracts on the same company at once, use Renew All — unless any of those contracts include service bundles. Renew All is blocked when a selected contract has bundles; a single Create Renewal Quote still runs and simply leaves those bundle lines off the new quote.

  3. Confirm any warnings. Services that were never imported, and unlisted products, are skipped. Service bundles on the contract are not copied onto the new quote — add those lines yourself if they still belong.

    Before you renew, make sure every service on the contract is Listed in your catalog. Unlisted services are not added to the renewal quote. Create Renewal Quote warns you before skipping them. Renew All does not: it shows the unlisted services in the create dialog, then leaves them off the quote without a warning. After creating the quote, compare its lines against the contract and add any missing services yourself.

    Each line uses the linked catalog product's name, description and price, not the service name or price on the PSA contract. If the names differ, check the product link before you send so the client recognizes every service.

    The renewal quote does not take its term from the contract. It starts on the workspace default, so a 36-month contract renews as a 12-month quote unless you change Contract duration in Manage settings.

  4. In the new-quote dialog, pick a template so the proposal has the right layout. Saving creates a new draft and a new opportunity, with the contract's linked catalog services and current contract quantities already on it.

Prices on this path come from the Salesbuildr catalog (and a pricing book on the company), not from the unit price the PSA is billing today. That is the point of a renewal: you are proposing the next term at today's list, not reprinting last year's invoice.

If every line comes out at $0.00, the catalog Price on those services is zero (common when a HaloPSA item was imported with no recurring price). Fix the product, or edit the line, before you send. Do not assume the live contract price was copied across — it was not.

Add to existing quote / Add to quote on an open quote is a different path: it can add contract lines with a negative quantity for churn. Do not use that when the intent is to renew.

Review every line on all three paths. Copying saves time. It does not make the proposal correct.

3. Re-price at what you pay today

During the term it is common to absorb a vendor increase so you do not reopen the contract. At renewal, that absorbed cost is now your baseline. If the new quote still uses last year's sell price, you donate the increase again. If the sell price jumps and nobody explained why, the client treats it as a surprise.

Update cost first

  • Catalog — Open each recurring service on Products and confirm Cost and Price match what you pay and charge now. Dynamic pricing refreshes hardware with a manufacturer part number from the distributor feed. Recurring services do not follow that feed; someone has to keep those costs current on the product.
  • Copy with Keep prices off, or Create Renewal Quote — both write catalog (and pricing-book) amounts onto the new lines. That only helps if the catalog is already right.
  • Pricing book — If this company has a negotiated rate, use ⋯ → Apply pricing book on the draft. Check prices re-runs book and distributor lookup on existing draft lines. Check prices only refreshes lines that already have a distributor — it will not update a typical managed-service line.
  • Vendor renewal file — A spreadsheet of renewal costs belongs on Importing special bids and deal-reg pricing, not typed onto one line in isolation.

Prices freeze on the line once they are written. Editing the catalog later does not move a draft you already created. Re-add the line, or use Apply pricing book / Check prices on a draft. Sent quotes cannot be refreshed this way — retract first. An approved quote cannot be retracted.

Look at the quote Details tab (your team, not the client): Financial summary splits cost, sell, and margin into one-time and recurring. If recurring margin collapsed, a cost moved and the sell price did not.

Tell the client before they see the total

A higher number with no story looks like a grab. Put the reason on the proposal, in a Content & Products (or HTML) widget the client will actually read:

  • What increased (vendor, license, or cost of the stack)
  • That you held the old sell price during the current term
  • What the new monthly / yearly amount is, and what Contract duration it runs over

Turn on Show one time and recurring total summary and Show contract term total so the new commitment is visible as a term, not only as a monthly row. How to present those figures is in Presenting licenses and services so clients see the value.

Whitespace underbilling (red dot, or Contract items → Price Differs From List Price → Yes, lower) is the same conversation from the other side: they are already below list. Renewal is when you correct it, not a blue upsell tile for a service they already have.

4. Explain why the renewal matters before the price

The most common renewal mistake is sending a quote that is only a price list. Open the renewal proposal with an executive summary widget that covers what you delivered during the term and why continuing matters, before any pricing. This follows the buyer's decision journey — see Building proposals that win: the buyer's decision journey and Building widgets without starting from scratch.

5. Re-count users, endpoints, and servers

Last year's quantity is a snapshot. Headcount, devices, and servers move. Billing last year's seats under-bills growth; billing seats they turned off is how you lose the renewal conversation.

Create Renewal Quote starts from current contract units. That is a better default than a copy, but it is still only what the PSA is billing — not necessarily what is in the building. Make a copy starts from last year's quote quantities. Either way, confirm the number before you send.

What you are countingWhere to lookWhat to do on the quote
Seats / usersWhitespace Users (when a Users & Devices strategy is on); contract lines tagged USER; the company field your PSA stores as headcountSet the license or per-user service quantity to today's count
Endpoints / devicesWhitespace Devices; contract lines tagged DEVICESet the per-device managed-service quantity
Servers / other unitsCompany Contracts dialog and the Contract items tab (Quantity)Match each line to the unit you actually bill

Settings → Platform → Miscellaneous → Users and devices calculation strategy only fills the Users and Devices columns. It does not change coverage tiles or rewrite quote quantities for you. Disabled hides the columns. PSA Custom Field uses a numeric company field. Contract Item Reference sums lines you tagged USER or DEVICE in Salesbuildr.

A 0 in Users or Devices is not "they have nobody." It usually means the field is empty, the type is unmapped, or no line is tagged. Trust a zero only after you have opened Contracts.

Change quantity on the draft line. Do not send a copy whose seats you never opened.

6. Set the new term, send, then write the PSA

Before Send:

  1. Open Manage settings and set Contract duration to the new term (months or years), not the leftover months on the expiring contract. Create Renewal Quote and a template do not copy that number from the PSA contract. A copy brings last year's duration — confirm it is still the term you sell.
  2. Set Contract start date when it appears (once a duration is set). Recurring lines share that one start.
  3. Confirm Expires at on send so the proposal does not sit past the current contract's end date. Follow-up and reminders: Follow up on quotes and manage your pipeline.
  4. Send through your usual approval rules. A renewal that corrects underbilling or a vendor increase is exactly the quote those rules are for.

Creating the renewal quote does not change the PSA. After the quote is approved, a quote manager uses Add items to contract on the sidebar Contract items card to push service lines to an existing contract or a new one. That writes new service lines (and an effective date). It does not silently extend or replace the old contract. One-time hardware goes through procurement, not this button. Step-by-step: Quote Editor — Contracts.

Checklist before you send the renewal

  • The contract is on your list about 60 days before it ends (Dashboard Expiring contracts, Contract expirations, or Contracts ending in)
  • You built a new quote — you did not reopen last year's approved proposal
  • You either copied (Keep prices off) or started from a template, or used Create Renewal Quote from the contract
  • Every line has been reviewed: still sold, right Term, not a leftover bundle or unlisted skip
  • Every service on the contract made it onto the quote, including any that were unlisted
  • Cost is what you pay today; catalog or pricing book is current
  • The proposal explains any increase you absorbed during the term
  • The proposal opens with an executive summary of what was delivered and why continuing matters
  • Users / endpoints / servers match today's count, not last year's quote
  • Contract duration and Contract start date are the new term
  • Internal approval and the client still have time before the end date
  • After accept, Add items to contract is a separate, deliberate step

See also