Services & Pricing
The service catalog, bulk catalog price changes, and Price Adjustment runs — which prices seed new work and which ones actually bill.
On this page
Where it is
CRM → Services, titled Services & Pricing. It has up to four tabs: Service Catalog (your list of services), Equipment (machine cost rates for estimates), Price Adjustments (re-pricing existing client work), and Adjustment History (every run, with an undo). The last two only show for logins allowed to adjust prices.
Where a price actually lives
This is the one thing worth understanding before you change any price in bulk. A price isn't stored in a single place — it's copied down as work is created, so each client keeps the price they were actually sold at.
| Price | Where you edit it | What it does |
|---|---|---|
| Service catalog rate | CRM → Services → Service Catalog | The default rate on a service. Used to fill in a price when that service is added to a new estimate, invoice or package. Changing it never touches work that already exists. |
| Rate matrix tiers | A service's Rate Matrix tab | Tiered pricing by a measured value (e.g. turf square footage). For a matrix-priced service this — not the default rate — is the real catalog price. |
| Client job service rate | A job's Services tab | The price this client agreed to for this service on this job. This is what actually gets billed when a visit is completed. |
| Package monthly amount | CRM → Packages | The fixed monthly installment for a bundled program. Billed on its own schedule. |
| Per-visit rate | A visit's detail sheet | A one-off override for a single visit. Set deliberately, so nothing bulk ever overwrites it. |
Rate Matrix — pricing by a measured value
Open a service and use its Rate Matrix tab to price by a number on the property, such as Turf Sq. Ft. Pick the lookup field, then add rows. Each row has a From and To range, a calc type (Per Unit or Fixed), a rate, budgeted hours and cost. Edits to a row save when you click out of the field.
Which fields can be the lookup. The built-in measurements (Turf, Mulch Bed, Gross, Linear Ft. Perimeter, Linear Ft. Edging, Yards of Mulch, Parking Lot / Hardscape) and any Number field you create under Settings → Custom Client Fields. Number fields appear in the list automatically, with the same name. The value comes from the property when the property has one, otherwise from the client, so you can enter it once on the client and override it on a particular property. With no property on the estimate, the client’s value is used. Text fields can’t be used.
Copy to other services. Click Copy to other services… under the table, tick the services, and click Copy to N services. The rows, the lookup field and the overflow rule are copied to each ticked service, and any matrix a target already has is replaced. Use it to set up one step of a package and copy it to the rest.
Overflow rule. Instead of adding a row for every size, set Every [Y] over [X] is $[R] more and [H] more time with an additional cost of $[C]. When a property’s value is at or above X, the estimate starts from the last row and adds one increment of rate, hours and cost for each full Y, counting the first interval. For example, with over = 26,000 and every = 1,000, a 26,000 to 26,999 property is the last row plus one increment and a 27,000 to 27,999 property is plus two. The overflow rule takes priority over a Tail row. It is saved with Save Changes.
Equipment costs
The Equipment tab holds the machines you want to count against an estimate: a skid steer, an aerator, a truck day. Each one has a Name, an optional Description, a Cost rate (what the machine costs you), an optional Charge rate (what you bill for it, if you mark it up), and a Unit: per hour, per day, or flat. Leave the charge blank for no markup, in which case charge equals cost. The list shows the margin of charge over cost.
On an estimate, expand a line and choose + Add Equipment. Set the quantity and rate on each row; quantity times rate counts as internal cost and lowers that line's margin. The line's footer shows equipment cost, the charge (your line price should cover it) and the margin after equipment. Equipment is internal only: it never appears on the proposal, the PDF, the client portal or the invoice, and it doesn't change the line's price. Name, unit and rate are copied onto the line when you add it, so later edits to the catalog don't change estimates you already priced. Duplicating an estimate copies its equipment rows.
To pre-fill machines on every new line of a service, open that service and use its Equipment tab to set default equipment and a default quantity. The quantity can still be changed per estimate. (This is separate from the "Equipment to bring" list on a job, which is about the assets a crew takes to the site.)
Bulk Prices — changing the catalog
On the Service Catalog tab, Bulk Prices opens an editable grid of every service currently listed. Type a new rate on any row, or use Quick Adjust to move them all at once.
- Percent or flat. Percent takes a whole number (5 for +5%, -3 for -3%); flat takes dollars (2.50, or -1).
- Round to — exact cent, nearest $0.25, nearest $1, or nearest $5. Nobody quotes $47.83 for a mow.
- Rate-matrix tiers are included by default and shown indented under their service, along with the overflow rate. Leave this on for a general increase — a matrix-priced service's real price is in its tiers, so adjusting only the default rate column would leave it quoting last year's numbers.
- Quick Adjust acts on whatever matches the search box, so you can raise just mowing without touching everything else.
Changed rows are highlighted with their previous value beside them, and the footer counts what you've modified. Nothing is written until you click Save Changes; Reset puts every row back.
Price Adjustments — re-pricing live work
The Price Adjustments tab is the tool for an actual price increase: it changes what clients get billed going forward. Every run follows the same three steps — describe the change, preview it, then apply. The preview and the totals are quantity-weighted: a visit bills the rate times its quantity, so the change shown is the real per-visit difference, not just the per-unit rate change. A percentage of -100% or lower (which would price everything at $0) and an absurdly large amount are rejected rather than previewed.
- Adjustment — percent or flat, plus a rounding rule, exactly as in Bulk Prices.
- Apply to — any combination of client job service rates, package monthly amounts, and package service rates.
- Limit to — optionally narrow by service and by job type (recurring, one-time, package, snow, project, waiting list). Leave both empty to cover everything the targets above reach.
- Preview changes — a line-by-line before/after for every price that would move, with the total change and a count of rows matched but left alone.
- Tick the lines you actually want — see below. Everything starts ticked.
- Name the run and apply. A name is required, because that's what you'll look for later if you need to undo it.
Leaving a customer out
A price increase rarely covers everyone — one account is on a promised rate, another was just re-quoted. Every line in the preview has a checkbox, ticked by default. Untick a line and it's struck through, badged excluded, and dropped from the selected count and the total, which update as you go. You don't need a separate, narrower run to skip a few accounts.
To leave out a whole client or service at once, type their name into Search these lines — the buttons become Include shown and Exclude shown, acting only on what the search is currently showing. Exclude them, then clear the search to see the full list again with those lines unticked. The checkbox in the table header does the same for everything currently visible.
Job service rates are shown per client and job ("Ralph Fusaro · Lawn Mowing (Job #14)"), so you can scan exactly who is affected before committing. The summary breaks the total down per target, because a job service rate is per billing period while a package amount is per month — one combined figure would be misleading.
If you change the form after previewing, the preview disappears — along with your ticks and the Apply button — so you can never apply numbers you didn't actually look at. Rows created after you previewed are never swept in, because a run only ever touches lines you ticked. And if one of those lines was re-priced by someone else in the meantime, it's skipped rather than increased from a figure you never saw; the toast tells you how many.
Undoing a run
Adjustment History lists every run — what it changed, how many lines, the total, when, and by how much. The undo arrow restores each line's original price.
A reverted run stays in the history as a record and can't be undone twice.
Permissions
Two separate permissions, both off by default for non-admin roles (admins always have both), under Scheduling → Service Access in Roles:
- Bulk Update Catalog Prices — shows the Bulk Prices button on the Service Catalog tab.
- Run Price Adjustments — shows the Price Adjustments and Adjustment History tabs. Enforced in the database itself, not just hidden in the UI: applying or reverting a run re-checks this permission at the point the prices are written, so a user without it cannot re-price anything by any route.
Good to know
- Deleting a service. Deleting a service in Settings asks first and says how many open jobs use it.
- Production rate sets the budget method. Adding a production rate to a service in Settings switches it to budgeting by production rate, the same as adding a new service with one.
- Copying a rate matrix. Copy to other services needs the Edit Service permission. It adds the copied rows before removing the target's old ones, so a failure never leaves a service with no matrix, and it reports which services couldn't be copied.
- Blank matrix cells. Clearing a From or Hours cell in the rate matrix saves 0.