Field Operations Industry, chapter 16 of 26
Pricing & Sales Rules
Pricing recurring service: initial and recurring prices, brochure and floor, rep discounts, rules as data with scopes, guardrails, pilots and contract value.
A recurring service has a price with more moving parts than it first appears. There's a one-time charge for the first visit and a recurring charge after it; the recurring charge can be billed per visit, monthly, quarterly or yearly; the agreement runs for a term; add-ons change both numbers; and in a sales-led business the rep in the driveway negotiates inside a range. Then leadership wants a summer promotion in one market, a pilot of a new plan in another, a lower floor for its best reps and a cap on how much of the cheap plan anyone sells. A price is the output of a policy, and the policy changes weekly. This chapter is about representing that policy as data the business can change, with guardrails it can't break.
The Shape of a Price#
Every plan in this industry has two prices:
- Initial. The first visit is the expensive one: an inspection, an interior and exterior treatment, a cleanout, an installation. It takes longer and uses more material than a recurring visit, and it's priced to match.
- Recurring. Each visit after that, or the equivalent per month.
The initial price is also the main negotiating lever at the door. A rep who can't move the recurring price can often discount the initial one to close, because the company recovers it over the term. That's why both prices need their own floor (below), and why "free initial service" promotions are common and dangerous: the cost of the initial visit is real, and an agreement that cancels after it is a loss.
Around those two numbers:
| Dimension | Typical values | What it changes |
|---|---|---|
| Plan | Basic, mid-tier, premium; one-time; specialty (termite, mosquito) | Which services, how often, which pests or systems |
| Add-ons | Specialty pests, rodents, extra areas, an extra system | Extra initial and recurring amounts, each with its own floor |
| Billing frequency | Per service, monthly, quarterly, yearly, every four weeks | How the recurring price is expressed and collected; see Billing Recurring Service |
| Term | 12, 18, 24, 36 months, or single service | Contract value, cancellation terms, and which contract template applies |
| Service interval | Every 30, 45, 60, 90 days; seasonal | How many visits the recurring price buys; see Recurring Schedules |
Billing frequency and service interval are different things, and conflating them is a classic mistake. A quarterly service can be billed monthly; a monthly service can be billed per visit. The price grid is plan × billing frequency, because the monthly price for a quarterly service is the quarterly price divided out (plus whatever premium the business charges for spreading it). Keep the service interval on the plan, not on the price.
Store every price in minor units with its currency, as in Money, and snapshot the full price onto the agreement when it's signed. Changing the catalog must never change what an existing customer agreed to pay.
Brochure, Floor and the Rep's Range#
A sales-led price is a range, not a number:
- Brochure price. What the plan costs on paper, the price the rep presents first.
- Floor price. The lowest price the rep may sell at without approval.
- Rep discount. What the rep actually gave, as an amount or a percentage, between the two.
Each plan has a brochure and floor for the initial price and for the recurring price, per billing frequency. A rep in the driveway sees the brochure price, can lower it to the floor, and can't go further. The agreement records all three (brochure, floor and sold price), because the gap is how the business measures discounting and how commissions are often computed.
Rounding is a policy, not an accident. If a 7% discount on $179 produces $166.47, either the system rounds to a price point the business likes ($165 or $169) or it shows cents a customer will question. Define the rounding rule with the discount, and apply it before the floor check, so rounding can't take a price below the floor.
Rules as Data#
The policy around those prices changes constantly: a promotion here, a pilot there, a floor for one team, an add-on unavailable in one state. If every change is a code change, the sales operations team is waiting on engineering for every campaign, and the code fills with dated if statements nobody dares delete. Represent the policy as rules: rows with conditions and actions, versioned, with effective dates, evaluated by an engine.
Split the rules by what they decide:
- Catalog rules decide which plans and add-ons exist for this sale: a mosquito add-on only in some markets, a one-time plan only through some channels, a termite plan only where the company is licensed for it.
- Eligibility rules decide whether this customer can buy this plan: not a renter for a long term, not a commercial property on a residential plan, not an address outside every serviceable area.
- Pricing rules adjust the brochure and floor prices for this sale.
Scopes and Specificity
Each rule has a scope, from broadest to narrowest:
- Plan: the default for everyone.
- Channel: door-to-door, inside sales, the customer portal, the call center, a technician upselling on site.
- Territory: a market.
- Team.
- Rep.
- Performance: reps who meet a condition (below).
The narrowest matching scope wins by default, which matches how people think about it: the plan's price applies unless the market has its own, unless the team has its own. But not every rule should replace the one above it, so each rule also declares how it stacks:
- Replace: this rule's value supersedes broader ones (a territory's own floor).
- Additive: this rule's adjustment combines with broader ones (a summer promotion of $20 off, on top of the market's price).
- Stop: no narrower rule may change this (a regulatory or contractual constraint).
Guardrails
Rules written by different people, at different times, for different reasons, will eventually combine into nonsense: a promotion stacked on a team discount stacked on a territory floor produces a floor above the brochure price, or a negative recurring price. Guardrails run after every rule has applied and enforce invariants no rule can override:
- The floor is at or below the brochure price.
- Neither is negative.
- The total discount from the plan's base price is within a cap.
- Rounding produces an allowed price point.
A guardrail that fires should clamp and log, not fail the sale: the rep in the driveway can't fix a rule conflict, and the customer is waiting. The log goes to whoever owns the rules, with the rules that produced the conflict.
Explaining a Price
Every resolved price should come with its explanation: which rules matched, in what order, what each changed, and which guardrails fired. Store it with the agreement. When a customer calls about a price, when a rep says the app gave them the wrong floor, or when finance asks why a market's average price dropped, the answer is a lookup, not an investigation. It also makes the engine testable: a rule change can be run against last week's sales to show which prices it would have changed before it ships.
Performance-Gated Discounting#
The floor is a privilege, not a right. A rep who discounts every sale to the floor sells agreements worth less, and the business pays the same commission for less revenue. A common control is to gate floor discounts on performance: a rep qualifies for the floor only while their average contract value (below) is at or above a target. Below the target, the rep's effective floor is raised (or the floor disappears) until their average recovers.
This is a performance-scoped rule, and it needs a rep performance context at evaluation time: the rep's average contract value this season, their sales count, their rescission rate. Compute it from events (see Door-to-Door Sales for the stats), cache it per rep, and record the values used with each priced agreement. A rep who's told "you lost floor pricing" will ask why, and the answer has to be the number the engine actually saw.
Plan Mix Caps#
The cheapest plan converts best, so left alone, reps sell it. A plan mix cap limits the share of a rep's sales that can be on a given plan: for example, no more than a set percentage on the basic plan. The cap needs a threshold before it applies, because a rep's first few sales are too few to measure a percentage (one basic sale out of one is 100%). Below the threshold the plan is available; above it, the plan is offered only while the rep's mix is under the cap. Show the rep their current mix, so the plan disappearing from their menu isn't a surprise.
Pilots#
New plans, prices and contract terms are tested before they're rolled out. A pilot is a named set of rules (and sometimes a different contract template) applied to a slice of the business: one territory, a few teams, a random half of the reps. Treat it like a feature flag with a business owner: a start date, an end date, a defined population, and a comparison against the control. The pricing engine and the contract template selection (see Signing the Agreement) both read the pilot assignment, so a rep in a pilot sells the pilot's prices on the pilot's paper.
Assign pilots by stable keys (territory, team, rep), never randomly per sale. A rep who sees two different prices for the same plan on two consecutive doors will rightly stop trusting the app.
Contract Value#
Recurring revenue businesses measure sales by what they'll be worth, not what they collect today. Two figures are standard:
- Contract value: the initial price, plus the recurring price multiplied by the number of billing periods in the term, plus any one-time extras.
- First-year value: the same, capped at twelve months of recurring revenue (the initial price plus eleven more months, for a monthly plan where the initial visit counts as the first).
Compute both at signing, from the snapshot, and store them. They feed rep stats, performance gates, commissions and forecasting. Define the formula once, in one place, with tests: per-service and quarterly plans need their period counts derived from the service interval and term, and every report that reimplements the arithmetic will get one of them wrong.
Contract value is a promise, not revenue. An agreement that's rescinded or cancels after the initial visit realizes a fraction of it, which is why commissions built on contract value need clawbacks, and why finance reports realized revenue separately.
Upgrades and Upsells#
Selling doesn't stop after the first agreement. A technician on site, a call-center agent or the customer in the portal can:
- Upgrade: move to a higher plan. The new price must exceed the old by at least a minimum, or "upgrades" become disguised discounts. The upgrade usually creates a new agreement linked to the original, preserving the original's billing anchor and history.
- Upsell: add an add-on to the existing plan.
Both go through the same pricing engine, with the channel set to whoever is selling, and both carry their own commission or bonus rules. Upgrade paths (which plans can move to which) are data, like everything else here.
Coupons and Promotions#
Marketing discounts are different from rep discounts: they're decided before the sale, often advertised, and redeemed by code. Billing platforms distinguish the two pieces. In Stripe's model, a coupon defines the discount (an amount or percentage, and a duration: once, for a set number of months, or forever), and a promotion code is the customer-facing string that maps to a coupon, with its own restrictions (one customer, first-time orders, minimum amount, expiry, redemption limits).
In a field-service business, add:
- Where it applies. On the initial invoice, on recurring invoices, or both. "First month free" and "$50 off your first service" are different coupons with very different costs.
- Who may apply it. Role-gated: a rep may apply the summer promotion, only a manager may apply a service-recovery credit.
- Reservation. Reserve a limited coupon to an agreement when it's offered, and redeem it when the agreement completes, so a limited promotion isn't oversubscribed by agreements that never sign.
- Interaction with the floor. Decide whether a coupon can take a price below the rep's floor (usually yes for company-funded promotions, never for rep discounts) and encode it as a guardrail.
What This Means for the System You Build#
- Initial and recurring prices, each with brochure and floor, per plan and billing frequency, in minor units.
- Billing frequency separate from service interval.
- A snapshot of every price and its inputs on the agreement, plus brochure, floor, sold price and discount.
- Catalog, eligibility and pricing rules as versioned data with scopes, stacking modes and effective dates.
- Guardrails after every rule, clamping and logging rather than failing a sale.
- A stored explanation of every resolved price, and the ability to replay a rule change against past sales.
- A rep performance context for floor gates and plan mix caps, recorded with each sale.
- Pilots assigned by stable keys, reaching both prices and contract templates.
- Contract value and first-year value defined once, computed at signing.
- Coupons with scope, permissions and reservations, separate from rep discounts.
References#
Reference
- Stripe: Coupons and promotion codes, coupons as discount definitions with once, repeating or forever durations, and promotion codes with customer, first-order, minimum, expiry and redemption restrictions