Price a Renewal Campaign From Last Season

Carry last season's per-site prices into a quote campaign, set the increase and rounding for the batch, correct for customers who signed up late, and read each site's history before you approve.

Updated September 29, 2026

A renewal campaign quotes a whole book of customers at once, using what each site paid last season as the starting price. This article covers the three things that decide whether those numbers are right: how much to raise them and how to round them, correcting a price that only ever covered part of a season, and reading each site's history before you approve the batch.

If you have not built a quote campaign before, start with Run a Quote Campaign; the send mechanics are the same as any other quote — see Send a Quote for what the customer receives. If what you mail each spring is a sign-up packet with a respond-by date rather than a plain renewal, use the Season Sign-Up Packet purpose instead - it prices from the rate card at each site's tier and is covered in Run a Season Sign-Up.

Two places an increase can come from

The work type's percentage under Sales and BillingPricing in the Renewal pricing card is the default. A campaign can override it for one batch without touching that setting. De-proration happens before either, so both matter.

Build the campaign

  1. Start a renewal campaign

    Open Sales and BillingCampaigns, stay on the Quote Campaigns tab, and click New Quote Campaign. Leave Renew Last Season's Customers selected, pick the work type, and accept the suggested Season — it decides which year's history the roster reads, which is the one before it.

  2. Price from last season

    On How To Price It, Last Season's Price Per Site is already selected for a renewal (your vertical's noun appears in place of site). Four controls sit underneath.

    Renewal Increase — Work Type Default uses the percentage under Pricing and shows it in the label; A Percentage For This Campaign and A Dollar Amount Per Site apply to this batch only; No Increase renews at exactly last season's figure.

    Round Each Price — keep cents, or round each carried price to the nearest $1, $5, $10, or $25 after the increase.

    If A Customer Has No Prior Contract — skip them with no quote (the default for a renewal), or price them from the template or the rate card.

    Adjust For A Partial Prior Season raises a site's carried price to a full-season rate before the increase, when that site's first visit last season landed after the season opened. It is checked by default on a new campaign.

    The Example line shows the arithmetic on a $1,200 site as you change any of them.

  3. Check five real customers

    Click Price 5 Example Customers. The first five customers in your audience are priced exactly the way the roster will, with last season, this quote, the change percent, and a note when a customer fell back or would be skipped. Change the increase and click Refresh Sample to compare.

  4. Build the roster

    Finish the remaining steps and click Build Quote Roster. The screen shows Building The Quote Roster while it prices everyone, then becomes the review roster. Nothing has been emailed yet.

How the increase is applied

A carried price is de-prorated first, then raised by the percentage, then by the flat amount, then rounded. A flat amount lands once per site, on the site's first service line — a pool with two service lines does not get two increases. Permit fees and other pass-through charges are never raised or rounded.

Last seasonIncreaseRoundingThis season
$1,200+5%keep cents$1,260.00
$1,200+5%nearest $25$1,250.00
$1,200+$25 per sitenearest $10$1,230.00
$400, first visit in August (39% of the season)+10%nearest $5$1,130.00

What proration corrects

A customer who signed up in August paid an August-to-October price. Carrying that number into next season's quote prices a full season at a two-month rate.

OpsVara measures season coverage from the site's first completed visit to the close of the work type's season window, clipped by the prior contract's end date if it closed early. A pond first visited on August 3 of a May 1 – October 1 season covers 60 of 154 days, so its price bought 39% of a season.

The measurement comes from job history rather than the contract on purpose: a seasonal contract's start date is filled from the season window whatever date the customer actually signed, so the contract cannot tell you when service began.

SituationWith the option offWith the option on
First visit on the season openerCarried price, plus the increaseSame — nothing to correct
First visit in AugustCarried price, plus the increaseGrossed up to a full season, then the increase
Contract ended in JulyCarried price, plus the increaseGrossed up for the months not served
First visit in the last week of the seasonCarried price, plus the increaseUnchanged — too little of the season to extrapolate from
No jobs last seasonCarried price, plus the increaseUnchanged — no evidence either way

A cancellation looks like a late signup

If the prior contract ended before the season closed, coverage is clipped there and the price is grossed up. That is usually right, because a cancelled plan was billed for less than a season — but the review roster shows the first visit date and the coverage percentage on every affected pond so you can override anything that reads wrong.

Read the roster before you approve

The review roster is at Sales and BillingCampaigns → the campaign → Review Quotes. Start with the Last Term → This Batch tile, which reads the percent change and the dollar totals across every customer who has a prior price, then the Needs attention tile, which filters to rows flagged Up More Than 25%, Lower Than Last Term, or No Prior Price Found. Click any customer row to expand it.

Under each site's description you get that pond's season at a glance:

  • Treated 11 of 13 visits (85%) — how often the crew actually applied treatment. A pond treated on most visits is more work than one that rarely needed anything, and is worth more next season.
  • 2 escalations — how many times the pond was flagged for dispatch follow-up. A second signal that the pond is difficult.
  • First visit Aug 3 · 38% of season — shown whenever coverage was partial, whether or not the price moved.
  • Prorated: $400 → $1,026.67 for a full season, then +10% → $1,129.33 — the arithmetic, shown only on ponds the adjustment actually changed.

Rows with at least one adjusted site carry a Prorated Last Term chip without expanding, and the invoice line under the tiles counts them.

A rate with no decisions behind it

Visits logged before applicators recorded a treatment decision count as treated. On those ponds the strip reads 13 visits last season · no treatment decisions recorded instead of a percentage, so a pond nobody ever answered for is not mistaken for an easy one.

You can overwrite any price inline — type into the unit price field and tab away. The row flips to Edited, shows the built price beneath yours, and keeps your figure through approval; Reset To Built Prices puts it back. To move many rows at once, select them and use Adjust Prices… — by a percentage, a dollar amount, a set figure, or a rounding step.

Verify it worked

  • Expand two or three rows and check the treatment rates against what you remember of those ponds. If they all read 100% with no decisions recorded, your crews are not recording treatment decisions and the rate is not yet a useful signal.
  • On a pond you know signed up late, confirm the first visit date matches your records and that the coverage percentage is roughly the months served divided by the season length.
  • Compare the Ready To Send value against the same campaign with the proration option off. The difference should equal the sum of the adjustments you can see.
  • Reload the page. Every number stays the same — the roster is snapshotted when it builds, so changing your renewal increase mid-review cannot quietly reprice a batch you already approved. Rebuild the roster if you want new settings applied.

Troubleshooting

ProblemCauseFix
The increase, rounding, and proration controls are missingPrice each quote from is set to Template Prices or Rate CardSwitch to Last Season's Price Per Site. There is nothing to raise or de-prorate about a template or rate card price.
Work Type Default (None Set)No renewal increase under PricingSet one there, or pick A Percentage For This Campaign
No treatment rates anywhere on the rosterNo completed jobs in the season before the campaign's SeasonCheck the Season on the campaign and the season window for the work type.
A price moved but shows no arithmeticThe pond was under the 5% coverage floor, or has no prior per-site priceOnly the renewal increase applied. Expand the row to confirm.
Everything reads Already quoted for this seasonA quote of this work type already exists for that seasonUse Include Anyway on individual rows, or change the campaign's Season.
A price is right but the customer should not get a quote—Use Exclude on the row, or select several and Exclude.

Frequently asked questions

Can I raise this batch by a different amount than the work type's renewal increase?

Yes. Under Renewal increase pick A Percentage For This Campaign or A Dollar Amount Per Site. Only this batch uses it; the figure under Sales and Billing → Pricing is untouched.

Why did one site's price jump more than the renewal increase?

Its price was grossed up for a partial season first, or rounding moved it. Expand the row on the roster — the site shows its first visit date, what share of the season that covered, and the arithmetic. Turn off Adjust For A Partial Prior Season and rebuild if you would rather carry the figure as-is.

What does Round Each Price do to a $2 line?

Rounding never turns a real price into $0. A price below half the step rounds up to the step, so $2 rounded to the nearest $5 becomes $5.

A pond shows 100% treated but we know we skipped it sometimes.

Check whether the strip says "no treatment decisions recorded". Visits logged before applicators recorded a treatment decision count as treated, so the rate is an assumption on those ponds, not an observation. Skipped days are excluded from the count entirely.

I copied last year's campaign and the proration option came back unchecked.

That is deliberate. A copied campaign reproduces what the original sent, including its increase and rounding. Tick the box yourself if you want the adjustment on this run.

The treatment rate is blank for a pond we definitely serviced.

The roster reads the season before the campaign's Season, using the work type's season window. If the pond's jobs fall outside that window, or its last contract is older than one season, there is no history to show.

Can the customer see the treatment rate on their quote?

No. Those numbers live on the review roster only and are never copied onto the quote or the emailed customer copy.

Related guides